This patch reverts i915_gem_freeze to previous logic [1] to avoid using wbinvd_on_all_cpus. [1]. https://patchwork.freedesktop.org/patch/415007/?series=86058&rev=2 Suggested-by: Lucas De Marchi <lucas.demarchi@xxxxxxxxx> Signed-off-by: Michael Cheng <michael.cheng@xxxxxxxxx> --- drivers/gpu/drm/i915/gem/i915_gem_pm.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_pm.c b/drivers/gpu/drm/i915/gem/i915_gem_pm.c index 3f20961bb59b..f78f2f004d6c 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_pm.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_pm.c @@ -212,13 +212,18 @@ int i915_gem_freeze_late(struct drm_i915_private *i915) * the objects as well, see i915_gem_freeze() */ - with_intel_runtime_pm(&i915->runtime_pm, wakeref) - i915_gem_shrink(NULL, i915, -1UL, NULL, ~0); + wakeref = intel_runtime_pm_get(&i915->runtime_pm); + i915_gem_shrink(NULL, i915, -1UL, NULL, ~0); i915_gem_drain_freed_objects(i915); - wbinvd_on_all_cpus(); - list_for_each_entry(obj, &i915->mm.shrink_list, mm.link) - __start_cpu_write(obj); + list_for_each_entry(obj, &i915->mm.shrink_list, mm.link) { + i915_gem_object_lock(obj, NULL); + drm_WARN_ON(&i915->drm, + i915_gem_object_set_to_cpu_domain(obj, true)); + i915_gem_object_unlock(obj); + } + + intel_runtime_pm_put(&i915->runtime_pm, wakeref); return 0; } -- 2.25.1