• Thomas Daniel's avatar
    drm/i915: Reset CSB read pointer in ring init · c0a03a2e
    Thomas Daniel authored
    A previous commit enabled execlists by default:
    
           commit 27401d12 ("drm/i915/bdw: Enable execlists by default where supported")
    
    This allowed routine testing of execlists which exposed a regression when
    resuming from suspend.  The cause was tracked down the to recent changes to the
    ring init sequence:
    
           commit 35a57ffb ("drm/i915: Only init engines once")
    
    During a suspend/resume cycle the hardware Context Status Buffer write pointer
    is reset.  However since the recent changes to the init sequence the software CSB
    read pointer is no longer reset.  This means that context status events are not
    handled correctly and new contexts are not written to the ELSP, resulting in an
    apparent GPU hang.
    
    Pending further changes to the ring init code, just move the
    ring->next_context_status_buffer initialization into gen8_init_common_ring to
    fix this regression.
    
    v2: Moved init into gen8_init_common_ring rather than context_enable after
    feedback from Daniel Vetter.  Updated commit msg to reflect this and also cite
    commits related to the regression.  Fixed bz link to correct bug.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88096
    Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Dave Gordon <david.s.gordon@intel.com>
    Signed-off-by: default avatarThomas Daniel <thomas.daniel@intel.com>
    Reviewed-by: default avatarDave Gordon <david.s.gordon@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    c0a03a2e
intel_lrc.c 56.9 KB