From: Michel Dänzer <[email protected]>

Avoids failures due to DRICreatePCIBusID not being available in some
cases.

Signed-off-by: Michel Dänzer <[email protected]>
---
 src/amdgpu_probe.c | 37 ++++++++++++++++++++++++-------------
 1 file changed, 24 insertions(+), 13 deletions(-)

diff --git a/src/amdgpu_probe.c b/src/amdgpu_probe.c
index e4f5c75..fa68008 100644
--- a/src/amdgpu_probe.c
+++ b/src/amdgpu_probe.c
@@ -80,19 +80,34 @@ static void AMDGPUIdentify(int flags)
                          "Driver for AMD Radeon chipsets", AMDGPUChipsets);
 }
 
+static char *amdgpu_bus_id(ScrnInfoPtr pScrn, struct pci_device *dev)
+{
+       char *busid;
+
+#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,9,99,901,0)
+       XNFasprintf(&busid, "pci:%04x:%02x:%02x.%d",
+                   dev->domain, dev->bus, dev->dev, dev->func);
+#else
+       busid = XNFprintf("pci:%04x:%02x:%02x.%d",
+                         dev->domain, dev->bus, dev->dev, dev->func);
+#endif
+
+       if (!busid)
+               xf86DrvMsgVerb(pScrn->scrnIndex, X_ERROR, 0,
+                              "AMDGPU: Failed to generate bus ID string\n");
+
+       return busid;
+}
+
 static Bool amdgpu_kernel_mode_enabled(ScrnInfoPtr pScrn,
                                       struct pci_device *pci_dev)
 {
-       char *busIdString;
+       char *busIdString = amdgpu_bus_id(pScrn, pci_dev);
        int ret;
 
-       if (!xf86LoaderCheckSymbol("DRICreatePCIBusID")) {
-               xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 0,
-                              "[KMS] No DRICreatePCIBusID symbol, no kernel 
modesetting.\n");
+       if (!busIdString)
                return FALSE;
-       }
 
-       busIdString = DRICreatePCIBusID(pci_dev);
        ret = drmCheckModesettingSupported(busIdString);
 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
        if (ret) {
@@ -127,13 +142,9 @@ static int amdgpu_kernel_open_fd(ScrnInfoPtr pScrn, struct 
pci_device *dev,
        }
 #endif
 
-#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,9,99,901,0)
-       XNFasprintf(&busid, "pci:%04x:%02x:%02x.%d",
-                   dev->domain, dev->bus, dev->dev, dev->func);
-#else
-       busid = XNFprintf("pci:%04x:%02x:%02x.%d",
-                         dev->domain, dev->bus, dev->dev, dev->func);
-#endif
+       busid = amdgpu_bus_id(pScrn, dev);
+       if (!busid)
+               return -1;
 
        fd = drmOpen(NULL, busid);
        if (fd == -1) {
-- 
2.6.2

_______________________________________________
xorg-driver-ati mailing list
[email protected]
http://lists.x.org/mailman/listinfo/xorg-driver-ati

Reply via email to