drm/i915/guc: Unwind context requests in reverse order
When unwinding requests on a reset context, if other requests in the
context are in the priority list the requests could be resubmitted out
of seqno order. Traverse the list of active requests in reverse and
append to the head of the priority list to fix this.
Fixes: eb5e7da736
("drm/i915/guc: Reset implementation for new GuC interface")
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210909164744.31249-4-matthew.brost@intel.com
This commit is contained in:
parent
669b949c1a
commit
c39f51cc98
|
@ -806,7 +806,7 @@ __unwind_incomplete_requests(struct intel_context *ce)
|
|||
|
||||
spin_lock_irqsave(&sched_engine->lock, flags);
|
||||
spin_lock(&ce->guc_active.lock);
|
||||
list_for_each_entry_safe(rq, rn,
|
||||
list_for_each_entry_safe_reverse(rq, rn,
|
||||
&ce->guc_active.requests,
|
||||
sched.link) {
|
||||
if (i915_request_completed(rq))
|
||||
|
@ -825,7 +825,7 @@ __unwind_incomplete_requests(struct intel_context *ce)
|
|||
}
|
||||
GEM_BUG_ON(i915_sched_engine_is_empty(sched_engine));
|
||||
|
||||
list_add_tail(&rq->sched.link, pl);
|
||||
list_add(&rq->sched.link, pl);
|
||||
set_bit(I915_FENCE_FLAG_PQUEUE, &rq->fence.flags);
|
||||
|
||||
spin_lock(&ce->guc_active.lock);
|
||||
|
|
Loading…
Reference in New Issue