desktop-packages team mailing list archive
-
desktop-packages team
-
Mailing list archive
-
Message #73549
[Bug 1209008] Re: X fails to detect certain video cards on non-seat0 seats
** Description changed:
- From <https://bugs.freedesktop.org/show_bug.cgi?id=66851>:
+ [Impact]
- > I have a multiseat setup with a primary on-board Intel graphics
- > device and a secondary Silicon Motion SM501 graphics card. My SM501
- > is configured via custom xorg.conf with siliconmotion ddx driver, so
- > it exposes no framebuffer devices to e.g. systemd-logind. The same
- > situation is seen e.g. for a NVIDIA graphics card with proprietary
- > drivers.
- >
- > Every time I configure my system to assign my SM501 card with a
- > secondary seat, i.e. not seat0, my X server fails to start,
- > returning a "No devices detected" error. Nevertheless, when I assign
- > my SM501 card with seat0 and attach my Intel graphics device to
- > secondary seat (via loginctl), both seats load successfully.
- >
- > Investigating the Xorg-server sources, I've found something related
- > to "platform bus". I don't know what is it at all, but whatever it
- > means, my Intel graphics card with its open-source drivers implement
- > it, but my siliconmotion driver doesn't.
- >
- > In its current form, Xorg-server probes for platform bus devices as
- > well as "legacy" PCI bus ones only for seat0. For other seats, it
- > only probes for platform bus devices, hence it never reaches my
- > SM501 card, returning that "No devices found" error.
- >
- > I don't know if there's a good reason for probing only platform bus
- > devices on non-seat0 seats, but this brings a problem for multiseat
- > setups like mine.
+ * In Xorg-server versions older than 1.16, if Xorg is started as a non-
+ seat0 X server (i.e. if it was started with "-seat XXXX" option where
+ "XXXX" != "seat0"), it only probes platform bus for graphics devices,
+ leaving devices with non-KMS drivers (like NVIDIA proprietary drivers
+ and old ones like xf86-video-siliconmotion) unreachable.
- This same problem was encoutered by a user with two NVIDIA cards; see
- bug #976124.
+ Patch "xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch" from
+ lp:~ubuntu-multiseat/xorg-server/trusty-matchseat fixes this.
- A patch was supplied to the upstream bug report, and this patch seems to
- fix the problem.
+ * systemd-logind has no intrinsic mechanism to assign non-KMS graphics
+ devices to seats. In this case, one should tag another seat device
+ (keyboard, USB hub, etc.) in udev as "master-of-seat", and provide a
+ suitable xorg.conf for that seat. In order to avoid that a given
+ xorg.conf affects other seats, it should be passed to Xorg via "-config
+ xorg.conf.custom" option, which requires X server command line
+ customization support in DM in use (GDM, for example, has no such
+ support).
- Note that this bug only affects detection of cards when X is passed the
- '-seat' argument with a seat name OTHER than "seat0". Thus, this only
- happens in multiseat setups.
+ Patch "xfree86_add_matchseat_key_to_xorg_conf.patch" from lp:~ubuntu-
+ multiseat/xorg-server/trusty-matchseat introduces a new MatchSeat key
+ for xorg.conf sections "Device", "Screen", and "ServerLayout", which
+ will target a given seat only. Example file
+ /etc/X11/xorg.conf.d/90-seat-1.conf:
+
+ Section "Device"
+ Identifier "card0"
+ Driver "nvidia"
+ Option "NoLogo" "True"
+ # This section will only apply for seat-1
+ MatchSeat "seat-1"
+ EndSection
+
+ * systemd-logind can't handle any VT switching for non-seat0 seats, but
+ Xorg-server older than 1.16 still opens VT even if it's started as a
+ non-seat0 X server. This may lead to a race condition between X servers:
+ if a non-seat0 one is started before a seat0 one, the former "steals"
+ VTs from the later. If a seat0 X server can't open VTs, systemd-logind
+ can't activate sessions for seat0, leaving user without sound or usb
+ input support, for example.
+
+ Patch "xfree86_keep_non_seat0_from_touching_vts.patch" from lp:~ubuntu-
+ multiseat/xorg-server/trusty-matchseat fixes this.
+
+ [Test Case]
+
+ * Set up a multiseat system where your non-seat0 seats use non-KMS video
+ drivers (you may need to tag another device in udev as "master-of-seat"
+ in order to achieve it).
+
+ * When LightDM/GDM tries to start a Xorg server for your non-seat0
+ seats, it will end up with the following error: "(EE) No devices found".
+
+ * After applying
+ xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch, you can
+ configure your seats in LightDM by setting appropriate "xserver-config"
+ properties for each seat. However, you can't configure them in GDM.
+
+ * After applying xfree86_add_matchseat_key_to_xorg_conf.patch, configure
+ your seats properly and restart LightDM/GDM services (or reboot your
+ computer) repeatedly. In some iterations, it may happen that logind
+ can't activate graphical sessions for seat0. If it occurs, check output
+ of command "ps -FC Xorg" and you'll see that a non-seat0 Xorg server has
+ a lower PID than seat0 one. Moreover, the non-seat0 has opened a TTY,
+ while the seat0 hasn't.
+
+ [Regression Potential]
+
+ * Very low. All these patches were well tested in xorg-server "trusty"
+ package available in ppa:ubuntu-multiseat/ppa.
** Summary changed:
- X fails to detect certain video cards on non-seat0 seats
+ [SRU] X doesn't work for video cards with non-KMS drivers on non-seat0 seats
--
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to xorg-server in Ubuntu.
https://bugs.launchpad.net/bugs/1209008
Title:
[SRU] X doesn't work for video cards with non-KMS drivers on non-seat0
seats
Status in X.Org X server:
Fix Released
Status in “xorg-server” package in Ubuntu:
Fix Released
Status in “xorg-server” source package in Trusty:
In Progress
Status in Fedora:
Unknown
Bug description:
[Impact]
* In Xorg-server versions older than 1.16, if Xorg is started as a
non-seat0 X server (i.e. if it was started with "-seat XXXX" option
where "XXXX" != "seat0"), it only probes platform bus for graphics
devices, leaving devices with non-KMS drivers (like NVIDIA proprietary
drivers and old ones like xf86-video-siliconmotion) unreachable.
Patch "xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch"
from lp:~ubuntu-multiseat/xorg-server/trusty-matchseat fixes this.
* systemd-logind has no intrinsic mechanism to assign non-KMS graphics
devices to seats. In this case, one should tag another seat device
(keyboard, USB hub, etc.) in udev as "master-of-seat", and provide a
suitable xorg.conf for that seat. In order to avoid that a given
xorg.conf affects other seats, it should be passed to Xorg via
"-config xorg.conf.custom" option, which requires X server command
line customization support in DM in use (GDM, for example, has no such
support).
Patch "xfree86_add_matchseat_key_to_xorg_conf.patch" from lp:~ubuntu-
multiseat/xorg-server/trusty-matchseat introduces a new MatchSeat key
for xorg.conf sections "Device", "Screen", and "ServerLayout", which
will target a given seat only. Example file
/etc/X11/xorg.conf.d/90-seat-1.conf:
Section "Device"
Identifier "card0"
Driver "nvidia"
Option "NoLogo" "True"
# This section will only apply for seat-1
MatchSeat "seat-1"
EndSection
* systemd-logind can't handle any VT switching for non-seat0 seats,
but Xorg-server older than 1.16 still opens VT even if it's started as
a non-seat0 X server. This may lead to a race condition between X
servers: if a non-seat0 one is started before a seat0 one, the former
"steals" VTs from the later. If a seat0 X server can't open VTs,
systemd-logind can't activate sessions for seat0, leaving user without
sound or usb input support, for example.
Patch "xfree86_keep_non_seat0_from_touching_vts.patch" from lp
:~ubuntu-multiseat/xorg-server/trusty-matchseat fixes this.
[Test Case]
* Set up a multiseat system where your non-seat0 seats use non-KMS
video drivers (you may need to tag another device in udev as "master-
of-seat" in order to achieve it).
* When LightDM/GDM tries to start a Xorg server for your non-seat0
seats, it will end up with the following error: "(EE) No devices
found".
* After applying
xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch, you can
configure your seats in LightDM by setting appropriate "xserver-
config" properties for each seat. However, you can't configure them in
GDM.
* After applying xfree86_add_matchseat_key_to_xorg_conf.patch,
configure your seats properly and restart LightDM/GDM services (or
reboot your computer) repeatedly. In some iterations, it may happen
that logind can't activate graphical sessions for seat0. If it occurs,
check output of command "ps -FC Xorg" and you'll see that a non-seat0
Xorg server has a lower PID than seat0 one. Moreover, the non-seat0
has opened a TTY, while the seat0 hasn't.
[Regression Potential]
* Very low. All these patches were well tested in xorg-server "trusty"
package available in ppa:ubuntu-multiseat/ppa.
To manage notifications about this bug go to:
https://bugs.launchpad.net/xorg-server/+bug/1209008/+subscriptions