drm/xe/display: Remove hpd cancel work sync from runtime pm path
authorRodrigo Vivi <rodrigo.vivi@intel.com>
Wed, 12 Feb 2025 19:24:47 +0000 (14:24 -0500)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 13 Feb 2025 22:45:43 +0000 (17:45 -0500)
This function will synchronously cancel and wait for many display
work queue items, which might try to take the runtime pm reference
causing a bad deadlock. So, remove it from the runtime_pm suspend patch.

Reported-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250212192447.402715-1-rodrigo.vivi@intel.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/display/xe_display.c

index 376c36ca06db39309167f61f31893773c06c2a41..e144d8c0a123f8d0d019a350f6397fe2d5c5f36e 100644 (file)
@@ -312,7 +312,8 @@ static void __xe_display_pm_suspend(struct xe_device *xe, bool runtime)
 
        xe_display_flush_cleanup_work(xe);
 
-       intel_hpd_cancel_work(xe);
+       if (!runtime)
+               intel_hpd_cancel_work(xe);
 
        if (!runtime && has_display(xe)) {
                intel_display_driver_suspend_access(display);