[PATCH] drm/xe/pm: Restore display pm if there is error after display suspend

Rodrigo Vivi rodrigo.vivi at intel.com
Tue Jul 8 20:08:19 UTC 2025


On Mon, Jul 07, 2025 at 09:11:41AM -0700, Daniele Ceraolo Spurio wrote:
> 
> 
> On 7/6/2025 6:58 PM, Shuicheng Lin wrote:
> > 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")
> > Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
> > Cc: John Harrison <John.C.Harrison at Intel.com>
> > Signed-off-by: Shuicheng Lin <shuicheng.lin at intel.com>
> 
> If you look at 51462211f4a9, you'll see that before the PXP changes were
> added xe_display_pm_resume was only called from the error path of
> xe_gt_suspend (even though xe_bo_evict_all was already there), so I've kept
> that behavior when I added the PXP changes.
> That pre-PXP behavior is still present in the 6.12 LTS kernel, so if that's
> wrong it needs to be fixed there as well.
> 
> Looking at the history, it looks like the patch that moved the call to
> xe_display_pm_resume to before the evict_all without adjusting the error
> management was this one:
> cb8f81c17531 ("drm/xe/display: Make display suspend/resume work on
> discrete")
> 
> Given how different the code is, I don't know if it is better to send a
> separate patch for that to the stable tree, or to update the fixes tag on
> this one and send the separate patch when it fails to apply.
> 
> If you want to go with the former, this is:
> Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
> 
> But please also get an ack from someone on the display side to make sure
> this was not intentional.

not intentional. definitely a bug.

Instead of removing the fixes tag, I added an extra one. And pushed to
drm-xe-next.

Shuicheng whenever you receive a notification that the patch failed to apply
in some stable branch, please follow up sending a backported version directly
to the stable mailing list.

Thanks for the patch and review.

> 
> Daniele
> 
> > ---
> >   drivers/gpu/drm/xe/xe_pm.c | 3 +--
> >   1 file changed, 1 insertion(+), 2 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
> > index ff749edc005b..bcfda545e74f 100644
> > --- a/drivers/gpu/drm/xe/xe_pm.c
> > +++ b/drivers/gpu/drm/xe/xe_pm.c
> > @@ -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);
> 


More information about the Intel-xe mailing list