]> Git Repo - linux.git/commitdiff
drm/i915/gt: Flush gen7 even harder
authorChris Wilson <[email protected]>
Tue, 12 Nov 2019 16:09:41 +0000 (16:09 +0000)
committerChris Wilson <[email protected]>
Tue, 12 Nov 2019 16:53:58 +0000 (16:53 +0000)
live_blt is still failing on hsw, showing the hallmark of incoherency.
Since we are fairly certain that the interrupt is after the seqno is
visible, the other possibility is that the seqno is before the writes to
memory are flushed. Throw in an TLB invalidate before the breadcrumb as
we are reasonably confident that forces a CS stall.

References: f9228f765873 ("drm/i915/gt: Try an extra flush on the Haswell blitter")
References: https://bugs.freedesktop.org/show_bug.cgi?id=112147
Testcase: igt/i915_selftest/live_blt
Signed-off-by: Chris Wilson <[email protected]>
Cc: Mika Kuoppala <[email protected]>
Acked-by: Mika Kuoppala <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
drivers/gpu/drm/i915/gt/intel_ring_submission.c

index fc29df7128108fda2ee3ff5e80ea91bc950baf39..e8bee44add3406a72516cb18745a511b35db6177 100644 (file)
@@ -454,8 +454,9 @@ static u32 *gen7_xcs_emit_breadcrumb(struct i915_request *rq, u32 *cs)
        GEM_BUG_ON(i915_request_active_timeline(rq)->hwsp_ggtt != rq->engine->status_page.vma);
        GEM_BUG_ON(offset_in_page(i915_request_active_timeline(rq)->hwsp_offset) != I915_GEM_HWS_SEQNO_ADDR);
 
-       *cs++ = MI_FLUSH_DW;
-       *cs++ = 0;
+       *cs++ = (MI_FLUSH_DW | MI_INVALIDATE_TLB |
+                MI_FLUSH_DW_STORE_INDEX | MI_FLUSH_DW_OP_STOREDW);
+       *cs++ = I915_GEM_HWS_SCRATCH_ADDR | MI_FLUSH_DW_USE_GTT;
        *cs++ = 0;
 
        *cs++ = MI_FLUSH_DW | MI_FLUSH_DW_OP_STOREDW | MI_FLUSH_DW_STORE_INDEX;
This page took 0.059624 seconds and 4 git commands to generate.