[Intel-gfx] [PATCH 5/6] drm/i915/gt: Discard stale context state from across idling

Chris Wilson chris at chris-wilson.co.uk
Mon Dec 30 16:36:02 UTC 2019


Quoting Mika Kuoppala (2019-12-30 16:30:21)
> Chris Wilson <chris at chris-wilson.co.uk> writes:
> 
> > Before we idle, on parking, we switch to the kernel context such that we
> > have a scratch context loaded while the GPU idle, protecting any
> > precious user state. Be paranoid and assume that the idle state may have
> > been trashed, and reset the kernel_context image after idling.
> >
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > Cc: Imre Deak <imre.deak at intel.com>
> > ---
> >  drivers/gpu/drm/i915/gt/intel_engine_pm.c | 6 ++++++
> >  drivers/gpu/drm/i915/gt/intel_gt_pm.c     | 8 --------
> >  drivers/gpu/drm/i915/gt/mock_engine.c     | 5 +++++
> >  3 files changed, 11 insertions(+), 8 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gt/intel_engine_pm.c b/drivers/gpu/drm/i915/gt/intel_engine_pm.c
> > index cd82f0baef49..1b9f73948f22 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_engine_pm.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_engine_pm.c
> > @@ -20,6 +20,7 @@ static int __engine_unpark(struct intel_wakeref *wf)
> >  {
> >       struct intel_engine_cs *engine =
> >               container_of(wf, typeof(*engine), wakeref);
> > +     struct intel_context *ce;
> >       void *map;
> >  
> >       ENGINE_TRACE(engine, "\n");
> > @@ -34,6 +35,11 @@ static int __engine_unpark(struct intel_wakeref *wf)
> >       if (!IS_ERR_OR_NULL(map))
> >               engine->pinned_default_state = map;
> >  
> > +     /* Discard stale context state from across idling */
> > +     ce = engine->kernel_context;
> > +     if (ce)
> > +             ce->ops->reset(ce);
> > +
> 
> Expect the worst, sure.
> Checksum would get us datapoints tho.

Inject yet-another request to the kernel_context on parking to force a
context switch [to itself] and so ensure the image is saved to HW. Wait
for parking, compute the CRC. Then on unpark compute the CRC again...

The design is all based around that we don't trust the HW and try to
avoid caring about what's in the scratch kernel_context, so other than
validating HW... Not a terrible idea, but we can probably cook up
something more targeted if we thought about it.
-Chris


More information about the Intel-gfx mailing list