summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/amdgpu_kms.c7
-rw-r--r--src/amdgpu_probe.c10
-rw-r--r--src/amdgpu_probe.h2
3 files changed, 13 insertions, 6 deletions
diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c
index 31c2e86..92bf5fa 100644
--- a/src/amdgpu_kms.c
+++ b/src/amdgpu_kms.c
@@ -132,12 +132,7 @@ static void AMDGPUFreeRec(ScrnInfoPtr pScrn)
pAMDGPUEnt->fd_ref--;
if (!pAMDGPUEnt->fd_ref) {
amdgpu_device_deinitialize(pAMDGPUEnt->pDev);
-#ifdef XF86_PDEV_SERVER_FD
- if (!(pAMDGPUEnt->platform_dev &&
- pAMDGPUEnt->platform_dev->flags & XF86_PDEV_SERVER_FD))
-#endif
- drmClose(pAMDGPUEnt->fd);
- pAMDGPUEnt->fd = 0;
+ amdgpu_kernel_close_fd(pAMDGPUEnt);
}
}
diff --git a/src/amdgpu_probe.c b/src/amdgpu_probe.c
index 94da7f6..fc93ac6 100644
--- a/src/amdgpu_probe.c
+++ b/src/amdgpu_probe.c
@@ -134,6 +134,16 @@ static int amdgpu_kernel_open_fd(ScrnInfoPtr pScrn, char *busid,
return fd;
}
+void amdgpu_kernel_close_fd(AMDGPUEntPtr pAMDGPUEnt)
+{
+#ifdef XF86_PDEV_SERVER_FD
+ if (!(pAMDGPUEnt->platform_dev &&
+ pAMDGPUEnt->platform_dev->flags & XF86_PDEV_SERVER_FD))
+#endif
+ drmClose(pAMDGPUEnt->fd);
+ pAMDGPUEnt->fd = -1;
+}
+
static Bool amdgpu_open_drm_master(ScrnInfoPtr pScrn, AMDGPUEntPtr pAMDGPUEnt,
char *busid)
{
diff --git a/src/amdgpu_probe.h b/src/amdgpu_probe.h
index 0f43233..9e4a9a4 100644
--- a/src/amdgpu_probe.h
+++ b/src/amdgpu_probe.h
@@ -71,6 +71,8 @@ typedef struct {
char *render_node;
} AMDGPUEntRec, *AMDGPUEntPtr;
+extern void amdgpu_kernel_close_fd(AMDGPUEntPtr pAMDGPUEnt);
+
extern const OptionInfoRec *AMDGPUOptionsWeak(void);
extern Bool AMDGPUPreInit_KMS(ScrnInfoPtr, int);