[Intel-gfx] [PATCH] drm/i915/gt: Sanitize GT first

Chris Wilson chris at chris-wilson.co.uk
Mon Apr 27 09:55:23 UTC 2020


Quoting Tvrtko Ursulin (2020-04-27 10:50:01)
> 
> On 27/04/2020 09:40, Chris Wilson wrote:
> > We see that if the HW doesn't actually sleep, the HW may eat the poison
> > we set in its write-only HWSP during sanitize:
> > 
> >    intel_gt_resume.part.8: 0000:00:02.0
> >    __gt_unpark: 0000:00:02.0
> >    gt_sanitize: 0000:00:02.0 force:yes
> >    process_csb: 0000:00:02.0 vcs0: cs-irq head=5, tail=90
> >    process_csb: 0000:00:02.0 vcs0: csb[0]: status=0x5a5a5a5a:0x5a5a5a5a
> >    assert_pending_valid: Nothing pending for promotion!
> > 
> > The CS TAIL pointer should have been reset by reset_csb_pointers(), so
> > in this case it is likely that we have read back from the CPU cache and
> > so we must clflush our control over that page. In doing so, push the
> > sanitisation to the start of the GT sequence so that our poisoning is
> > assuredly before we start talking to the HW.
> > 
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > ---
> >   drivers/gpu/drm/i915/gt/intel_gt_pm.c | 3 ++-
> >   drivers/gpu/drm/i915/gt/intel_lrc.c   | 3 +++
> >   2 files changed, 5 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 4c4c74ef4f21..5097786f4375 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c
> > @@ -198,11 +198,12 @@ int intel_gt_resume(struct intel_gt *gt)
> >        * Only the kernel contexts should remain pinned over suspend,
> >        * allowing us to fixup the user contexts on their first pin.
> >        */
> > +     gt_sanitize(gt, true);
> > +
> >       intel_gt_pm_get(gt);
> 
> gt_sanitize declares hw access so I thin it should still be after this 
> pm get.

We control the rpm/uncore access inside gt_sanitize. And the reset we do
there avoid interfering with the gt_pm, so I think this is safe. Note
that the gt_sanitize() we do later is after we release gt_pm. So it
seems reasonable to say that we do it before/after gt_pm.


More information about the Intel-gfx mailing list