drm/i915/gt: Flush before changing register state
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 25 Jan 2021 22:02:47 +0000 (22:02 +0000)
committerSalvatore Bonaccorso <carnil@debian.org>
Tue, 2 Mar 2021 16:49:25 +0000 (16:49 +0000)
Origin: https://git.kernel.org/linus/d5109f739c9f14a3bda249cb48b16de1065932f0

Flush; invalidate; change registers; invalidate; flush.

Will this finally work on every device? Or will Baytrail complain again?

On the positive side, we immediately see the benefit of having hsw-gt1 in
CI.

Fixes: ace44e13e577 ("drm/i915/gt: Clear CACHE_MODE prior to clearing residuals")
Testcase: igt/gem_render_tiled_blits # hsw-gt1
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Akeem G Abodunrin <akeem.g.abodunrin@intel.com>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210125220247.31701-1-chris@chris-wilson.co.uk
(cherry picked from commit d30bbd62b1bfd9e0a33c3583c5a9e5d66f60cbd7)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Gbp-Pq: Topic bugfix/x86
Gbp-Pq: Name drm-i915-gt-Flush-before-changing-register-state.patch

drivers/gpu/drm/i915/gt/gen7_renderclear.c

index c50b18dd67be126dcbc4fe676ef845f9c85f92f9..e53b409012c00a918039a56bdc2288d4fe5c6482 100644 (file)
@@ -393,6 +393,7 @@ static void emit_batch(struct i915_vma * const vma,
                                                     desc_count);
 
        /* Reset inherited context registers */
+       gen7_emit_pipeline_flush(&cmds);
        gen7_emit_pipeline_invalidate(&cmds);
        batch_add(&cmds, MI_LOAD_REGISTER_IMM(2));
        batch_add(&cmds, i915_mmio_reg_offset(CACHE_MODE_0_GEN7));