summaryrefslogtreecommitdiff
path: root/shared-core
diff options
context:
space:
mode:
authorBen Skeggs <darktama@iinet.net.au>2006-12-12 00:11:42 +1100
committerBen Skeggs <darktama@iinet.net.au>2006-12-12 00:11:42 +1100
commit1a40f3318c2660b83f64f7ed189d0f1692644ee4 (patch)
tree9dd238581f10208d9d2eb7495d81af51ffeeb7a2 /shared-core
parent30acb90a6077798b1e0c4927273067500905d6d1 (diff)
Port remaining NV4 RAMIN access from the ddx into the drm.
Should fix lockups seen on NV4 cards.
Diffstat (limited to 'shared-core')
-rw-r--r--shared-core/nouveau_fifo.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/shared-core/nouveau_fifo.c b/shared-core/nouveau_fifo.c
index 67c790b4..a611e438 100644
--- a/shared-core/nouveau_fifo.c
+++ b/shared-core/nouveau_fifo.c
@@ -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");