Message ID | 20241129164010.29887-3-gustavo.sousa@intel.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Flush DMC wakelock release work at the end of runtime suspend | expand |
On Fri, Nov 29, 2024 at 01:37:55PM -0300, Gustavo Sousa wrote: > The current behavior for the runtime suspend case is that > xe_display_pm_suspend_late() is only called when D3cold is allowed. > Let's incorporate that behavior into a function specific to runtime PM > and call it xe_display_pm_runtime_suspend_late(). > > With that, we keep stuff a bit more self-contained and allow having a > place for adding more "late display runtime suspend"-related logic that > isn't dependent on the "D3cold allowed" state. > > v2: > - Fix typo in that caused xe_display_pm_runtime_suspend_late() to call > itself instead of xe_display_pm_suspend_late(). > - Add the empty version of xe_display_pm_runtime_suspend_late() for > the !CONFIG_DRM_XE_DISPLAY case. > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > --- > drivers/gpu/drm/xe/display/xe_display.c | 9 +++++++++ > drivers/gpu/drm/xe/display/xe_display.h | 2 ++ > drivers/gpu/drm/xe/xe_pm.c | 4 ++-- > 3 files changed, 13 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c > index 69c828f38cb6..739db5b7b01f 100644 > --- a/drivers/gpu/drm/xe/display/xe_display.c > +++ b/drivers/gpu/drm/xe/display/xe_display.c > @@ -407,6 +407,15 @@ void xe_display_pm_suspend_late(struct xe_device *xe) > intel_display_power_suspend_late(xe, s2idle); > } > > +void xe_display_pm_runtime_suspend_late(struct xe_device *xe) > +{ > + if (!xe->info.probe_display) > + return; > + > + if (xe->d3cold.allowed) > + xe_display_pm_suspend_late(xe); > +} > + > void xe_display_pm_shutdown_late(struct xe_device *xe) > { > if (!xe->info.probe_display) > diff --git a/drivers/gpu/drm/xe/display/xe_display.h b/drivers/gpu/drm/xe/display/xe_display.h > index 17afa537aee5..233f81a26c25 100644 > --- a/drivers/gpu/drm/xe/display/xe_display.h > +++ b/drivers/gpu/drm/xe/display/xe_display.h > @@ -41,6 +41,7 @@ void xe_display_pm_shutdown_late(struct xe_device *xe); > void xe_display_pm_resume_early(struct xe_device *xe); > void xe_display_pm_resume(struct xe_device *xe); > void xe_display_pm_runtime_suspend(struct xe_device *xe); > +void xe_display_pm_runtime_suspend_late(struct xe_device *xe); > void xe_display_pm_runtime_resume(struct xe_device *xe); > > #else > @@ -74,6 +75,7 @@ static inline void xe_display_pm_shutdown_late(struct xe_device *xe) {} > static inline void xe_display_pm_resume_early(struct xe_device *xe) {} > static inline void xe_display_pm_resume(struct xe_device *xe) {} > static inline void xe_display_pm_runtime_suspend(struct xe_device *xe) {} > +static inline void xe_display_pm_runtime_suspend_late(struct xe_device *xe) {} > static inline void xe_display_pm_runtime_resume(struct xe_device *xe) {} > > #endif /* CONFIG_DRM_XE_DISPLAY */ > diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c > index 80699dbeb2e9..a6761cb769b2 100644 > --- a/drivers/gpu/drm/xe/xe_pm.c > +++ b/drivers/gpu/drm/xe/xe_pm.c > @@ -414,8 +414,8 @@ int xe_pm_runtime_suspend(struct xe_device *xe) > > xe_irq_suspend(xe); > > - if (xe->d3cold.allowed) > - xe_display_pm_suspend_late(xe); > + xe_display_pm_runtime_suspend_late(xe); > + > out: > if (err) > xe_display_pm_runtime_resume(xe); > -- > 2.47.0 >
diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c index 69c828f38cb6..739db5b7b01f 100644 --- a/drivers/gpu/drm/xe/display/xe_display.c +++ b/drivers/gpu/drm/xe/display/xe_display.c @@ -407,6 +407,15 @@ void xe_display_pm_suspend_late(struct xe_device *xe) intel_display_power_suspend_late(xe, s2idle); } +void xe_display_pm_runtime_suspend_late(struct xe_device *xe) +{ + if (!xe->info.probe_display) + return; + + if (xe->d3cold.allowed) + xe_display_pm_suspend_late(xe); +} + void xe_display_pm_shutdown_late(struct xe_device *xe) { if (!xe->info.probe_display) diff --git a/drivers/gpu/drm/xe/display/xe_display.h b/drivers/gpu/drm/xe/display/xe_display.h index 17afa537aee5..233f81a26c25 100644 --- a/drivers/gpu/drm/xe/display/xe_display.h +++ b/drivers/gpu/drm/xe/display/xe_display.h @@ -41,6 +41,7 @@ void xe_display_pm_shutdown_late(struct xe_device *xe); void xe_display_pm_resume_early(struct xe_device *xe); void xe_display_pm_resume(struct xe_device *xe); void xe_display_pm_runtime_suspend(struct xe_device *xe); +void xe_display_pm_runtime_suspend_late(struct xe_device *xe); void xe_display_pm_runtime_resume(struct xe_device *xe); #else @@ -74,6 +75,7 @@ static inline void xe_display_pm_shutdown_late(struct xe_device *xe) {} static inline void xe_display_pm_resume_early(struct xe_device *xe) {} static inline void xe_display_pm_resume(struct xe_device *xe) {} static inline void xe_display_pm_runtime_suspend(struct xe_device *xe) {} +static inline void xe_display_pm_runtime_suspend_late(struct xe_device *xe) {} static inline void xe_display_pm_runtime_resume(struct xe_device *xe) {} #endif /* CONFIG_DRM_XE_DISPLAY */ diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c index 80699dbeb2e9..a6761cb769b2 100644 --- a/drivers/gpu/drm/xe/xe_pm.c +++ b/drivers/gpu/drm/xe/xe_pm.c @@ -414,8 +414,8 @@ int xe_pm_runtime_suspend(struct xe_device *xe) xe_irq_suspend(xe); - if (xe->d3cold.allowed) - xe_display_pm_suspend_late(xe); + xe_display_pm_runtime_suspend_late(xe); + out: if (err) xe_display_pm_runtime_resume(xe);
The current behavior for the runtime suspend case is that xe_display_pm_suspend_late() is only called when D3cold is allowed. Let's incorporate that behavior into a function specific to runtime PM and call it xe_display_pm_runtime_suspend_late(). With that, we keep stuff a bit more self-contained and allow having a place for adding more "late display runtime suspend"-related logic that isn't dependent on the "D3cold allowed" state. v2: - Fix typo in that caused xe_display_pm_runtime_suspend_late() to call itself instead of xe_display_pm_suspend_late(). - Add the empty version of xe_display_pm_runtime_suspend_late() for the !CONFIG_DRM_XE_DISPLAY case. Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com> --- drivers/gpu/drm/xe/display/xe_display.c | 9 +++++++++ drivers/gpu/drm/xe/display/xe_display.h | 2 ++ drivers/gpu/drm/xe/xe_pm.c | 4 ++-- 3 files changed, 13 insertions(+), 2 deletions(-)