After calling intel_gt_suspend_prepare(), the driver starts to turn off various subsystems, such as clearing the GGTT, before calling intel_gt_suspend_late() to relinquish control over the GT. However, if we still have internal GPU state active as we clear the GGTT, the GPU may write back its internal state to the residual GGTT addresses that are now pointing into scratch. Let's reset the GPU to clear that internal state as soon we have idled the GPU in prepare-to-suspend. Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> --- drivers/gpu/drm/i915/gt/intel_gt_pm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm.c b/drivers/gpu/drm/i915/gt/intel_gt_pm.c index 0bd303d2823e..f41612faa269 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c @@ -295,6 +295,9 @@ void intel_gt_suspend_prepare(struct intel_gt *gt) wait_for_suspend(gt); intel_uc_suspend(>->uc); + + /* Flush all the contexts and internal state before turning off GGTT */ + gt_sanitize(gt, false); } static suspend_state_t pm_suspend_target(void) @@ -337,7 +340,7 @@ void intel_gt_suspend_late(struct intel_gt *gt) intel_llc_disable(>->llc); } - gt_sanitize(gt, false); + gt_sanitize(gt, false); /* Be paranoid, remove all residual GPU state */ GT_TRACE(gt, "\n"); } -- 2.20.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx