Port remaining NV4 RAMIN access from the ddx into the drm.
authorBen Skeggs <darktama@iinet.net.au>
Mon, 11 Dec 2006 13:11:42 +0000 (00:11 +1100)
committerBen Skeggs <darktama@iinet.net.au>
Mon, 11 Dec 2006 13:11:42 +0000 (00:11 +1100)
Should fix lockups seen on NV4 cards.

shared-core/nouveau_fifo.c

index 67c790b..a611e43 100644 (file)
@@ -434,13 +434,24 @@ static int nouveau_fifo_alloc(drm_device_t* dev,drm_nouveau_fifo_alloc_t* init,
                                dev_priv->cmdbuf_alloc->size,
                                NV_DMA_ACCESS_RO,
                                NV_DMA_TARGET_AGP);
-       } else {
+
+       } else if (dev_priv->card_type != NV_04) {
                cb_obj = nouveau_dma_object_create(dev,
                                dev_priv->cmdbuf_alloc->start -
                                        drm_get_resource_start(dev, 1),
                                dev_priv->cmdbuf_alloc->size,
                                NV_DMA_ACCESS_RO,
                                NV_DMA_TARGET_VIDMEM);
+       } else {
+               /* NV04 cmdbuf hack, from original ddx.. not sure of it's
+                * exact reason for existing :)  PCI access to cmdbuf in
+                * VRAM.
+                */
+               cb_obj = nouveau_dma_object_create(dev,
+                               dev_priv->cmdbuf_alloc->start,
+                               dev_priv->cmdbuf_alloc->size,
+                               NV_DMA_ACCESS_RO,
+                               NV_DMA_TARGET_PCI);
        }
        if (!cb_obj) {
                DRM_ERROR("unable to alloc object for command buffer\n");