drm/nv50-nvc0: lookup pushbuf virtual address on dma_push
authorBen Skeggs <bskeggs@redhat.com>
Tue, 7 Jun 2011 03:23:47 +0000 (13:23 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Thu, 23 Jun 2011 06:00:22 +0000 (16:00 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_dma.c

index 4b29429..00bc6ea 100644 (file)
@@ -167,8 +167,13 @@ nv50_dma_push(struct nouveau_channel *chan, struct nouveau_bo *bo,
              int delta, int length)
 {
        struct nouveau_bo *pb = chan->pushbuf_bo;
-       uint64_t offset = bo->vma.offset + delta;
+       struct nouveau_vma *vma;
        int ip = (chan->dma.ib_put * 2) + chan->dma.ib_base;
+       u64 offset;
+
+       vma = nouveau_bo_vma_find(bo, chan->vm);
+       BUG_ON(!vma);
+       offset = vma->offset + delta;
 
        BUG_ON(chan->dma.ib_free < 1);
        nouveau_bo_wr32(pb, ip++, lower_32_bits(offset));