Unregister all in-kernel clients before unloading the i915 driver. For
other drivers, drm_dev_unregister() does this automatically. As i915
does not use this helper, it has to perform the call by itself. For xe,
do the same in xe_device_remove()

Note that there are currently no in-kernel clients in i915 or xe. The
patch prepares the drivers for a related update of their fbdev support.

v7:
        * update xe driver

Signed-off-by: Thomas Zimmermann <tzimmerm...@suse.de>
---
 drivers/gpu/drm/i915/i915_driver.c | 3 +++
 drivers/gpu/drm/xe/xe_device.c     | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_driver.c 
b/drivers/gpu/drm/i915/i915_driver.c
index 9ee902d5b72c4..97910a85e3917 100644
--- a/drivers/gpu/drm/i915/i915_driver.c
+++ b/drivers/gpu/drm/i915/i915_driver.c
@@ -41,6 +41,7 @@
 
 #include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
+#include <drm/drm_client.h>
 #include <drm/drm_ioctl.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_probe_helper.h>
@@ -852,6 +853,8 @@ void i915_driver_remove(struct drm_i915_private *i915)
 {
        intel_wakeref_t wakeref;
 
+       drm_client_dev_unregister(&i915->drm);
+
        wakeref = intel_runtime_pm_get(&i915->runtime_pm);
 
        i915_driver_unregister(i915);
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 919ad88f0495a..7f41f0ec819f0 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -9,6 +9,7 @@
 
 #include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
+#include <drm/drm_client.h>
 #include <drm/drm_gem_ttm_helper.h>
 #include <drm/drm_ioctl.h>
 #include <drm/drm_managed.h>
@@ -614,6 +615,8 @@ void xe_device_remove(struct xe_device *xe)
        struct xe_gt *gt;
        u8 id;
 
+       drm_client_dev_unregister(&xe->drm);
+
        xe_device_remove_display(xe);
 
        xe_display_fini(xe);
-- 
2.43.2

Reply via email to