[Nouveau] [PATCH] drm/nv84+: fix fence context seqno's

Ted Percival ted at tedp.id.au
Mon Sep 22 09:23:03 PDT 2014


On 09/22/2014 03:08 AM, Maarten Lankhorst wrote:
> This fixes a regression introduced by "drm/nouveau: rework to new fence interface"
> (commit 29ba89b2371d466).
> 
> The fence sequence should not be reset after creation, the old value is used instead.
> On destruction the final value is written, to prevent another source of accidental
> wraparound in case of a channel being destroyed after a hang, and unblocking any other
> channel that may wait on the about-to-be-deleted channel to signal.
> 
> I'm nothing if not optimistic about any hope of recovery from that. ;-)
> 
> Reported-by: Ted Percival <ted at tedp.id.au>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at canonical.com>
> ---
> diff --git a/drivers/gpu/drm/nouveau/nv84_fence.c b/drivers/gpu/drm/nouveau/nv84_fence.c
> index 7b372a68aa4e..4138db4d8291 100644
> --- a/drivers/gpu/drm/nouveau/nv84_fence.c
> +++ b/drivers/gpu/drm/nouveau/nv84_fence.c
> @@ -120,6 +120,7 @@ nv84_fence_context_del(struct nouveau_channel *chan)
>  		nouveau_bo_vma_del(bo, &fctx->dispc_vma[i]);
>  	}
>  
> +	nouveau_bo_wr32(priv->bo, chan->chid * 16 / 4, fctx->base.sequence);
>  	nouveau_bo_vma_del(priv->bo, &fctx->vma_gart);
>  	nouveau_bo_vma_del(priv->bo, &fctx->vma);
>  	nouveau_fence_context_del(&fctx->base);
> @@ -159,8 +160,6 @@ nv84_fence_context_new(struct nouveau_channel *chan)
>  		ret = nouveau_bo_vma_add(bo, cli->vm, &fctx->dispc_vma[i]);
>  	}
>  
> -	nouveau_bo_wr32(priv->bo, chan->chid * 16/4, 0x00000000);
> -
>  	if (ret)
>  		nv84_fence_context_del(chan);
>  	return ret;
> 

This works, thanks :-)

Tested-by: Ted Percival <ted at tedp.id.au>


More information about the Nouveau mailing list