summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-09-20terminal: fix mode sync for connectorsDavid Herrmann
The GETXY ioctls of DRM are usually called twice by libdrm: Once to retrieve the number of objects, a second time with suitably sized buffers to actually retrieve all objects. In grdrm, we avoid these excessive calls and instead just call ioctls with cached buffers and resize them if they were too small. However, connectors need to read the mode list via EDID, which is horribly slow. As the kernel still cannot do that asynchronously (seriously, we need to fix this!), it has a hack to only do it if count_modes==0. This is fine with libdrm, as it calls every ioctl twice, anyway. However, we fail horribly with this as we usually never pass 0. Fix this by calling into GETCONNECTOR ioctls twice in case we received an hotplug event. Only in those cases, we need to re-read modes, so this should be totally fine.
2014-09-20terminal: restructure some logging calls in grdrmDavid Herrmann
Multiple issues here: 1) Don't print excessive card dumps on each resync. Disable it and make developers add it themselves. 2) Ignore EINVAL on page-flips. Some cards don't support page-flips, so we'd print it on each frame. Maybe, at some point, the kernel will add support to retrieve capabilities for that. Until then, simply ignore it. 3) Replace the now dropped card-dump with a short message about resyncing the card.
2014-09-20terminal: grdev: schedule virtual frame events if hw doesn't support itDavid Herrmann
Whenever we cannot use hardware frame events, we now schedule a virtual frame event to make sure applications don't have to do this. Usually, applications render only on data changes, but we can further reduce render-time by also limiting rendering to vsyncs.
2014-09-20terminal: grdev: raise frame event after DISPLAY_ADD/CHANGEDavid Herrmann
Whenever a display is added or changed, we suppressed any frame events. Make sure to raise them manually so we can avoid rendering when handling anything but FRAME events.
2014-09-20terminal: split grdrm_crtc_commit() apartDavid Herrmann
This helper is quite huge, split it apart to make it easier to follow.
2014-09-20terminal: grdev: refresh device state on hotplug eventsDavid Herrmann
Whenever we get udev hotplug events, re-read the device state so we properly detect any changed in the display setups.
2014-09-20terminal: grdev: treat udev-devices without devnum as hotplugDavid Herrmann
If we get udev-device events via sysview, but they lack devnum annotations, we know it cannot be a DRM card. Look through it's parents and treat it as hotplug event in case we find such a card. This will treat any new/removed connectors as sub-devices of the real card, instead of as devices on its own.
2014-09-20terminal: modeset: forward DEVICE_CHANGE events into grdevDavid Herrmann
Properly forward DEVICE_CHANGE events into grdev so we can react to changing display setups.
2014-09-20terminal: reduce speed of morphing colors in modeset testDavid Herrmann
The high frequency of the color-morphing is kinda irritating. Reduce it to a much lower frequency so you can actually look at it longer than few seconds.
2014-09-20terminal: make drm-connectors first-level devicesDavid Herrmann
So far, we only forward DRM cards via sysview APIs. However, with MST, connectors can be hotplugged, too. Forward the connectors as first-level devices via sysview so API users can react to changing DRM connectors.
2014-09-20terminal: forward DEVICE_CHANGE events via sysviewDavid Herrmann
Whe need to react to "change" events on devices, but we want to avoid duplicating udev-monitors everywhere. Therefore, make sysview forward change events to the sysview controllers, which can then properly react to it.
2014-09-20terminal: parse ID_SEAT not only for parents but the device itselfDavid Herrmann
When deciding what seat a device is on, we have to traverse all parents to find one with an ID_SEAT tag, otherwise, input devices plugged on a seated USB-hub are not automatically attached to the right seat. But any tags on the main device still overwrite the tags of the childs, so fix our logic to check the device itself first, before traversing the parents.
2014-09-19nspawn: don't try to create veth link with too long ifnameTom Gundersen
Reported by: James Lott <james@lottspot.com>
2014-09-19terminal: add systemd-modeset debugging toolDavid Herrmann
The systemd-modeset tool is meant to debug grdev issues. It simply displays morphing colors on any found display. This is pretty handy to look for tearing in the backends and debug hotplug issues. Note that this tool requires systemd-logind to be compiled from git (there're important fixes that haven't been released, yet).
2014-09-19terminal: add grdev DRM backendDavid Herrmann
The grdev-drm backend manages DRM cards for grdev. Any DRM card with DUMB_BUFFER support can be used. So far, our policy is to configure all available connectors, but keep pipes inactive as long as users don't enable the displays on top. We hard-code double-buffering so far, but can easily support single-buffering or n-buffering. We also require XRGB8888 as format as this is required to be supported by all DRM drivers and it is what VTs use. This allows us to switch from VTs to grdev via page-flips instead of deep modesets. There is still a lot room for improvements in this backend, but it works smoothly so far so more enhanced features can be added later.
2014-09-19terminal: add graphics interfaceDavid Herrmann
The grdev layer provides graphics-device access via the libsystemd-terminal library. It will be used by all terminal helpers to actually access display hardware. Like idev, the grdev layer is built around session objects. On each session object you add/remove graphics devices as they appear and vanish. Any device type can be supported via specific card-backends. The exported grdev API hides any device details. Graphics devices are represented by "cards". Those are hidden in the session and any pipe-configuration is automatically applied. Out of those, we configure displays which are then exported to the API user. Displays are meant as lowest hardware entity available outside of grdev. The underlying pipe configuration is fully hidden and not accessible from the outside. The grdev tiling layer allows almost arbitrary setups out of multiple pipes, but so far we only use a small subset of this. More will follow. A grdev-display is meant to represent real connected displays/monitors. The upper level screen arrangements are user policy and not controlled by grdev. Applications are free to apply any policy they want. Real card-backends will follow in later patches.
2014-09-19login: pause devices before acknowledging VT switchesDavid Herrmann
If a session controller does not need synchronous VT switches, we allow them to pass VT control to logind, which acknowledges all VT switches unconditionally. This works fine with all sessions using the dbus API, but causes out-of-sync device use if we switch to legacy sessions that are notified via VT signals. Those are processed before logind notices the session-switch via sysfs. Therefore, leaving the old session still active for a short amount of time. This, in fact, may cause the legacy session to prepare graphics devices before the old session was deactivated, and thus, maybe causing the old session to interfer with graphics device usage. Fix this by releasing devices immediately before acknowledging VT switches. This way, sessions without VT handlers are required to support async session switching (which they do in that case, anyway).
2014-09-19socket: introduce SELinuxContextFromNet optionMichal Sekletar
This makes possible to spawn service instances triggered by socket with MLS/MCS SELinux labels which are created based on information provided by connected peer. Implementation of label_get_child_mls_label derived from xinetd. Reviewed-by: Paul Moore <pmoore@redhat.com>
2014-09-19shared: wtmp-utmp - don't clear store_wtmp in utmp_put_dead_process()Tom Gundersen
Also modernize a few other things and add comments to explain CID #1237503 and CID #1237504.
2014-09-19test: warn if we could not parse the loop count argumentThomas Hindoe Paaboel Andersen
Found by coverity. Fixes: CID#1237512
2014-09-19shared/sparse-endian.h: add missing byteswap.h includeEmil Renner Berthing
2014-09-19shared/label.h: add missing stdio.h includeEmil Renner Berthing
2014-09-19pty: include linux/ioctl.h for TIOCSIGDavid Herrmann
TIOCSIG is linux specific, so include the linux ioctl header to make sure it's defined. We currently rely on some rather non-obvious recursive includes. Make sure its always defined regardless of the system headers.
2014-09-19nss: remove dead codeThomas Hindoe Paaboel Andersen
c > 0 is already guaranteed from earlier checks. We go from ms = ALIGN(l+1) + sizeof(char*) + (c > 0 ? c : 1) * ALIGN(alen) + (c > 0 ? c+1 : 2) * sizeof(char*); to ms = ALIGN(l+1) + sizeof(char*) + c * ALIGN(alen) + (c+1) * sizeof(char*); to ms = ALIGN(l+1) + c * ALIGN(alen) + (c+2) * sizeof(char*); Found by coverity. Fixes: CID#1237570 and CID#1237610
2014-09-18timesyncd: check return of setting IP_TOSTom Gundersen
Fonud by Coverity. Fixes CID #1237534.
2014-09-18udevd: don't fail if /run/udev existsTom Gundersen
2014-09-18udev: fix typosTom Gundersen
Spotted by Andreas Henriksson.
2014-09-18udev: ctrl - log if setting SO_PASSCRED failsTom Gundersen
No functional change. Found by Coverity. Fixes CID #1237533.
2014-09-18udev: node - warn if chmod/chown failsTom Gundersen
No functional change, just log the warning. Fonud by Coverity. Fixes CID #1237544.
2014-09-18udevadm: hwdb - check return value of fseeko()Tom Gundersen
Fonud by Coverity. Fixes CID #996255.
2014-09-18udevd: check return of various functionsTom Gundersen
One reported by Coverity. Fixes CID #996252.
2014-09-18udevd: parse_argv - warn if argumens are invalidTom Gundersen
Found by Coverity. Fixes CID #1238780.
2014-09-18journal-remote: check return code of sd_event_defaultAndreas Henriksson
Handle sd_event_default returning error and bail out properly as done in every other caller of this function. Found by coverity. Fixes: CID#1238957
2014-09-18sysusers: Remove some gcc warnings about uninitialized variablesPhilippe De Swert
Gcc is spewing some warnings about uninitialized variables. Let's get rid of the noise.
2014-09-18core: Remove uninitialized warnings from bus-endpoint.cPhilippe De Swert
Gcc is spewing some warnings about uninitialized variables. Let's get rid of the noise.
2014-09-18journal-upload: Remove compilation warningPhilippe De Swert
When compiling we see this curl warning popping up: src/journal-remote/journal-upload.c:194:17: warning: call to ‘_curl_easy_setopt_err_error_buffer’ declared with attribute warning: curl_easy_setopt expects a char buffer of CURL_ERROR_SIZE as argument for this option [enabled by default] This patch removes the warning (which occurs twice).
2014-09-18mount: order options before other arguments to mountEmil Renner Berthing
2014-09-18include fcntl.h rather than sys/fcntl.hEmil Renner Berthing
2014-09-18sd-rtnl: rtnl-message: remove unneeded linux includesEmil Renner Berthing
2014-09-18udev: link-config: remove unneded linux/netdevice.h includeEmil Renner Berthing
2014-09-18journal: Do not count on the compiler initializing found_last to falsePhilippe De Swert
There is a very unlikely case where this can happen since gcc usually does the sane thing. But let's make sure found_last is initialized anyway. Fixes: CID#996386
2014-09-18man: use the escape for "-" in example instead of space.Michael Marineau
This sentence can be misread to mean that "\x20" is the escape code for "-" which is the only character explicitly mentioned. This lead to at least one user loosing hair over why a mount unit for "/foo/bar-baz" didn't work. The example escape is arbitrary so lets prevent hair loss.
2014-09-18udev: fix path for database names on 'change' eventRobert Milasan
If a device does not have a major/minor number attached, we use different database names than if it does. On "change" events, we didn't copy the devnum over, therefore, we used different paths than on 'add' or 'remove' events (where devnum was properly copied). Fix this by always copying the devnum into the udev-device. (David: added commit-log from email)
2014-09-18bus: fix bus_print_property() to use "int" for booleansDavid Herrmann
We always use "int" if we retrieve boolean values from sd-bus, as "bool" is only a single byte, but full int on va-args. Thanks to Werner Fink for the report!
2014-09-18shared: conf-parser - don't leak memory on error in DEFINE_CONFIG_PARSE_ENUMVTom Gundersen
Found by Coverity. Fixes CID #1237746.
2014-09-18libudev: monitor - warn if we fail to request SO_PASSCREDTom Gundersen
The function still succeeds, so there is no functional change. This fixes CID #996288.
2014-09-18tests: fix resource & mem leaksRonny Chevalier
2014-09-18sd-bus: sync kdbus.hDaniel Mack
(no API/ABI break this time)
2014-09-18systemctl: fix resource leak CID #1237747Cristian Rodríguez
..by simply moving the declaration of "unit" into the STRV_FOREACH loop as suggested by Andreas.
2014-09-18Fix resource leak (coverity CID 1237760)Cristian Rodríguez