From: Hans De Goede <[email protected]>

This fixes the xserver only seeing AMD/ATI devices supported by the amdgpu
driver, as by the time xf86-video-ati gets a chance to probe them, the
fd has been closed.

This fixes e.g. Xorg not seeing the dGPU on a Lenovo Thinkpad E465 laptop
with a CARRIZO iGPU and a HAINAN dGPU.

Signed-off-by: Hans de Goede <[email protected]>

v2: Rebased on top of new patch 1.
Signed-off-by: Michel Dänzer <[email protected]>
---
 src/amdgpu_probe.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/amdgpu_probe.c b/src/amdgpu_probe.c
index fc93ac6a2..fb62cb811 100644
--- a/src/amdgpu_probe.c
+++ b/src/amdgpu_probe.c
@@ -166,7 +166,7 @@ static Bool amdgpu_open_drm_master(ScrnInfoPtr pScrn, 
AMDGPUEntPtr pAMDGPUEnt,
        if (err != 0) {
                xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
                           "[drm] failed to set drm interface version.\n");
-               drmClose(pAMDGPUEnt->fd);
+               amdgpu_kernel_close_fd(pAMDGPUEnt);
                return FALSE;
        }
 
@@ -254,7 +254,7 @@ static Bool amdgpu_get_scrninfo(int entity_num, struct 
pci_device *pci_dev)
        return TRUE;
 
 error_amdgpu:
-       drmClose(pAMDGPUEnt->fd);
+       amdgpu_kernel_close_fd(pAMDGPUEnt);
 error_fd:
        free(pPriv->ptr);
 error:
@@ -349,6 +349,7 @@ amdgpu_platform_probe(DriverPtr pDriver,
 
                pPriv->ptr = xnfcalloc(sizeof(AMDGPUEntRec), 1);
                pAMDGPUEnt = pPriv->ptr;
+               pAMDGPUEnt->platform_dev = dev;
                pAMDGPUEnt->fd = amdgpu_kernel_open_fd(pScrn, busid, dev);
                if (pAMDGPUEnt->fd < 0)
                        goto error_fd;
@@ -367,7 +368,6 @@ amdgpu_platform_probe(DriverPtr pDriver,
                pAMDGPUEnt = pPriv->ptr;
                pAMDGPUEnt->fd_ref++;
        }
-       pAMDGPUEnt->platform_dev = dev;
 
        xf86SetEntityInstanceForScreen(pScrn, pEnt->index,
                                       xf86GetNumEntityInstances(pEnt->
@@ -379,7 +379,7 @@ amdgpu_platform_probe(DriverPtr pDriver,
        return TRUE;
 
 error_amdgpu:
-       drmClose(pAMDGPUEnt->fd);
+       amdgpu_kernel_close_fd(pAMDGPUEnt);
 error_fd:
        free(pPriv->ptr);
 error:
-- 
2.11.0

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to