drm/i915/execlists: Keep virtual context alive until after we kick
The call to kick_siblings() dereferences the rq->context, so we should
not drop our local reference until afterwards!
v2: Stick to setting ce.inflight=NULL before kicking as this is what the
other threads will check to see if the context is ready for takeover.
Fixes: 22b7a426bb
("drm/i915/execlists: Preempt-to-busy")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190621080729.2652-1-chris@chris-wilson.co.uk
This commit is contained in:
parent
b32fa81115
commit
12fdaf19e0
@ -557,9 +557,6 @@ execlists_schedule_out(struct i915_request *rq)
|
|||||||
intel_engine_context_out(ce->inflight);
|
intel_engine_context_out(ce->inflight);
|
||||||
execlists_context_status_change(rq, INTEL_CONTEXT_SCHEDULE_OUT);
|
execlists_context_status_change(rq, INTEL_CONTEXT_SCHEDULE_OUT);
|
||||||
|
|
||||||
ce->inflight = NULL;
|
|
||||||
intel_context_put(ce);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If this is part of a virtual engine, its next request may
|
* If this is part of a virtual engine, its next request may
|
||||||
* have been blocked waiting for access to the active context.
|
* have been blocked waiting for access to the active context.
|
||||||
@ -569,8 +566,11 @@ execlists_schedule_out(struct i915_request *rq)
|
|||||||
* request before the tasklet runs and do not need to rebuild
|
* request before the tasklet runs and do not need to rebuild
|
||||||
* each virtual tree and kick everyone again.
|
* each virtual tree and kick everyone again.
|
||||||
*/
|
*/
|
||||||
|
ce->inflight = NULL;
|
||||||
if (rq->engine != ce->engine)
|
if (rq->engine != ce->engine)
|
||||||
kick_siblings(rq, ce);
|
kick_siblings(rq, ce);
|
||||||
|
|
||||||
|
intel_context_put(ce);
|
||||||
}
|
}
|
||||||
|
|
||||||
i915_request_put(rq);
|
i915_request_put(rq);
|
||||||
|
Loading…
Reference in New Issue
Block a user