[SRU] X doesn't work for video cards with non-KMS drivers on non-seat0 seats
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
X.Org X server |
Fix Released
|
Medium
|
|||
xorg-server (Ubuntu) |
Fix Released
|
Undecided
|
XxEarthxX | ||
Trusty |
Fix Released
|
Undecided
|
Laércio de Sousa |
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-
Patch "xfree86_
* 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_
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_
[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_
* After applying xfree86_
[Regression Potential]
* Very low. All these patches were well tested in xorg-server "trusty" package available in ppa:ubuntu-
Related branches
- Ubuntu branches: Pending requested
-
Diff: 127395 lines (+41074/-58511)559 files modified.dir-locals.el (+1/-0)
COPYING (+1/-0)
ChangeLog (+7713/-544)
Makefile.am (+14/-0)
Makefile.in (+17/-1)
Xext/Makefile.in (+9/-1)
Xext/panoramiX.c (+11/-14)
Xext/panoramiXsrv.h (+1/-0)
Xext/saver.c (+2/-4)
Xext/security.c (+8/-3)
Xext/shm.c (+230/-12)
Xext/shmint.h (+24/-0)
Xext/sync.c (+149/-63)
Xext/syncsrv.h (+13/-0)
Xext/xvdisp.c (+5/-16)
Xext/xvmain.c (+2/-2)
Xi/Makefile.in (+9/-1)
Xi/chgdctl.c (+6/-0)
Xi/exevents.c (+39/-20)
Xi/extinit.c (+2/-0)
Xi/grabdev.c (+1/-4)
Xi/setdval.c (+3/-0)
Xi/setmode.c (+4/-0)
Xi/xiallowev.c (+1/-1)
Xi/xibarriers.c (+12/-0)
Xi/xibarriers.h (+2/-2)
Xi/xichangehierarchy.c (+4/-0)
Xi/xipassivegrab.c (+5/-1)
aclocal.m4 (+1519/-1324)
composite/Makefile.in (+9/-1)
composite/compalloc.c (+2/-2)
composite/compext.c (+6/-1)
composite/compinit.c (+5/-2)
composite/compoverlay.c (+4/-1)
config/10-quirks.conf (+54/-0)
config/Makefile.am (+2/-2)
config/Makefile.in (+11/-3)
config/hal.c (+13/-3)
config/non-seat0.conf.multi-seat (+18/-0)
config/udev.c (+15/-4)
configure (+4345/-2291)
configure.ac (+290/-88)
damageext/Makefile.in (+9/-1)
damageext/damageext.c (+353/-78)
damageext/damageextint.h (+3/-0)
dbe/Makefile.am (+1/-2)
dbe/Makefile.in (+10/-3)
dbe/dbe.c (+5/-76)
dbe/dbestruct.h (+14/-7)
dbe/midbe.c (+41/-93)
dbe/midbestr.h (+0/-75)
debian/changelog (+373/-2)
debian/compat (+1/-1)
debian/control (+56/-39)
debian/patches/02_improve-posix-saved-ids-check.diff (+0/-65)
debian/patches/02_kbsd-input-devd.diff (+551/-0)
debian/patches/04_hashtabletest-s390x.diff (+0/-27)
debian/patches/10_Include-missing-selection-h.diff (+0/-20)
debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch (+92/-30)
debian/patches/29b1484bb9555e45067669cbfe68a3c40596f4ff.patch (+44/-0)
debian/patches/aarch64.patch (+0/-39)
debian/patches/autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch (+0/-192)
debian/patches/disable-rotation-transform-gpuscreens.patch (+22/-0)
debian/patches/drm_device_keep_trying.patch (+172/-0)
debian/patches/fix-detach-gpu.patch (+89/-0)
debian/patches/fix-ftbfs-ppc64el.patch (+13/-0)
debian/patches/include-selection-h.patch (+0/-12)
debian/patches/mi-dont-process-disabled.patch (+62/-0)
debian/patches/os-use-libunwind-to-generate-backtraces.patch (+0/-206)
debian/patches/pixman-validate.patch (+27/-0)
debian/patches/ppc64el-endian-fix.patch (+34/-0)
debian/patches/rrcrtc-brackets-are-hard.patch (+42/-0)
debian/patches/series (+15/-14)
debian/patches/xephyr-glx-register.patch (+0/-39)
debian/patches/xf86-detach-scanout.patch (+0/-87)
debian/patches/xf86-ignore-conflicting-rr-caps.patch (+20/-0)
debian/patches/xi-dont-copy-too-much.patch (+67/-0)
debian/patches/xi2-resize-touch.patch (+34/-0)
debian/patches/xmir.patch (+935/-413)
debian/patches/xrandr-rroutputchanged-main.patch (+63/-0)
debian/rules (+55/-25)
debian/serverminver (+3/-3)
debian/xorg-server-source.install (+1/-0)
debian/xserver-xfbdev.install (+0/-1)
dix/Makefile.am (+2/-1)
dix/Makefile.in (+19/-9)
dix/cursor.c (+0/-6)
dix/devices.c (+38/-11)
dix/dispatch.c (+53/-70)
dix/dixfonts.c (+11/-3)
dix/dixutils.c (+7/-1)
dix/events.c (+91/-32)
dix/getevents.c (+30/-18)
dix/globals.c (+0/-1)
dix/inpututils.c (+16/-19)
dix/main.c (+7/-5)
dix/pixmap.c (+0/-1)
dix/privates.c (+0/-1)
dix/ptrveloc.c (+2/-3)
dix/region.c (+15/-0)
dix/registry.c (+17/-8)
dix/stubmain.c (+35/-0)
dix/window.c (+11/-10)
doc/Makefile.in (+9/-1)
doc/dtrace/Makefile.in (+9/-1)
dri3/Makefile.am (+13/-0)
dri3/Makefile.in (+805/-0)
dri3/dri3.c (+92/-0)
dri3/dri3.h (+65/-0)
dri3/dri3_event.c (+163/-0)
dri3/dri3_priv.h (+80/-0)
dri3/dri3_request.c (+395/-0)
dri3/dri3_screen.c (+86/-0)
dri3/dri3int.h (+26/-0)
exa/Makefile.am (+1/-5)
exa/Makefile.in (+10/-5)
exa/exa_classic.c (+0/-1)
exa/exa_migration_mixed.c (+7/-5)
exa/exa_mixed.c (+7/-6)
fb/Makefile.in (+9/-1)
fb/fb.h (+0/-34)
fb/fbcopy.c (+0/-27)
fb/fbpict.c (+2/-6)
fb/wfbrename.h (+1/-0)
glx/Makefile.am (+6/-18)
glx/Makefile.in (+19/-27)
glx/createcontext.c (+3/-1)
glx/dispatch.h (+0/-19816)
glx/extension_string.c (+7/-0)
glx/extension_string.h (+6/-0)
glx/glapi.c (+0/-504)
glx/glapi.h (+0/-135)
glx/glapi_gentable.c (+0/-10058)
glx/glapitable.h (+0/-1016)
glx/glprocs.h (+0/-3534)
glx/glthread.h (+0/-234)
glx/glxcmds.c (+162/-60)
glx/glxcmdsswap.c (+0/-4)
glx/glxcontext.h (+5/-6)
glx/glxdri.c (+0/-1168)
glx/glxdri2.c (+44/-34)
glx/glxdricommon.c (+67/-8)
glx/glxdriswrast.c (+8/-7)
glx/glxext.c (+40/-15)
glx/glxext.h (+16/-0)
glx/glxscreens.c (+7/-10)
glx/glxscreens.h (+3/-5)
glx/glxserver.h (+16/-0)
glx/indirect_dispatch.c (+1668/-2492)
glx/indirect_dispatch.h (+252/-350)
glx/indirect_dispatch_swap.c (+1958/-3081)
glx/indirect_program.c (+30/-33)
glx/indirect_reqsize.c (+35/-74)
glx/indirect_reqsize.h (+20/-33)
glx/indirect_size.h (+7/-5)
glx/indirect_size_get.c (+96/-112)
glx/indirect_size_get.h (+5/-11)
glx/indirect_table.c (+221/-247)
glx/indirect_texture_compression.c (+8/-19)
glx/indirect_util.c (+1/-6)
glx/render2.c (+37/-40)
glx/render2swap.c (+37/-40)
glx/renderpix.c (+10/-16)
glx/renderpixswap.c (+10/-16)
glx/single2.c (+7/-11)
glx/single2swap.c (+6/-10)
glx/singlepix.c (+32/-55)
glx/singlepixswap.c (+32/-56)
glx/singlesize.c (+3/-7)
glx/swap_interval.c (+0/-4)
glx/xfont.c (+11/-19)
hw/Makefile.in (+9/-1)
hw/dmx/Makefile.am (+0/-2)
hw/dmx/Makefile.in (+17/-12)
hw/dmx/config/Makefile.in (+9/-1)
hw/dmx/config/dmxcompat.c (+4/-0)
hw/dmx/config/man/Makefile.in (+9/-1)
hw/dmx/config/parser.c (+1949/-700)
hw/dmx/config/parser.h (+86/-18)
hw/dmx/dmx.h (+0/-4)
hw/dmx/dmx_glxvisuals.c (+23/-9)
hw/dmx/dmxcursor.c (+0/-2)
hw/dmx/dmxextension.c (+3/-0)
hw/dmx/dmxinit.c (+5/-11)
hw/dmx/dmxpict.c (+0/-4)
hw/dmx/dmxscrinit.c (+110/-163)
hw/dmx/dmxshadow.c (+0/-70)
hw/dmx/dmxshadow.h (+0/-46)
hw/dmx/doc/Makefile.in (+9/-1)
hw/dmx/doxygen/Makefile.in (+9/-1)
hw/dmx/examples/Makefile.in (+9/-1)
hw/dmx/glxProxy/Makefile.am (+0/-1)
hw/dmx/glxProxy/Makefile.in (+12/-7)
hw/dmx/glxProxy/glxcmds.c (+39/-21)
hw/dmx/glxProxy/glxext.c (+0/-6)
hw/dmx/glxProxy/glxscreens.c (+3/-6)
hw/dmx/glxProxy/glxserver.h (+0/-2)
hw/dmx/glxProxy/glxsingle.c (+21/-17)
hw/dmx/glxProxy/glxutil.c (+0/-37)
hw/dmx/glxProxy/glxutil.h (+0/-2)
hw/dmx/glxProxy/glxvendor.c (+20/-16)
hw/dmx/input/Makefile.in (+9/-1)
hw/dmx/input/dmxbackend.c (+1/-5)
hw/dmx/input/dmxcommon.c (+0/-5)
hw/dmx/input/dmxevents.c (+1/-2)
hw/dmx/input/usb-private.h (+2/-2)
hw/dmx/man/Makefile.in (+9/-1)
hw/dmx/man/Xdmx.man (+0/-10)
hw/kdrive/Makefile.in (+9/-1)
hw/kdrive/ephyr/Makefile.am (+41/-56)
hw/kdrive/ephyr/Makefile.in (+91/-131)
hw/kdrive/ephyr/XF86dri.c (+0/-647)
hw/kdrive/ephyr/ephyr.c (+347/-147)
hw/kdrive/ephyr/ephyr.h (+16/-4)
hw/kdrive/ephyr/ephyrdri.c (+145/-59)
hw/kdrive/ephyr/ephyrdri.h (+1/-1)
hw/kdrive/ephyr/ephyrdriext.c (+11/-21)
hw/kdrive/ephyr/ephyrglxext.c (+6/-8)
hw/kdrive/ephyr/ephyrhostglx.c (+216/-478)
hw/kdrive/ephyr/ephyrhostglx.h (+6/-5)
hw/kdrive/ephyr/ephyrhostproxy.c (+0/-91)
hw/kdrive/ephyr/ephyrhostproxy.h (+0/-51)
hw/kdrive/ephyr/ephyrhostvideo.c (+0/-975)
hw/kdrive/ephyr/ephyrhostvideo.h (+0/-231)
hw/kdrive/ephyr/ephyrinit.c (+38/-5)
hw/kdrive/ephyr/ephyrproxyext.c (+0/-115)
hw/kdrive/ephyr/ephyrproxyext.h (+0/-33)
hw/kdrive/ephyr/ephyrvideo.c (+427/-377)
hw/kdrive/ephyr/hostx.c (+530/-753)
hw/kdrive/ephyr/hostx.h (+19/-83)
hw/kdrive/ephyr/man/Makefile.in (+9/-1)
hw/kdrive/ephyr/man/Xephyr.man (+5/-1)
hw/kdrive/ephyr/os.c (+1/-1)
hw/kdrive/ephyr/xf86dri.h (+0/-124)
hw/kdrive/fake/Makefile.am (+1/-1)
hw/kdrive/fake/Makefile.in (+10/-2)
hw/kdrive/fbdev/Makefile.am (+1/-1)
hw/kdrive/fbdev/Makefile.in (+10/-2)
hw/kdrive/fbdev/fbdev.c (+140/-31)
hw/kdrive/fbdev/fbdev.h (+1/-1)
hw/kdrive/linux/Makefile.am (+1/-1)
hw/kdrive/linux/Makefile.in (+10/-2)
hw/kdrive/linux/evdev.c (+1/-1)
hw/kdrive/linux/linux.c (+1/-1)
hw/kdrive/linux/mouse.c (+3/-9)
hw/kdrive/linux/ps2.c (+1/-1)
hw/kdrive/src/Makefile.am (+1/-1)
hw/kdrive/src/Makefile.in (+10/-2)
hw/kdrive/src/kdrive.c (+7/-5)
hw/kdrive/src/kdrive.h (+11/-9)
hw/kdrive/src/kinput.c (+15/-27)
hw/kdrive/src/kxv.c (+0/-2)
hw/vfb/Makefile.in (+9/-1)
hw/vfb/man/Makefile.in (+9/-1)
hw/xfree86/Makefile.am (+24/-21)
hw/xfree86/Makefile.in (+43/-30)
hw/xfree86/common/Makefile.am (+1/-1)
hw/xfree86/common/Makefile.in (+10/-2)
hw/xfree86/common/compiler.h (+1/-1)
hw/xfree86/common/xf86.h (+0/-25)
hw/xfree86/common/xf86AutoConfig.c (+9/-8)
hw/xfree86/common/xf86Bus.c (+5/-0)
hw/xfree86/common/xf86Config.c (+2/-1)
hw/xfree86/common/xf86Configure.c (+2/-0)
hw/xfree86/common/xf86Cursor.c (+0/-3)
hw/xfree86/common/xf86DPMS.c (+8/-1)
hw/xfree86/common/xf86Events.c (+22/-10)
hw/xfree86/common/xf86Helper.c (+10/-4)
hw/xfree86/common/xf86Mode.c (+7/-10)
hw/xfree86/common/xf86Module.h (+3/-3)
hw/xfree86/common/xf86Option.c (+1/-1)
hw/xfree86/common/xf86RandR.c (+9/-7)
hw/xfree86/common/xf86fbman.c (+7/-5)
hw/xfree86/common/xf86platformBus.c (+6/-0)
hw/xfree86/common/xf86sbusBus.c (+4/-2)
hw/xfree86/common/xf86xvmc.c (+3/-1)
hw/xfree86/ddc/Makefile.am (+1/-1)
hw/xfree86/ddc/Makefile.in (+10/-2)
hw/xfree86/ddc/ddc.c (+4/-3)
hw/xfree86/ddc/xf86DDC.h (+0/-2)
hw/xfree86/dixmods/Makefile.am (+2/-2)
hw/xfree86/dixmods/Makefile.in (+14/-4)
hw/xfree86/dixmods/glxmodule.c (+0/-3)
hw/xfree86/doc/Makefile.in (+9/-1)
hw/xfree86/dri/Makefile.in (+9/-1)
hw/xfree86/dri2/Makefile.in (+9/-1)
hw/xfree86/dri2/dri2.c (+1/-18)
hw/xfree86/dri2/dri2ext.c (+5/-0)
hw/xfree86/exa/Makefile.am (+1/-1)
hw/xfree86/exa/Makefile.in (+10/-2)
hw/xfree86/exa/man/Makefile.in (+9/-1)
hw/xfree86/fbdevhw/Makefile.am (+1/-1)
hw/xfree86/fbdevhw/Makefile.in (+10/-2)
hw/xfree86/fbdevhw/fbdevhw.c (+1/-0)
hw/xfree86/fbdevhw/man/Makefile.in (+9/-1)
hw/xfree86/i2c/Makefile.am (+1/-1)
hw/xfree86/i2c/Makefile.in (+10/-2)
hw/xfree86/int10/Makefile.am (+3/-3)
hw/xfree86/int10/Makefile.in (+11/-4)
hw/xfree86/loader/Makefile.am (+1/-1)
hw/xfree86/loader/Makefile.in (+10/-2)
hw/xfree86/man/Makefile.in (+9/-1)
hw/xfree86/man/xorg.conf.man (+17/-1)
hw/xfree86/modes/Makefile.am (+2/-4)
hw/xfree86/modes/Makefile.in (+12/-6)
hw/xfree86/modes/xf86Crtc.c (+108/-4)
hw/xfree86/modes/xf86Crtc.h (+0/-3)
hw/xfree86/modes/xf86DisplayIDModes.c (+1/-0)
hw/xfree86/modes/xf86Modes.h (+3/-3)
hw/xfree86/modes/xf86RandR12.c (+19/-3)
hw/xfree86/modes/xf86RandR12.h (+0/-3)
hw/xfree86/modes/xf86Rename.h (+0/-94)
hw/xfree86/modes/xf86Rotate.c (+1/-5)
hw/xfree86/os-support/Makefile.in (+9/-1)
hw/xfree86/os-support/bsd/Makefile.am (+1/-1)
hw/xfree86/os-support/bsd/Makefile.in (+10/-2)
hw/xfree86/os-support/bus/Makefile.am (+1/-1)
hw/xfree86/os-support/bus/Makefile.in (+10/-2)
hw/xfree86/os-support/bus/Sbus.c (+6/-2)
hw/xfree86/os-support/hurd/Makefile.am (+1/-1)
hw/xfree86/os-support/hurd/Makefile.in (+10/-2)
hw/xfree86/os-support/hurd/hurd_init.c (+1/-0)
hw/xfree86/os-support/hurd/hurd_mmap.c (+1/-0)
hw/xfree86/os-support/hurd/hurd_video.c (+1/-0)
hw/xfree86/os-support/linux/Makefile.am (+1/-1)
hw/xfree86/os-support/linux/Makefile.in (+10/-2)
hw/xfree86/os-support/linux/lnx_platform.c (+10/-4)
hw/xfree86/os-support/linux/lnx_video.c (+2/-1)
hw/xfree86/os-support/misc/Makefile.am (+1/-1)
hw/xfree86/os-support/misc/Makefile.in (+10/-2)
hw/xfree86/os-support/shared/vidmem.c (+0/-13)
hw/xfree86/os-support/solaris/Makefile.am (+1/-1)
hw/xfree86/os-support/solaris/Makefile.in (+10/-2)
hw/xfree86/os-support/stub/Makefile.am (+1/-1)
hw/xfree86/os-support/stub/Makefile.in (+10/-2)
hw/xfree86/os-support/xf86OSpriv.h (+0/-2)
hw/xfree86/os-support/xf86_OSlib.h (+0/-5)
hw/xfree86/os-support/xf86_OSproc.h (+0/-2)
hw/xfree86/parser/Makefile.am (+1/-1)
hw/xfree86/parser/Makefile.in (+10/-2)
hw/xfree86/parser/write.c (+2/-1)
hw/xfree86/ramdac/Makefile.am (+1/-1)
hw/xfree86/ramdac/Makefile.in (+10/-2)
hw/xfree86/ramdac/xf86Cursor.c (+0/-1)
hw/xfree86/sdksyms.sh (+4/-0)
hw/xfree86/shadowfb/Makefile.am (+1/-1)
hw/xfree86/shadowfb/Makefile.in (+10/-2)
hw/xfree86/utils/Makefile.in (+9/-1)
hw/xfree86/utils/cvt/Makefile.am (+2/-1)
hw/xfree86/utils/cvt/Makefile.in (+11/-2)
hw/xfree86/utils/cvt/cvt.c (+1/-0)
hw/xfree86/utils/gtf/Makefile.in (+9/-1)
hw/xfree86/utils/man/Makefile.in (+9/-1)
hw/xfree86/vbe/Makefile.am (+2/-1)
hw/xfree86/vbe/Makefile.in (+11/-2)
hw/xfree86/vbe/vbe.c (+3/-15)
hw/xfree86/vgahw/Makefile.am (+1/-1)
hw/xfree86/vgahw/Makefile.in (+10/-2)
hw/xfree86/x86emu/Makefile.am (+1/-1)
hw/xfree86/x86emu/Makefile.in (+10/-2)
hw/xfree86/x86emu/decode.c (+10/-0)
hw/xfree86/x86emu/x86emu/regs.h (+9/-0)
hw/xfree86/x86emu/x86emu/x86emui.h (+11/-1)
hw/xnest/Args.h (+1/-1)
hw/xnest/GCOps.c (+13/-0)
hw/xnest/Makefile.in (+9/-1)
hw/xnest/Pixmap.c (+15/-0)
hw/xnest/Screen.c (+1/-0)
hw/xnest/XNPixmap.h (+2/-0)
hw/xnest/man/Makefile.in (+9/-1)
hw/xquartz/GL/Makefile.in (+9/-1)
hw/xquartz/GL/glcontextmodes.c (+0/-1)
hw/xquartz/GL/indirect.c (+13/-13)
hw/xquartz/GL/visualConfigs.c (+3/-3)
hw/xquartz/Makefile.am (+3/-2)
hw/xquartz/Makefile.in (+16/-8)
hw/xquartz/X11Application.m (+13/-0)
hw/xquartz/X11Controller.m (+6/-6)
hw/xquartz/applewm.c (+16/-0)
hw/xquartz/bundle/Info.plist.cpp (+4/-4)
hw/xquartz/bundle/Makefile.in (+9/-1)
hw/xquartz/darwinfb.h (+1/-1)
hw/xquartz/mach-startup/Makefile.in (+9/-1)
hw/xquartz/mach-startup/stub.c (+4/-0)
hw/xquartz/man/Makefile.in (+9/-1)
hw/xquartz/pbproxy/Makefile.in (+9/-1)
hw/xquartz/pbproxy/x-selection.m (+1/-2)
hw/xquartz/pseudoramiX.c (+0/-516)
hw/xquartz/pseudoramiX.h (+0/-10)
hw/xquartz/quartz.c (+3/-0)
hw/xquartz/xpr/Makefile.am (+1/-0)
hw/xquartz/xpr/Makefile.in (+10/-1)
hw/xquartz/xpr/appledri.c (+10/-0)
hw/xquartz/xpr/x-hook.c (+9/-24)
hw/xquartz/xpr/xprCursor.c (+0/-2)
hw/xwin/InitInput.c (+0/-1)
hw/xwin/InitOutput.c (+40/-0)
hw/xwin/Makefile.am (+7/-3)
hw/xwin/Makefile.in (+26/-13)
hw/xwin/XWin.exe.manifest (+1/-1)
hw/xwin/glx/Makefile.am (+30/-10)
hw/xwin/glx/Makefile.in (+135/-31)
hw/xwin/glx/gen_gl_wrappers.py (+483/-323)
hw/xwin/glx/glshim.c (+124/-0)
hw/xwin/glx/glthunk.c (+87/-0)
hw/xwin/glx/glwindows.h (+2/-5)
hw/xwin/glx/glwrap.c (+0/-146)
hw/xwin/glx/indirect.c (+23/-22)
hw/xwin/man/Makefile.in (+9/-1)
hw/xwin/win.h (+15/-14)
hw/xwin/winauth.c (+3/-4)
hw/xwin/winclipboard.h (+0/-4)
hw/xwin/winclipboardthread.c (+4/-12)
hw/xwin/winclipboardwndproc.c (+0/-11)
hw/xwin/winclipboardwrappers.c (+0/-2)
hw/xwin/wincursor.c (+23/-20)
hw/xwin/windialogs.c (+29/-47)
hw/xwin/winfillsp.c (+1/-1)
hw/xwin/winglobals.c (+1/-1)
hw/xwin/winglobals.h (+4/-1)
hw/xwin/winkeybd.c (+46/-26)
hw/xwin/winmessages.h (+1/-1)
hw/xwin/winmouse.c (+28/-22)
hw/xwin/winmsgwindow.c (+180/-0)
hw/xwin/winmultiwindowclass.c (+20/-13)
hw/xwin/winmultiwindowclass.h (+1/-1)
hw/xwin/winmultiwindowicons.c (+5/-1)
hw/xwin/winmultiwindowwindow.c (+6/-9)
hw/xwin/winmultiwindowwm.c (+29/-27)
hw/xwin/winmultiwindowwndproc.c (+21/-9)
hw/xwin/winpfbdd.c (+0/-13)
hw/xwin/winprefs.c (+7/-22)
hw/xwin/winprefs.h (+9/-9)
hw/xwin/winprefsyacc.c (+2008/-725)
hw/xwin/winprefsyacc.h (+118/-33)
hw/xwin/winscrinit.c (+1/-5)
hw/xwin/winsetsp.c (+29/-23)
hw/xwin/wintrayicon.c (+1/-1)
hw/xwin/winwin32rootless.c (+22/-22)
hw/xwin/winwin32rootlesswindow.c (+3/-5)
hw/xwin/winwin32rootlesswndproc.c (+18/-9)
hw/xwin/winwindow.c (+0/-4)
hw/xwin/winwindow.h (+1/-0)
hw/xwin/winwindowswm.c (+3/-18)
hw/xwin/winwndproc.c (+19/-8)
include/Makefile.am (+1/-0)
include/Makefile.in (+10/-1)
include/busfault.h (+48/-0)
include/callback.h (+1/-0)
include/cursorstr.h (+0/-2)
include/dix-config.h.in (+29/-0)
include/dix.h (+11/-0)
include/dixstruct.h (+12/-12)
include/do-not-use-config.h.in (+65/-3)
include/extinit.h (+10/-2)
include/input.h (+14/-9)
include/inputstr.h (+1/-1)
include/list.h (+1/-1)
include/misc.h (+29/-0)
include/os.h (+10/-0)
include/privates.h (+0/-1)
include/protocol-versions.h (+12/-0)
include/regionstr.h (+2/-0)
include/registry.h (+2/-0)
include/servermd.h (+14/-0)
include/xkbsrv.h (+3/-0)
include/xorg-config.h.in (+6/-0)
include/xorg-server.h.in (+12/-0)
man/Makefile.in (+9/-1)
mi/Makefile.in (+9/-1)
mi/mieq.c (+1/-1)
mi/miinitext.c (+7/-6)
mi/mipointer.c (+3/-20)
mi/mipointer.h (+0/-12)
mi/misprite.c (+1/-9)
mi/miwideline.c (+3/-3)
miext/Makefile.in (+9/-1)
miext/damage/Makefile.am (+1/-1)
miext/damage/Makefile.in (+10/-2)
miext/damage/damage.c (+27/-129)
miext/damage/damage.h (+1/-19)
miext/damage/damagestr.h (+0/-3)
miext/rootless/Makefile.in (+9/-1)
miext/rootless/rootlessWindow.c (+3/-3)
miext/shadow/Makefile.am (+5/-0)
miext/shadow/Makefile.in (+21/-3)
miext/shadow/c2p_core.h (+187/-0)
miext/shadow/shadow.c (+1/-1)
miext/shadow/shadow.h (+12/-0)
miext/shadow/shafb4.c (+139/-0)
miext/shadow/shafb8.c (+143/-0)
miext/shadow/shiplan2p4.c (+136/-0)
miext/shadow/shiplan2p8.c (+137/-0)
miext/shadow/shpacked.c (+0/-1)
miext/sync/Makefile.am (+9/-2)
miext/sync/Makefile.in (+24/-11)
miext/sync/misync.c (+17/-29)
miext/sync/misync.h (+22/-1)
miext/sync/misyncfd.c (+99/-0)
miext/sync/misyncfd.h (+45/-0)
miext/sync/misyncshm.c (+186/-0)
miext/sync/misyncshm.h (+28/-0)
miext/sync/misyncstr.h (+15/-0)
os/Makefile.am (+10/-0)
os/Makefile.in (+26/-7)
os/WaitFor.c (+6/-1)
os/access.c (+4/-4)
os/backtrace.c (+78/-2)
os/busfault.c (+150/-0)
os/connection.c (+1/-1)
os/io.c (+62/-38)
os/log.c (+3/-0)
os/osinit.c (+16/-2)
os/utils.c (+78/-2)
os/xdmcp.c (+1/-1)
os/xstrans.c (+2/-0)
present/Makefile.am (+17/-0)
present/Makefile.in (+815/-0)
present/present.c (+911/-0)
present/present.h (+127/-0)
present/present_event.c (+247/-0)
present/present_fake.c (+140/-0)
present/present_fence.c (+139/-0)
present/present_notify.c (+114/-0)
present/present_priv.h (+302/-0)
present/present_request.c (+331/-0)
present/present_screen.c (+236/-0)
present/presentext.h (+29/-0)
pseudoramiX/Makefile.am (+7/-0)
pseudoramiX/Makefile.in (+739/-0)
pseudoramiX/pseudoramiX.c (+516/-0)
pseudoramiX/pseudoramiX.h (+10/-0)
randr/Makefile.in (+9/-1)
randr/randr.c (+119/-1)
randr/randrstr.h (+12/-0)
randr/rrcrtc.c (+8/-7)
randr/rrinfo.c (+1/-1)
randr/rroutput.c (+6/-1)
randr/rrpointer.c (+1/-1)
randr/rrprovider.c (+25/-0)
randr/rrscreen.c (+1/-1)
record/Makefile.in (+9/-1)
record/record.c (+4/-0)
render/Makefile.in (+9/-1)
test/Makefile.am (+14/-5)
test/Makefile.in (+30/-17)
test/hashtabletest.c (+4/-0)
test/input.c (+1/-1)
test/signal-logging.c (+2/-1)
test/xi2/Makefile.am (+1/-1)
test/xi2/Makefile.in (+10/-2)
test/xi2/protocol-xipassivegrabdevice.c (+8/-1)
xfixes/Makefile.in (+9/-1)
xfixes/cursor.c (+2/-8)
xfixes/region.c (+26/-0)
xkb/Makefile.in (+9/-1)
xkb/xkb.c (+1/-2)
xkb/xkbActions.c (+81/-70)
xkb/xkbInit.c (+22/-4)
- Sebastien Bacher: Approve
- Maarten Lankhorst (community): Approve
-
Diff: 449 lines (+422/-0)5 files modifieddebian/patches/series (+4/-0)
debian/patches/xfree86_add_matchseat_key_description_to_xorg_conf_man.patch (+68/-0)
debian/patches/xfree86_add_matchseat_key_to_xorg_conf.patch (+248/-0)
debian/patches/xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch (+52/-0)
debian/patches/xfree86_keep_non_seat0_from_touching_vts.patch (+50/-0)
tags: | added: multiseat |
tags: | added: saucy |
Changed in xorg-server: | |
importance: | Unknown → Medium |
status: | Unknown → Confirmed |
Changed in xorg-server: | |
status: | Confirmed → Fix Released |
Changed in xorg-server (Ubuntu Trusty): | |
status: | New → In Progress |
assignee: | nobody → Laércio de Sousa (lbssousa) |
description: | updated |
summary: |
- 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 |
affects: | fedora → hwe-next |
Changed in hwe-next: | |
importance: | Unknown → Undecided |
status: | Unknown → New |
tags: |
added: trusty removed: saucy verification-needed |
no longer affects: | hwe-next |
tags: | added: verification-failed |
Changed in xorg-server (Ubuntu): | |
assignee: | nobody → XxEarthxX (budwiser) |
Created attachment 82364
Go further with "legacy" PCI bus probe on non-seat0 seats when no platform bus devices are found
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.
I've wrote a small patch that solves my problem, going further with PCI bus probe, while tries to keep the current behavior if a platform bus device is found on secondary seats. Please consider applying it, or giving another solution.
Thanks in advance!
Related bug: https:/ /bugzilla. redhat. com/show_ bug.cgi? id=962907