• Daniel Vetter's avatar
    drm/i915: hold forcewake around ring hw init · b7884eb4
    Daniel Vetter authored
    Empirical evidence suggests that we need to: On at least one ivb
    machine when running the hangman i-g-t test, the rings don't properly
    initialize properly - the RING_START registers seems to be stuck at
    all zeros.
    
    Holding forcewake around this register init sequences makes chip reset
    reliable again. Note that this is not the first such issue:
    
    commit f01db988
    Author: Sean Paul <seanpaul@chromium.org>
    Date:   Fri Mar 16 12:43:22 2012 -0400
    
        drm/i915: Add wait_for in init_ring_common
    
    added delay loops to make RING_START and RING_CTL initialization
    reliable on the blt ring at boot-up. So I guess it won't hurt if we do
    this unconditionally for all force_wake needing gpus.
    
    To avoid copy&pasting of the HAS_FORCE_WAKE check I've added a new
    intel_info bit for that.
    
    v2: Fixup missing commas in static struct and properly handling the
    error case in init_ring_common, both noticed by Jani Nikula.
    
    Cc: stable@vger.kernel.org
    Reported-and-tested-by: default avatarYang Guang <guang.a.yang@intel.com>
    Reviewed-by: default avatarEugeni Dodonov <eugeni.dodonov@intel.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50522Signed-Off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    b7884eb4
i915_drv.c 32.6 KB