drm/msm: fix ->last_fence() after recover
authorRob Clark <robdclark@gmail.com>
Thu, 17 Mar 2016 14:18:38 +0000 (10:18 -0400)
committerRob Clark <robdclark@gmail.com>
Sun, 8 May 2016 14:22:15 +0000 (10:22 -0400)
It is no longer true that we discard all in-flight submits on recover
(these days we only discard the first one that hung).  After the first
re-submitted batch completes it would overwrite the fence with a correct
value, but there would be a window of time which showed all re-submitted
batches as already complete.

Signed-off-by: Rob Clark <robdclark@gmail.com>
drivers/gpu/drm/msm/adreno/adreno_gpu.c

index 95aed377b933b570df83de62f16b9d5c19e404e4..1d5a714d24a6b9ce66bbbc8d510114974585e581 100644 (file)
@@ -120,8 +120,8 @@ void adreno_recover(struct msm_gpu *gpu)
        /* reset ringbuffer: */
        gpu->rb->cur = gpu->rb->start;
 
-       /* reset completed fence seqno, just discard anything pending: */
-       adreno_gpu->memptrs->fence = gpu->fctx->last_fence;
+       /* reset completed fence seqno: */
+       adreno_gpu->memptrs->fence = gpu->fctx->completed_fence;
        adreno_gpu->memptrs->rptr  = 0;
        adreno_gpu->memptrs->wptr  = 0;