drm/xe/pm: Restore display pm if there is error after display suspend
authorShuicheng Lin <shuicheng.lin@intel.com>
Tue, 8 Jul 2025 03:54:25 +0000 (03:54 +0000)
committerLucas De Marchi <lucas.demarchi@intel.com>
Fri, 11 Jul 2025 03:59:38 +0000 (20:59 -0700)
xe_bo_evict_all() is called after xe_display_pm_suspend(). So if there
is error with xe_bo_evict_all(), display pm should be restored.

Fixes: 51462211f4a9 ("drm/xe/pxp: add PXP PM support")
Fixes: cb8f81c17531 ("drm/xe/display: Make display suspend/resume work on discrete")
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Signed-off-by: Shuicheng Lin <shuicheng.lin@intel.com>
Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Link: https://lore.kernel.org/r/20250708035424.3608190-2-shuicheng.lin@intel.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
(cherry picked from commit 83dcee17855c4e5af037ae3262809036de127903)
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
drivers/gpu/drm/xe/xe_pm.c

index ff749edc005bfef5fee920cfc2e203df328c5ab5..bcfda545e74f80dbf53facd1aa6f0451d530150d 100644 (file)
@@ -134,7 +134,7 @@ int xe_pm_suspend(struct xe_device *xe)
        /* FIXME: Super racey... */
        err = xe_bo_evict_all(xe);
        if (err)
-               goto err_pxp;
+               goto err_display;
 
        for_each_gt(gt, xe, id) {
                err = xe_gt_suspend(gt);
@@ -151,7 +151,6 @@ int xe_pm_suspend(struct xe_device *xe)
 
 err_display:
        xe_display_pm_resume(xe);
-err_pxp:
        xe_pxp_pm_resume(xe->pxp);
 err:
        drm_dbg(&xe->drm, "Device suspend failed %d\n", err);