[PATCH 60/67] drm/i915/execlists: Skip a lite-restore immediately prior to a context-completion

Chris Wilson chris at chris-wilson.co.uk
Thu Jan 11 12:37:35 UTC 2018


If we are about to do another context-switch in the near future skip
doing performing a lite-restore now. (Forcing a lite-restore just before
a context-switch effectively doubles the cost of that context-switch, so
long as we can handle the interrupt and resubmit before the GPU powers
down, which under normal conditions is expected.)

Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
---
 drivers/gpu/drm/i915/intel_lrc.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 7327957c7eb7..a4adbfab1dee 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -601,6 +601,19 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
 			if (port_count(&port[1]))
 				goto unlock;
 
+			/*
+			 * If we are about to do another context-switch in
+			 * the near future skip doing performing a lite-restore
+			 * now. (Forcing a lite-restore just before a
+			 * context-switch effectively doubles the cost of that
+			 * context-switch, so long as we can handle the
+			 * interrupt and resubmit before the GPU powers down,
+			 * which under normal conditions is expected.)
+			 */
+			if (i915_seqno_passed(intel_engine_get_seqno(engine),
+					      last->global_seqno - 1))
+				goto unlock;
+
 			/* WaIdleLiteRestore:bdw,skl
 			 * Apply the wa NOOPs to prevent
 			 * ring:HEAD == req:TAIL as we resubmit the
-- 
2.15.1



More information about the Intel-gfx-trybot mailing list