On Wed, Feb 10, 2021 at 10:19:50PM +0000, Chris Wilson wrote: > 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); you just wedged the gpu here... > > intel_uc_suspend(>->uc); > + > + /* Flush all the contexts and internal state before turning off GGTT */ > + gt_sanitize(gt, false); and now we are unsetting wedge here... is this right? > } > > 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 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx