mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 07:33:19 +02:00
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: José Roberto de Souza <jose.souza@intel.com> Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220617190629.355356-1-jose.souza@intel.com
This commit is contained in:
parent
6434cf6300
commit
421f541096
|
|
@ -1049,8 +1049,6 @@ void i915_driver_shutdown(struct drm_i915_private *i915)
|
|||
intel_runtime_pm_disable(&i915->runtime_pm);
|
||||
intel_power_domains_disable(i915);
|
||||
|
||||
i915_gem_suspend(i915);
|
||||
|
||||
if (HAS_DISPLAY(i915)) {
|
||||
drm_kms_helper_poll_disable(&i915->drm);
|
||||
|
||||
|
|
@ -1067,6 +1065,8 @@ void i915_driver_shutdown(struct drm_i915_private *i915)
|
|||
|
||||
intel_dmc_ucode_suspend(i915);
|
||||
|
||||
i915_gem_suspend(i915);
|
||||
|
||||
/*
|
||||
* The only requirement is to reboot with display DC states disabled,
|
||||
* for now leaving all display power wells in the INIT power domain
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user