[Intel-gfx] [PATCH] drm/i915: Kick waiters on resetting legacy rings

Chris Wilson chris at chris-wilson.co.uk
Tue Aug 14 11:46:11 UTC 2018


Quoting Mika Kuoppala (2018-08-14 12:38:18)
> Chris Wilson <chris at chris-wilson.co.uk> writes:
> 
> > This reapplies commit 39f3be162c46 ("drm/i915: Kick waiters on resetting
> > legacy rings") after the improved gem_eio was run across all machines we
> > found that gen3 and early gen4 still lost the immediate interrupt
> > following reset, and the HWSTAM w/a applied to gen6+ is inadequate.
> >
> > Unlike the later gen, on gen3/4 the principle (and only tests to fail so
> > far) are the wait vs reset test cases, whereas the reset stress case
> > works fine (which was the predominantly failing case for gen6+). That is
> > enough to suggest the underlying issue is sufficiently different to
> > support the difference in HWSTAM efficacy.
> >
> > Testcase: igt/gem_eio/wait-10ms
> > References: 39f3be162c46 ("drm/i915: Kick waiters on resetting legacy rings")
> > References: a69ab52b0358 ("drm/i915: Remove extra waiter kick on legacy resets")
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > Cc: Matthew Auld <matthew.auld at intel.com>
> > Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_ringbuffer.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
> > index b65cf7832b39..d40f55a8dc34 100644
> > --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
> > +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
> > @@ -537,6 +537,8 @@ static int init_ring_common(struct intel_engine_cs *engine)
> >       if (INTEL_GEN(dev_priv) > 2)
> >               I915_WRITE_MODE(engine, _MASKED_BIT_DISABLE(STOP_RING));
> >  
> > +     /* Papering over lost _interrupts_ immediately following the restart */
> > +     intel_engine_wakeup(engine);
> 
> We came, we toggled, we learned. Onwards!

The pessimist in me says if this again boils down to a timing bug, we
need to find another w/a. It's a shame that HWSTAM wasn't it (even
remembering the bit differences between gen, as a last resort I tested
with HWSTAM==0 i.e. no mask).

Until then, ignorance is bliss.
-Chris


More information about the Intel-gfx mailing list