From: Ben Skeggs <bskeggs@redhat.com>
Date: Mon, 25 Jul 2011 10:26:19 +0000 (+1000)
Subject: drm/nouveau: workaround semaphore hw bug causing unnecessary interrupts
X-Git-Tag: firefly_0821_release~3680^2~4279^2~58^2~33
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=91a8f1ea4bd98a7de888f7d56e28b72cc0c63ca1;p=firefly-linux-kernel-4.4.55.git

drm/nouveau: workaround semaphore hw bug causing unnecessary interrupts

The HW will only accept the DMA_FROM_MEMORY class for DMA_SEMAPHORE without
asking the driver to intervene.

It appears that semaphores will work correctly even without DMA_IN_MEMORY,
so lets avoid the large amount of interrupts generated by x-chan sync.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
---

diff --git a/drivers/gpu/drm/nouveau/nouveau_fence.c b/drivers/gpu/drm/nouveau/nouveau_fence.c
index c919cfc8f2fd..81116cfea275 100644
--- a/drivers/gpu/drm/nouveau/nouveau_fence.c
+++ b/drivers/gpu/drm/nouveau/nouveau_fence.c
@@ -519,7 +519,7 @@ nouveau_fence_channel_init(struct nouveau_channel *chan)
 	if (USE_SEMA(dev) && dev_priv->chipset < 0x84) {
 		struct ttm_mem_reg *mem = &dev_priv->fence.bo->bo.mem;
 
-		ret = nouveau_gpuobj_dma_new(chan, NV_CLASS_DMA_IN_MEMORY,
+		ret = nouveau_gpuobj_dma_new(chan, NV_CLASS_DMA_FROM_MEMORY,
 					     mem->start << PAGE_SHIFT,
 					     mem->size, NV_MEM_ACCESS_RW,
 					     NV_MEM_TARGET_VRAM, &obj);