drm/i915/execlist: Mark up racy read of execlists->pending[0]
We write to execlists->pending[0] in process_csb() to acknowledge the completion of the ESLP update, outside of the main spinlock. When we check the current status of the previous submission in __execlists_submission_tasklet() we should therefore use READ_ONCE() to reflect and document the unsynchronized read. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200128171614.3845825-1-chris@chris-wilson.co.uk
This commit is contained in:
parent
ba12993c52
commit
8a5746982e
@ -2347,7 +2347,7 @@ static void process_csb(struct intel_engine_cs *engine)
|
||||
static void __execlists_submission_tasklet(struct intel_engine_cs *const engine)
|
||||
{
|
||||
lockdep_assert_held(&engine->active.lock);
|
||||
if (!engine->execlists.pending[0]) {
|
||||
if (!READ_ONCE(engine->execlists.pending[0])) {
|
||||
rcu_read_lock(); /* protect peeking at execlists->active */
|
||||
execlists_dequeue(engine);
|
||||
rcu_read_unlock();
|
||||
|
Loading…
Reference in New Issue
Block a user