xserver-multidpi/hw/xfree86/common
Laszlo Ersek ca8d88e503 xfree86: recognize primary BUS_PCI device in xf86IsPrimaryPlatform()
The new platform bus code and the old PCI bus code overlap. Platform bus
can handle any type of device, including PCI devices, whereas the PCI code
can only handle PCI devices. Some drivers only support the old style
PCI-probe methods, but the primary device detection code is server based,
not driver based; so we might end up with a primary device which only has
a PCI bus-capable driver, but was detected as primary by the platform
code, or the other way around.

(The above paragraph was shamelessly stolen from Hans de Goede, and
customized.)

The latter case applies to QEMU's virtio-gpu-pci device: it is detected as
a BUS_PCI primary device, but we actually probe it first (with the
modesetting driver) through xf86platformProbeDev(). The
xf86IsPrimaryPlatform() function doesn't recognize the device as primary
(it bails out as soon as it sees BUS_PCI); instead, we add the device as a
secondary graphics card under "autoAddGPU". In turn, the success of this
automatic probing-as-GPU prevents xf86CallDriverProbe() from proceeding to
the PCI probing.

The result is that the server exits with no primary devices detected.

Commit cf66471353 ("xfree86: use udev to provide device enumeration for
kms devices (v10)") added "cross-bus" matching to xf86IsPrimaryPci(). Port
that now to xf86IsPrimaryPlatform(), so that we can probe virtio-gpu-pci
as a primary card in platform bus code.

Cc: Adam Jackson <ajax@redhat.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Hans de Goede <hdegoede@redhat.com>
Cc: Keith Packard <keithp@keithp.com>
Cc: Marcin Juszkiewicz <mjuszkiewicz@redhat.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Tested-By: Marcin Juszkiewicz <mjuszkiewicz@redhat.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2016-09-28 14:53:39 -04:00
..
.gitignore .gitignore: use common defaults with custom section #24239 2009-11-11 21:40:20 -08:00
compiler.h xfree86: Use same inb/outb asm code for i386 amd64 and ia64 2015-10-26 11:24:22 -04:00
dgaproc.h dga: Hide a bunch of implementation details 2015-07-08 16:40:58 -04:00
extramodes Remove some default modes that really shouldn't be in the default set. 2008-06-24 10:40:36 -04:00
fourcc.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
Makefile.am vidmode: Remove stray vidmodeproc.h from EXTRA_DIST 2016-03-11 13:50:32 -05:00
modeline2c.awk Remove some OS/2 leftovers. 2009-04-06 10:58:47 -04:00
vesamodes Fix standard VESA modes. 2006-11-03 14:06:32 -08:00
xaarop.h xfree86: Drop some dead XAA decls from SDK headers 2012-07-25 14:03:31 -07:00
xf86.h xfree86: Provide xf86BlockSIGIO and xf86ReleaseSIGIO as wrappers for input mutex 2016-05-30 00:17:34 -07:00
xf86AutoConfig.c Autoconfig: Fix the loop adding dectected drivers to the list of screens 2016-08-15 12:43:43 -04:00
xf86Build.h.in Print the build time as well as the date if we can. 2007-06-04 02:03:44 -04:00
xf86Bus.c Fix Xorg -configure not working anymore 2016-08-18 14:29:53 -04:00
xf86Bus.h Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
xf86cmap.c xfree86: Hook up colormaps and RandR 1.2 gamma code v6 2016-07-28 10:12:05 +09:00
xf86cmap.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
xf86Config.c xfree86: Fix fallback driver sort order for Xorg -configure (v2) 2016-07-15 11:08:01 -04:00
xf86Config.h Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
xf86Configure.c dix: Squash some new gcc6 warnings 2016-04-29 11:19:58 -04:00
xf86Cursor.c Remove SIGIO support for input [v5] 2016-05-26 16:07:54 -07:00
xf86DGA.c dga: Hide a bunch of implementation details 2015-07-08 16:40:58 -04:00
xf86DPMS.c xfree86: don't force the screensaver off on DPMS unblank, merely suggest it 2014-07-14 08:39:50 +10:00
xf86Events.c Remove fd_set from Block/Wakeup handler API 2016-07-18 15:27:51 -04:00
xf86Extensions.c vidmode: move to a separate library of its own 2016-02-29 16:29:01 -05:00
xf86Extensions.h xf86: Re-export extension disable flags 2012-07-16 18:24:49 -07:00
xf86fbBus.c xfree86: use udev to provide device enumeration for kms devices (v10) 2012-07-06 10:20:19 +01:00
xf86fbman.c Convert hw/xfree86 to new *allocarray functions 2015-04-21 16:58:08 -07:00
xf86fbman.h Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
xf86Globals.c xfree86: Remove xf86RegisterRootWindowProperty 2016-04-18 11:23:10 -04:00
xf86Helper.c xfree86: Hook up colormaps and RandR 1.2 gamma code v6 2016-07-28 10:12:05 +09:00
xf86Init.c xfree86: Set pScrn->pScreen before driver ScreenInit is called 2016-08-13 09:18:15 -07:00
xf86InPriv.h xfree86/common: Warning fixes. Mostly const string handling. 2014-01-12 10:14:48 -08:00
xf86Mode.c xfree86: Hide some pre-randr mode validation details 2015-07-08 16:40:57 -04:00
xf86Module.h Bump ABI versions to reflect block/wakeup handler API changes 2016-07-18 15:27:51 -04:00
xf86noBus.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
xf86Opt.h xfree86/common: Warning fixes. Mostly const string handling. 2014-01-12 10:14:48 -08:00
xf86Option.c xfree86/common: Warning fixes. Mostly const string handling. 2014-01-12 10:14:48 -08:00
xf86Optionstr.h hw/xfree86: Lots of constant string support 2014-01-12 10:14:48 -08:00
xf86pciBus.c Convert hw/xfree86 to new *allocarray functions 2015-04-21 16:58:08 -07:00
xf86pciBus.h xfree86: Make driver matching consistent 2014-07-07 16:11:00 -07:00
xf86PciInfo.h Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
xf86platformBus.c xfree86: recognize primary BUS_PCI device in xf86IsPrimaryPlatform() 2016-09-28 14:53:39 -04:00
xf86platformBus.h xfree86: Fallback to first platform device as primary 2014-08-21 20:03:48 -05:00
xf86PM.c Remove SIGIO support for input [v5] 2016-05-26 16:07:54 -07:00
xf86Priv.h Remove fd_set from Block/Wakeup handler API 2016-07-18 15:27:51 -04:00
xf86Privstr.h dix: Update some comments to reflect the new non-SIGIO input model 2016-06-08 11:36:32 -04:00
xf86RandR.c xfree86: Remove pointless xf86RandRCreateScreenResources 2014-07-29 09:53:01 -04:00
xf86sbusBus.c Convert hw/xfree86 to new *allocarray functions 2015-04-21 16:58:08 -07:00
xf86sbusBus.h Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
xf86str.h dix: Update some comments to reflect the new non-SIGIO input model 2016-06-08 11:36:32 -04:00
xf86VGAarbiter.c xfree86: vgaarb: Initialize local variable rsrc_decodes 2016-08-15 12:30:39 -04:00
xf86VGAarbiter.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
xf86VGAarbiterPriv.h Remove readmask from screen block/wakeup handler 2016-07-18 15:27:51 -04:00
xf86VidMode.c vidmode: remove redundant DIX function 2016-02-29 16:29:14 -05:00
xf86Xinput.c xfree86: lock input during PreInit 2016-08-12 14:43:08 +10:00
xf86Xinput.h Drop valuator mask argument from GetKeyboardEvents 2015-03-13 12:31:21 +10:00
xf86xv.c Convert hw/xfree86 to new *allocarray functions 2015-04-21 16:58:08 -07:00
xf86xv.h xfree86: Remove xv clip notify driver hook 2014-09-26 15:27:18 -04:00
xf86xvmc.c Convert hw/xfree86 to new *allocarray functions 2015-04-21 16:58:08 -07:00
xf86xvmc.h Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
xf86xvpriv.h xfree86: Remove xv clip notify driver hook 2014-09-26 15:27:18 -04:00
xisb.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
xisb.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
xorgHelper.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
xorgVersion.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00