[PATCH 04/19] drm/i915: Drop the fudge warning on ring restart for ctg/elk

Chris Wilson chris at chris-wilson.co.uk
Fri Aug 9 14:22:21 UTC 2019


Quoting Mika Kuoppala (2019-08-09 15:13:44)
> Chris Wilson <chris at chris-wilson.co.uk> writes:
> 
> > Since we have already stopped the ring, cleared the ring, disabled the
> > ring (and verifying the ring is clear), a later debug message that the
> > ring is no longer clear serves no function. It appears it restarts
> > anyway, and we verify that the ring started correctly afterwards.
> >
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > ---
> >  drivers/gpu/drm/i915/gt/intel_ringbuffer.c | 14 ++++++--------
> >  1 file changed, 6 insertions(+), 8 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gt/intel_ringbuffer.c b/drivers/gpu/drm/i915/gt/intel_ringbuffer.c
> > index aa2f06b80961..78b4235f9c0f 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_ringbuffer.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_ringbuffer.c
> > @@ -644,6 +644,7 @@ static int xcs_resume(struct intel_engine_cs *engine)
> >  
> >       intel_uncore_forcewake_get(engine->uncore, FORCEWAKE_ALL);
> >  
> > +     /* WaClearRingBufHeadRegAtInit:ctg,elk */
> >       if (!stop_ring(engine)) {
> >               /* G45 ring initialization often fails to reset head to zero */
> >               DRM_DEBUG_DRIVER("%s head not reset to zero "
> > @@ -675,19 +676,16 @@ static int xcs_resume(struct intel_engine_cs *engine)
> >       intel_engine_reset_breadcrumbs(engine);
> >  
> >       /* Enforce ordering by reading HEAD register back */
> > -     ENGINE_READ(engine, RING_HEAD);
> > +     ENGINE_POSTING_READ(engine, RING_HEAD);
> >  
> > -     /* Initialize the ring. This must happen _after_ we've cleared the ring
> > +     /*
> > +      * Initialize the ring. This must happen _after_ we've cleared the ring
> >        * registers with the above sequence (the readback of the HEAD registers
> >        * also enforces ordering), otherwise the hw might lose the new ring
> > -      * register values. */
> > +      * register values.
> > +      */
> >       ENGINE_WRITE(engine, RING_START, i915_ggtt_offset(ring->vma));
> >  
> > -     /* WaClearRingBufHeadRegAtInit:ctg,elk */
> > -     if (ENGINE_READ(engine, RING_HEAD))
> > -             DRM_DEBUG_DRIVER("%s initialization failed [head=%08x], fudging\n",
> > -                              engine->name, ENGINE_READ(engine, RING_HEAD));
> > -
> 
> stop_ring seems to contain enough paranoia for this wa and plenty
> to spare. A really paranoid could glue the debug to the posting
> read above to hit two flies with one stroke.
> 
> But after two retries on stopping and clearing the head, you
> really have to be haunted by it.

Haunted is an apt description for
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6667/fi-elk-e7500/dmesg0.log
Every time.
-Chris


More information about the Intel-gfx-trybot mailing list