[PATCH v2 2/2] drm/i915: Mark bonded requests as non-preemptable

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Wed May 20 13:57:33 UTC 2020


From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

Once bonded requests are executing in parallel it is at least sub-
optimal to preempt one of them and could even lead to GPU hangs with
media workloads.

Mark the bonded pairs as non-preemptable so once running they remain in
lock-step.

v2:
 * No preempt flag is already handled in effective_prio. (Chris)

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Suggested-by: Xiaogang Li <xiaogang.li at intel.com>
Cc: Chris Wilson <chris at chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/gt/intel_lrc.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 3e367f6e4963..0f535d6bad41 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -4928,6 +4928,9 @@ static void execlists_park(struct intel_engine_cs *engine)
 static void
 mark_bonded_pair(struct i915_request *rq, struct i915_request *signal)
 {
+	set_bit(I915_FENCE_FLAG_NOPREEMPT, &rq->fence.flags);
+	set_bit(I915_FENCE_FLAG_NOPREEMPT, &signal->fence.flags);
+
 	intel_context_set_single_submission(rq->context);
 	intel_context_set_single_submission(signal->context);
 }
-- 
2.20.1



More information about the Intel-gfx-trybot mailing list