[Intel-gfx] [PATCH] drm/i915: Move tasklet kicking to __i915_request_queue caller

Mika Kuoppala mika.kuoppala at linux.intel.com
Thu Aug 15 12:24:03 UTC 2019


Chris Wilson <chris at chris-wilson.co.uk> writes:

> Quoting Mika Kuoppala (2019-08-15 12:35:37)
>> Chris Wilson <chris at chris-wilson.co.uk> writes:
>> 
>> > Since __i915_request_queue() may be called from hardirq (timer) context,
>> > we cannot use local_bh_disable/enable at the lower level. As we do want
>> > to kick the tasklet to speed up initial submission or preemption for
>> > normal client submission, lift it to the normal process context
>> > callpath.
>> >
>> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
>> > ---
>> >  drivers/gpu/drm/i915/i915_request.c | 4 ++--
>> >  1 file changed, 2 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
>> > index 4021334dd2c5..8a2bc1d317e4 100644
>> > --- a/drivers/gpu/drm/i915/i915_request.c
>> > +++ b/drivers/gpu/drm/i915/i915_request.c
>> > @@ -1203,12 +1203,10 @@ void __i915_request_queue(struct i915_request *rq,
>> >        * decide whether to preempt the entire chain so that it is ready to
>> >        * run at the earliest possible convenience.
>> >        */
>> > -     local_bh_disable();
>> >       i915_sw_fence_commit(&rq->semaphore);
>> >       if (attr && rq->engine->schedule)
>> >               rq->engine->schedule(rq, attr);
>> >       i915_sw_fence_commit(&rq->submit);
>> > -     local_bh_enable(); /* Kick the execlists tasklet if just scheduled */
>> 
>> Was this here to only optimize the latency from schedule
>> to resubmission?
>
> It's only for latency minimisation. If we don't do it now, the
> raise_softirq will not be until the process hits the scheduler.
>
> Fence -> backend is all irq-spinlocks.

Reviewed-by: Mika Kuoppala <mika.kuoppala at linux.intel.com>


More information about the Intel-gfx mailing list