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: eb5e7da736f3 ("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…
x
Reference in New Issue
Block a user