mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
drm/i915/guc: Unwind context requests in reverse order
commitc39f51cc98upstream. 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 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
413e603c14
commit
f5b5ea1654
@@ -807,9 +807,9 @@ __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,
|
||||
&ce->guc_active.requests,
|
||||
sched.link) {
|
||||
list_for_each_entry_safe_reverse(rq, rn,
|
||||
&ce->guc_active.requests,
|
||||
sched.link) {
|
||||
if (i915_request_completed(rq))
|
||||
continue;
|
||||
|
||||
@@ -824,7 +824,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_unlock(&ce->guc_active.lock);
|
||||
|
||||
Reference in New Issue
Block a user