[PATCH 8/8] repeat-csb

Chris Wilson chris at chris-wilson.co.uk
Wed Dec 27 12:45:03 UTC 2017


---
 drivers/gpu/drm/i915/intel_lrc.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index e114776b8836..49b4d8682bee 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -818,8 +818,11 @@ static void execlists_submission_tasklet(unsigned long data)
 		 */
 		__clear_bit(ENGINE_IRQ_EXECLIST, &engine->irq_posted);
 		if (unlikely(execlists->csb_head == -1)) { /* following a reset */
-			head = readl(dev_priv->regs + i915_mmio_reg_offset(RING_CONTEXT_STATUS_PTR(engine)));
-			tail = GEN8_CSB_WRITE_PTR(head);
+			do {
+				head = readl(dev_priv->regs +
+					     i915_mmio_reg_offset(RING_CONTEXT_STATUS_PTR(engine)));
+				tail = GEN8_CSB_WRITE_PTR(head);
+			} while (unlikely(tail >= GEN8_CSB_ENTRIES));
 			head = GEN8_CSB_READ_PTR(head);
 			execlists->csb_head = head;
 		} else {
-- 
2.15.1



More information about the Intel-gfx-trybot mailing list