← Back to team overview

desktop-packages team mailing list archive

[Bug 1209008] Re: [SRU] X doesn't work for video cards with non-KMS drivers on non-seat0 seats

 

I have two discrete cards. So the difference is that your integrated
card is probably on the "platform bus", while both of my discrete cards
are PCI-E devices.

I started testing multiseat setup described in this thread only last
Saturday and since then have always been using the lightdm version which
supports automatic multiseat; in one of my posts above (where I thought
that the multiseat setup didn't work) I enclosed my full lightdm.conf;
it only consisted of logind-load-seats and logind-check-graphical.

# apt-cache policy lightdm
lightdm:
  Zainstalowana: 1.10.4-0ubuntu2 # means: Installed
  Kandydująca:   1.10.4-0ubuntu2 # means: Candidate
  Tabela wersji:
 *** 1.10.4-0ubuntu2 0
        500 http://archive.ubuntu.com/ubuntu/ trusty-proposed/main i386 Packages
        100 /var/lib/dpkg/status
     1.10.3-0ubuntu2 0
        500 http://pl.archive.ubuntu.com/ubuntu/ trusty-updates/main i386 Packages
     1.10.0-0ubuntu3 0
        500 http://pl.archive.ubuntu.com/ubuntu/ trusty/main i386 Packages

The full lightdm.conf I'm using now:
 
[LightDM]
logind-load-seats=true
logind-check-graphical=true

[SeatDefaults]
allow-guest=false

[Seat:seat-1]
xserver-command=/usr/bin/X -core -dpms -s 0

And with this setup the card assigned to seat0 in xorg.conf wakes up
correctly, but the other does not. I'm wandering which step of
restarting lightdm does the trick of waking it up fully? Because, as I
said before, the seat-1 is not completely lost after wakeup; if I
brutally restart lightdm it comes back, of course all graphical sessions
terminated and lightdm login screen displayed again at both seats.

My random guess is that the problem is in the X server. Perhaps for
waking up there is some code path which works in a similar way to what
probing used to work, that is,  it only searches for platform display
devices?

-- 
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:
  Fix Committed

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


Follow ups