[CI 03/21] drm/i915/execlists: Skip a lite-restore immediately prior to a context-completion

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxxxxx>
Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx>
Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx>
Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx>
---
 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 6191a2e59e8a..2edd57b3d53e 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -628,6 +628,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.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux