[Intel-gfx] [PATCH 2/3] drm/i915: Flush the tasklet when checking for idle
Chris Wilson
chris at chris-wilson.co.uk
Fri Sep 14 11:40:45 UTC 2018
Quoting Tvrtko Ursulin (2018-09-14 11:21:07)
>
> On 14/09/2018 09:00, Chris Wilson wrote:
> > In order to reduce latency when checking for idle we kick the tasklet
> > directly. Sometimes this is not enough as it is queued on another cpu
> > and so to improve the accuracy of this idle-check (and so to reduce
> > latency overall by avoiding another pass, or worse declaring a timeout!)
> > wait for the tasklet to complete.
> >
> > References: https://bugs.freedesktop.org/show_bug.cgi?id=107916
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> > Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> > Cc: Michel Thierry <michel.thierry at intel.com>
> > ---
> > drivers/gpu/drm/i915/intel_engine_cs.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
> > index 10cd051ba29e..217ed3ee1cab 100644
> > --- a/drivers/gpu/drm/i915/intel_engine_cs.c
> > +++ b/drivers/gpu/drm/i915/intel_engine_cs.c
> > @@ -990,6 +990,9 @@ bool intel_engine_is_idle(struct intel_engine_cs *engine)
> > }
> > local_bh_enable();
> >
> > + /* Otherwise flush the tasklet if it was on another cpu */
> > + tasklet_unlock_wait(t);
>
> That's one bizarre api! I was expecting it to mess up the state here but
> nope, apparently it is actually what one would expect to be named
> tasklet_sync.
>
> > +
> > if (READ_ONCE(engine->execlists.active))
> > return false;
> > }
> >
>
> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Ta, first two applied. I'm in the market for a victim for number 3.
Mika!
-Chris
More information about the Intel-gfx
mailing list