This is related to another bug I filed in https://bugzilla.redhat.com/show_bug.cgi?id=868851 . After reading about loginctl, I feel that it's optimized for frame buffer devices (mainly USB ones, like that from Plugable), but is not so friendly with PCI(-e) graphics cards. Taking my hardware example (a SiliconMotion SM501 PCI card), it's only attachable by loginctl if I load a kernel module for its frame buffer (namely, sm501fb), so it can be accessible to X.Org via the generic fbdev driver. I wonder if loginctl could deal better with PCI graphics cards when creating additional seats. This is specially useful for Brazil, when we have a huge educational program based on multiseat computers following the multiple-graphics-cards model, instead of Plugable devices. Some steps for this can be very similar to Huo&Cameron patches for ConsoleKit to work with Sun Ray devices, namely: 1. A new seat could be registered with no need to attach a frame buffer device. 2. In this new seat settings, there sould be an option to pass a custom xorg.conf with the necessary configuration for the graphics card, similar to patched-CK displays.d approach. 3. [Optional] For multihead cards, there could be a way to easily launch a bare (with no Display Manager) underneath X server spanning all heads, on top of which we can launch a Xephyr instance for each head, assinging it to each seat.
systemd doesn't really care much about the used bus. All it cares about is that there is a proper kernel device for the device, exposing an DRM/fb interface, which all recent cards do. It appears to me that the driver for the chip you are using needs updating so that it is automatically loaded when necessary. Can you plese bring this up with the driver authors?
Well, in fact, I can make my SM501 card attachable for loginctl when I load the kernel module "sm501fb", but Xorg won't load on this card with the generic "fbdev" video driver and the automatic xorg.conf generated by systemd. This is the relevant part of my Xorg.1.log [ 6037.726] (**) FBDEV(0): claimed PCI slot 0@0:2:0 [ 6037.726] (II) FBDEV(0): using /dev/fb1 [ 6037.726] (II) FBDEV(0): Creating default Display subsection in Screen section "Default Screen Section" for depth/fbbpp 8/8 [ 6037.726] (==) FBDEV(0): Depth 8, (==) framebuffer bpp 8 [ 6037.726] (==) FBDEV(0): Default visual is PseudoColor [ 6037.726] (==) FBDEV(0): Using gamma correction (1.0, 1.0, 1.0) [ 6037.726] (II) FBDEV(0): hardware: sm501fb-crt (video memory: 0kB) [ 6037.726] (**) FBDEV(0): Option "fbdev" "/dev/fb1" [ 6037.726] (II) FBDEV(0): checking modes against framebuffer device... [ 6037.726] (II) FBDEV(0): checking modes against monitor... [ 6037.726] (--) FBDEV(0): Virtual size is 640x400 (pitch 640) [ 6037.726] (**) FBDEV(0): Built-in mode "current": 25.2 MHz, 31.5 kHz, 69.9 Hz [ 6037.726] (II) FBDEV(0): Modeline "current"x0.0 25.18 640 664 760 800 400 409 411 450 -hsync -vsync -csync (31.5 kHz) [ 6037.726] (==) FBDEV(0): DPI set to (96, 96) [ 6037.726] (II) Loading sub module "fb" [ 6037.726] (II) LoadModule: "fb" [ 6037.726] (II) Loading /usr/lib/xorg/modules/libfb.so [ 6037.726] (II) Module fb: vendor="X.Org Foundation" [ 6037.726] compiled for 1.11.3, module version = 1.0.0 [ 6037.726] ABI class: X.Org ANSI C Emulation, version 0.4 [ 6037.726] (**) FBDEV(0): using shadow framebuffer [ 6037.726] (II) Loading sub module "shadow" [ 6037.726] (II) LoadModule: "shadow" [ 6037.727] (II) Loading /usr/lib/xorg/modules/libshadow.so [ 6037.727] (II) Module shadow: vendor="X.Org Foundation" [ 6037.727] compiled for 1.11.3, module version = 1.1.0 [ 6037.727] ABI class: X.Org ANSI C Emulation, version 0.4 [ 6037.727] (EE) FBDEV(0): mmap fbmem: Invalid argument [ 6037.727] (EE) FBDEV(0): mapping of video memory failed [ 6037.727] Fatal server error: [ 6037.727] AddScreen/ScreenInit failed for driver 0 Anyway, all I need is an option to customize the Xorg command line executed for non-fully-hot-pluggable graphics devices, so I can e.g. pass a custom config file with a "Device" section properly set for my card, using the native Xorg video driver "siliconmotion", instead of "fbdev". However, it's not clear to me if this should be made in loginctl itself or in a display manager. Just for comparison: - in Huo & Cameron multiseat-optimized ConsoleKit approach, the Xorg command line can be customized just by adding a new display template file in directory /etc/ConsoleKit/displays.d, and using it when loading a new session (I really like this approach); - in LightDM, the Xorg command line can be customized in its own config file, lightdm.conf.
(In reply to comment #1) > systemd doesn't really care much about the used bus. All it cares about is > that there is a proper kernel device for the device, exposing an DRM/fb > interface, which all recent cards do. > I have two recent nvidia cards, but there are no DRM/fb interfaces for them unless I load nouveau.ko. Nouveau does not provide full 3d-acceleration I need, so I'd prefer to use Nvidia proprietary driver instead of nouveau. But nvidia does not expose drm/fb interface. Moreover nvidia driver is loaded by Xorg, but GDM needs to know about the seats before starting Xorg. My proposition is to make capability of creating seats without drm/fb-enabled devices. I've posted https://bugzilla.redhat.com/show_bug.cgi?id=878605 with two patches that have allowed me to build fully 3d-accelerated multiseat system. Could your incorporate these patches or add similar capability to systemd upstream?
Oleg Samarin, That is exactly what I need!! Thank you!! I'll try to rebuild systemd with your patches.
You may now tag any graphics device you want with "seat-master" and this should suffice to tell logind that a seat is now ready when the seat appears
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.