• Chris Wilson's avatar
    drm/i915: Insert a command barrier on BLT/BSD cache flushes · b16a8497
    Chris Wilson authored
    commit f0a1fb10 upstream.
    
    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: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Acked-by: default avatarDaniel Vetter <daniel@ffwll.ch>
    Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    b16a8497
intel_ringbuffer.c 73.3 KB