[Intel-gfx] [PATCH 1/7] drm/i915/execlists: Skip lite restore on the currently executing request
Chris Wilson
chris at chris-wilson.co.uk
Wed Apr 25 10:52:48 UTC 2018
When WaIdleLiteRestore isn't enough.
---
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 029901a8fa38..5c50263e45d3 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -639,6 +639,19 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
if (port_count(&port[1]))
goto unlock;
+ /*
+ * Skip invoking a lite-restore if we know we have already
+ * started processing the last request queued to HW. This
+ * prevents a mystery *unrecoverable* hang on gen8, maybe
+ * related to updating TAIL within a cacheline of HEAD? (As
+ * there is still a delay between submitting the ESLP update
+ * and HW responding, we may still encounter whatever condition
+ * trips up, just less often.)
+ */
+ if (i915_seqno_passed(intel_engine_get_seqno(engine),
+ last->global_seqno - 1))
+ goto unlock;
+
/*
* WaIdleLiteRestore:bdw,skl
* Apply the wa NOOPs to prevent
--
2.17.0
More information about the Intel-gfx
mailing list