• C
    drm/i915: Insert a command barrier on BLT/BSD cache flushes · f0a1fb10
    Chris Wilson 提交于
    This looked like an odd regression from
    
    commit ec5cc0f9
    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: NChris Wilson <chris@chris-wilson.co.uk>
    Cc: stable@vger.kernel.org
    Acked-by: NDaniel Vetter <daniel@ffwll.ch>
    Signed-off-by: NJani Nikula <jani.nikula@intel.com>
    f0a1fb10
intel_ringbuffer.c 75.3 KB