From ea91db4b83312e791dcae935b8720f49a3861d72 Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Thu, 8 Sep 2016 21:24:58 +0800 Subject: [PATCH] config: fix GPUDevice fail when AutoAddGPU off + BusID MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fix is for the following xorg.conf can work: Section "ServerFlags" Option "AutoAddGPU" "off" EndSection Section "Device" Identifier "Amd" Driver "ati" BusID "PCI:1:0:0" EndSection Section "Device" Identifier "Intel" Driver "modesetting" BusID "pci:0:2:0" EndSection Section "Screen" Identifier "Screen0" Device "Intel" GPUDevice "Amd" EndSection Without AutoAddGPU off, modesetting DDX will also be loaded for GPUDevice. Signed-off-by: Qiang Yu Reviewed-by: Michel Dänzer Signed-off-by: Hans de Goede --- hw/xfree86/common/xf86platformBus.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c index 71f8df1d7..39fb1dd36 100644 --- a/hw/xfree86/common/xf86platformBus.c +++ b/hw/xfree86/common/xf86platformBus.c @@ -426,6 +426,19 @@ probeSingleDevice(struct xf86_platform_device *dev, DriverPtr drvp, GDevPtr gdev return foundScreen; } +static Bool +isGPUDevice(GDevPtr gdev) +{ + int i; + + for (i = 0; i < gdev->myScreenSection->num_gpu_devices; i++) { + if (gdev == gdev->myScreenSection->gpu_devices[i]) + return TRUE; + } + + return FALSE; +} + int xf86platformProbeDev(DriverPtr drvp) { @@ -458,9 +471,8 @@ xf86platformProbeDev(DriverPtr drvp) if (j == xf86_num_platform_devices) continue; - foundScreen = probeSingleDevice(&xf86_platform_devices[j], drvp, devList[i], 0); - if (!foundScreen) - continue; + foundScreen = probeSingleDevice(&xf86_platform_devices[j], drvp, devList[i], + isGPUDevice(devList[i]) ? PLATFORM_PROBE_GPU_SCREEN : 0); } /* if autoaddgpu devices is enabled then go find any unclaimed platform