OSDN Git Service

drm/i915: Rely on direct submission to the queue
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 23 Mar 2020 09:28:38 +0000 (09:28 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 23 Mar 2020 11:51:39 +0000 (11:51 +0000)
Drop the pretense of kicking the tasklet (used only for the defunct guc
submission backend, it should just take ownership of the submit!) and so
remove the bh-kicking from around submission.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200323092841.22240-5-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
drivers/gpu/drm/i915/gt/intel_lrc.c
drivers/gpu/drm/i915/i915_request.c

index 5c6bcf2..6b3013d 100644 (file)
@@ -2386,9 +2386,7 @@ static void eb_request_add(struct i915_execbuffer *eb)
                __i915_request_skip(rq);
        }
 
-       local_bh_disable();
        __i915_request_queue(rq, &attr);
-       local_bh_enable(); /* Kick the execlists tasklet if just scheduled */
 
        /* Try to clean up the client's timeline after submitting the request */
        if (prev)
index f09dd87..210f60e 100644 (file)
@@ -2891,10 +2891,7 @@ static void __submit_queue_imm(struct intel_engine_cs *engine)
        if (reset_in_progress(execlists))
                return; /* defer until we restart the engine following reset */
 
-       if (execlists->tasklet.func == execlists_submission_tasklet)
-               __execlists_submission_tasklet(engine);
-       else
-               tasklet_hi_schedule(&execlists->tasklet);
+       __execlists_submission_tasklet(engine);
 }
 
 static void submit_queue(struct intel_engine_cs *engine,
index c0df71d..3388c5b 100644 (file)
@@ -1444,9 +1444,7 @@ void i915_request_add(struct i915_request *rq)
        if (list_empty(&rq->sched.signalers_list))
                attr.priority |= I915_PRIORITY_WAIT;
 
-       local_bh_disable();
        __i915_request_queue(rq, &attr);
-       local_bh_enable(); /* Kick the execlists tasklet if just scheduled */
 
        mutex_unlock(&tl->mutex);
 }