• Chris Wilson's avatar
    drm/i915: Prevent TLB error on first execution on SNB · 5e4f5189
    Chris Wilson authored
    Long ago I found that I was getting sporadic errors when booting SNB,
    with the symptom being that the first batch died with IPEHR != *ACTHD,
    typically caused by the TLB being invalid. These magically disappeared
    if I held the forcewake during the entire ring initialisation sequence.
    (It can probably be shortened to a short critical section, but the whole
    initialisation is full of register writes and so we would be taking and
    releasing forcewake almost continually, and so holding it over the
    entire sequence will probably be a net win!)
    
    Note some of the kernels I encounted the issue already had the deferred
    forcewake release, so it is still relevant.
    
    I know that there have been a few other reports with similar failure
    conditions on SNB, I think such as
    References: https://bugs.freedesktop.org/show_bug.cgi?id=80913
    
    v2: Wrap i915_gem_init_hw() with its own security blanket as we take
    that path following resume and reset.
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
    5e4f5189
i915_gem.c 136 KB