]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe: Do clean shutdown also when using flr
authorJouni Högander <jouni.hogander@intel.com>
Fri, 31 Oct 2025 12:23:11 +0000 (14:23 +0200)
committerMaarten Lankhorst <dev@lankhorst.se>
Tue, 4 Nov 2025 14:12:16 +0000 (15:12 +0100)
Currently Xe driver is triggering flr without any clean-up on
shutdown. This is causing random warnings from pending related works as the
underlying hardware is reset in the middle of their execution.

Fix this by performing clean shutdown also when using flr.

Fixes: 501d799a47e2 ("drm/xe: Wire up device shutdown handler")
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Maarten Lankhorst <dev@lankhorst.se>
Link: https://patch.msgid.link/20251031122312.1836534-1-jouni.hogander@intel.com
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
drivers/gpu/drm/xe/xe_device.c

index 47f5391ad8e90f48dc3bdc0527ea593fc3f19b7c..3db922dd2b247d8bb950621630db71a3837d0371 100644 (file)
@@ -988,21 +988,21 @@ void xe_device_remove(struct xe_device *xe)
 
 void xe_device_shutdown(struct xe_device *xe)
 {
+       struct xe_gt *gt;
+       u8 id;
+
        drm_dbg(&xe->drm, "Shutting down device\n");
 
-       if (xe_driver_flr_disabled(xe)) {
-               struct xe_gt *gt;
-               u8 id;
+       xe_display_pm_shutdown(xe);
 
-               xe_display_pm_shutdown(xe);
+       xe_irq_suspend(xe);
 
-               xe_irq_suspend(xe);
+       for_each_gt(gt, xe, id)
+               xe_gt_shutdown(gt);
 
-               for_each_gt(gt, xe, id)
-                       xe_gt_shutdown(gt);
+       xe_display_pm_shutdown_late(xe);
 
-               xe_display_pm_shutdown_late(xe);
-       } else {
+       if (!xe_driver_flr_disabled(xe)) {
                /* BOOM! */
                __xe_driver_flr(xe);
        }