On Tue, 05 Mar 2024, Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> wrote: > On Fri, Mar 01, 2024 at 02:42:55PM +0100, Thomas Zimmermann wrote: >> 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 <tzimmermann@xxxxxxx> >> --- >> 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 > > probably deserves a separate patch since this is one here is named 'drm/i915:' Or do this for both in intel_display_driver_unregister()? BR, Jani. > >> @@ -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 >> -- Jani Nikula, Intel