drm/i915: Call i915_gem_suspend() only after display is turned off

When the last reference of a gem object is removed it is added to the
mm.free_list list and mm.free_work is queued to actually free the
object.

So gem objects that had their last reference removed by display during
drm_atomic_helper_shutdown() are added to mm.free_list what could
cause that mm.free_work is executed at the same time as
intel_runtime_pm_driver_release() causing raw-wakerefs warning.

So here only calling i915_gem_suspend() and by consequence
i915_gem_drain_freed_objects() only after display is down making
sure all display gem objecs are freed when
intel_runtime_pm_driver_release() is executed.
Signed-off-by: default avatarJosé Roberto de Souza <jose.souza@intel.com>
Reviewed-by: default avatarMatt Roper <matthew.d.roper@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220617190629.355356-1-jose.souza@intel.com
parent 6434cf63
...@@ -1049,8 +1049,6 @@ void i915_driver_shutdown(struct drm_i915_private *i915) ...@@ -1049,8 +1049,6 @@ void i915_driver_shutdown(struct drm_i915_private *i915)
intel_runtime_pm_disable(&i915->runtime_pm); intel_runtime_pm_disable(&i915->runtime_pm);
intel_power_domains_disable(i915); intel_power_domains_disable(i915);
i915_gem_suspend(i915);
if (HAS_DISPLAY(i915)) { if (HAS_DISPLAY(i915)) {
drm_kms_helper_poll_disable(&i915->drm); drm_kms_helper_poll_disable(&i915->drm);
...@@ -1067,6 +1065,8 @@ void i915_driver_shutdown(struct drm_i915_private *i915) ...@@ -1067,6 +1065,8 @@ void i915_driver_shutdown(struct drm_i915_private *i915)
intel_dmc_ucode_suspend(i915); intel_dmc_ucode_suspend(i915);
i915_gem_suspend(i915);
/* /*
* The only requirement is to reboot with display DC states disabled, * The only requirement is to reboot with display DC states disabled,
* for now leaving all display power wells in the INIT power domain * for now leaving all display power wells in the INIT power domain
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment