[Intel-gfx] [PATCH] drm/i915/execlists: Simply walk back along request timeline on reset
Chris Wilson
chris at chris-wilson.co.uk
Sat Oct 26 18:52:15 UTC 2019
The request's timeline will only contain requests from this context, in
order of execution. Therefore, we can simply look back along this
timeline to find the currently executing request.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
drivers/gpu/drm/i915/gt/intel_lrc.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 16340740139d..1f39a921afc0 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -252,22 +252,15 @@ static void mark_eio(struct i915_request *rq)
static struct i915_request *active_request(struct i915_request *rq)
{
- const struct intel_context * const ce = rq->hw_context;
struct i915_request *active = NULL;
struct list_head *list;
- if (!i915_request_is_active(rq)) /* unwound, but incomplete! */
- return rq;
-
rcu_read_lock();
list = &rcu_dereference(rq->timeline)->requests;
list_for_each_entry_from_reverse(rq, list, link) {
if (i915_request_completed(rq))
break;
- if (rq->hw_context != ce)
- break;
-
active = rq;
}
rcu_read_unlock();
@@ -3000,6 +2993,7 @@ static void __execlists_reset(struct intel_engine_cs *engine, bool stalled)
/* Context has requests still in-flight; it should not be idle! */
GEM_BUG_ON(i915_active_is_idle(&ce->active));
ce->ring->head = intel_ring_wrap(ce->ring, rq->head);
+ GEM_BUG_ON(ce->ring->head == ce->ring->tail);
/*
* If this request hasn't started yet, e.g. it is waiting on a
@@ -3043,7 +3037,7 @@ static void __execlists_reset(struct intel_engine_cs *engine, bool stalled)
restore_default_state(ce, engine);
out_replay:
- GEM_TRACE("%s replay {head:%04x, tail:%04x\n",
+ GEM_TRACE("%s replay {head:%04x, tail:%04x}\n",
engine->name, ce->ring->head, ce->ring->tail);
intel_ring_update_space(ce->ring);
__execlists_reset_reg_state(ce, engine);
--
2.24.0.rc1
More information about the Intel-gfx
mailing list