]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Insert a command barrier on BLT/BSD cache flushes
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 22 Jan 2015 13:42:00 +0000 (13:42 +0000)
committerJani Nikula <jani.nikula@intel.com>
Mon, 9 Feb 2015 18:03:15 +0000 (20:03 +0200)
commitc6323d32d5a87f60d0aa7fdff6313700fc2289ba
tree7631f5895d3be97bef2c09f4c9404d03733eb588
parent9ad0da0794e5530c44e82c6721468703552fb488
drm/i915: Insert a command barrier on BLT/BSD cache flushes

This looked like an odd regression from

commit 230344b874a5c5889de2cff74acdc3dd9cb25bc9
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Thu Jun 12 10:28:55 2014 +0100

    drm/i915: Restrict GPU boost to the RCS engine

but in reality it undercovered a much older coherency bug. The issue that
boosting the GPU frequency on the BCS ring was masking was that we could
wake the CPU up after completion of a BCS batch and inspect memory prior
to the write cache being fully evicted. In order to serialise the
breadcrumb interrupt (and so ensure that the CPU's view of memory is
coherent) we need to perform a post-sync operation in the MI_FLUSH_DW.

v2: Fix all the MI_FLUSH_DW (bsd plus the duplication in execlists).

Also fix the invalidate_domains mask in gen8_emit_flush() for ring !=
VCS.

Testcase: gpuX-rcs-gpu-read-after-write
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: stable@vger.kernel.org
Acked-by: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/intel_lrc.c
drivers/gpu/drm/i915/intel_ringbuffer.c