From: Ben Skeggs Date: Wed, 29 Sep 2010 23:09:42 +0000 (+1000) Subject: drm/nv50: prevent (IB_PUT == IB_GET) for occurring unless idle X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=62841ab726def838472dfaaee571a0d30a2ce1e0;p=deliverable%2Flinux.git drm/nv50: prevent (IB_PUT == IB_GET) for occurring unless idle Should fix a DMA race condition I've never seen myself, but could be the culprit in some random hangs that have been reported. Signed-off-by: Ben Skeggs --- diff --git a/drivers/gpu/drm/nouveau/nouveau_dma.c b/drivers/gpu/drm/nouveau/nouveau_dma.c index 9d27acda87e2..eb24e2b05193 100644 --- a/drivers/gpu/drm/nouveau/nouveau_dma.c +++ b/drivers/gpu/drm/nouveau/nouveau_dma.c @@ -214,7 +214,7 @@ nv50_dma_push_wait(struct nouveau_channel *chan, int count) chan->dma.ib_free = get - chan->dma.ib_put; if (chan->dma.ib_free <= 0) - chan->dma.ib_free += chan->dma.ib_max + 1; + chan->dma.ib_free += chan->dma.ib_max; } return 0;