• Rob Clark's avatar
    drm/msm/a6xx: Clear shadow on suspend · e8b0b994
    Rob Clark authored
    Clear the shadow rptr on suspend.  Otherwise, when we resume, we can
    have a stale value until CP_WHERE_AM_I executes.  If we suspend near
    the ringbuffer wraparound point, this can lead to a chicken/egg
    situation where we are waiting for ringbuffer space to write the
    CP_WHERE_AM_I (or CP_INIT) packet, because we mistakenly believe that
    the ringbuffer is full (due to stale rptr value in the shadow).
    
    Fixes errors like:
    
      [drm:adreno_wait_ring [msm]] *ERROR* timeout waiting for space in ringbuffer 0
    
    in the resume path.
    
    Fixes: d3a569fc ("drm/msm: a6xx: Use WHERE_AM_I for eligible targets")
    Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
    e8b0b994
a6xx_gpu.c 39.1 KB