[PATCH 10/72] resubmit-flush
Chris Wilson
chris at chris-wilson.co.uk
Sun Dec 13 11:12:00 UTC 2020
---
.../drm/i915/gt/intel_execlists_submission.c | 28 +++++++++----------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
index b1003486e169..26d704694c33 100644
--- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
+++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
@@ -1346,20 +1346,6 @@ resubmit_virtual_request(struct i915_request *rq, struct virtual_engine *ve)
{
struct intel_engine_cs *engine = rq->engine;
- spin_lock_irq(&engine->active.lock);
-
- clear_bit(I915_FENCE_FLAG_PQUEUE, &rq->fence.flags);
- WRITE_ONCE(rq->engine, &ve->base);
- ve->base.submit_request(rq);
-
- spin_unlock_irq(&engine->active.lock);
-}
-
-static void kick_siblings(struct i915_request *rq, struct intel_context *ce)
-{
- struct virtual_engine *ve = container_of(ce, typeof(*ve), context);
- struct intel_engine_cs *engine = rq->engine;
-
/* Flush concurrent rcu iterators in signal_irq_work */
if (test_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT, &rq->fence.flags)) {
/*
@@ -1375,6 +1361,20 @@ static void kick_siblings(struct i915_request *rq, struct intel_context *ce)
cpu_relax();
}
+ spin_lock_irq(&engine->active.lock);
+
+ clear_bit(I915_FENCE_FLAG_PQUEUE, &rq->fence.flags);
+ WRITE_ONCE(rq->engine, &ve->base);
+ ve->base.submit_request(rq);
+
+ spin_unlock_irq(&engine->active.lock);
+}
+
+static void kick_siblings(struct i915_request *rq, struct intel_context *ce)
+{
+ struct virtual_engine *ve = container_of(ce, typeof(*ve), context);
+ struct intel_engine_cs *engine = rq->engine;
+
/*
* This engine is now too busy to run this virtual request, so
* see if we can find an alternative engine for it to execute on.
--
2.20.1
More information about the Intel-gfx-trybot
mailing list