Since push buffers may reside in system memory or VRAM (iomem), they
must be accessed via the proper functions instead of just dereferencing
a pointer which might be an iomem cookie.

Remove the redundant member nouveau_channel::dma.pushbuf.

Signed-off-by: Pekka Paalanen <[email protected]>
---
 drivers/gpu/drm/nouveau/nouveau_dma.c  |    1 -
 drivers/gpu/drm/nouveau/nouveau_dma.h  |    5 ++---
 drivers/gpu/drm/nouveau/nouveau_drv.h  |    3 +--
 drivers/gpu/drm/nouveau/nv50_display.c |    1 -
 4 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_dma.c 
b/drivers/gpu/drm/nouveau/nouveau_dma.c
index 7766af4..e315f01 100644
--- a/drivers/gpu/drm/nouveau/nouveau_dma.c
+++ b/drivers/gpu/drm/nouveau/nouveau_dma.c
@@ -56,7 +56,6 @@ nouveau_dma_init(struct nouveau_channel *chan)
        ret = nouveau_bo_map(chan->pushbuf_bo);
        if (ret)
                return ret;
-       chan->dma.pushbuf = chan->pushbuf_bo->kmap.virtual;
 
        /* Map M2MF notifier object - fbcon. */
        if (drm_core_check_feature(dev, DRIVER_MODESET)) {
diff --git a/drivers/gpu/drm/nouveau/nouveau_dma.h 
b/drivers/gpu/drm/nouveau/nouveau_dma.h
index f15873f..c8674f8 100644
--- a/drivers/gpu/drm/nouveau/nouveau_dma.h
+++ b/drivers/gpu/drm/nouveau/nouveau_dma.h
@@ -102,7 +102,7 @@ OUT_RING(struct nouveau_channel *chan, int data)
        NV_INFO(chan->dev, "Ch%d/0x%08x: 0x%08x\n",
                chan->id, chan->dma.cur << 2, data);
 #endif
-       chan->dma.pushbuf[chan->dma.cur++] = data;
+       nouveau_bo_wr32(chan->pushbuf_bo, chan->dma.cur++, data);
 }
 
 static inline void
@@ -114,9 +114,8 @@ BEGIN_RING(struct nouveau_channel *chan, int subc, int 
mthd, int size)
 #define READ_GET() ((nvchan_rd32(chan->user_get) - chan->pushbuf_base) >> 2)
 
 #define WRITE_PUT(val) do {                                                    
\
-       volatile uint32_t tmp;                                                 \
        DRM_MEMORYBARRIER();                                                   \
-       tmp = chan->dma.pushbuf[0];                                            \
+       nouveau_bo_rd32(chan->pushbuf_bo, 0);                                  \
        nvchan_wr32(chan->user_put, ((val) << 2) + chan->pushbuf_base);        \
        chan->dma.put = (val);                                                 \
 } while (0)
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h 
b/drivers/gpu/drm/nouveau/nouveau_drv.h
index 44a7ab5..eb32532 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.h
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
@@ -226,8 +226,7 @@ struct nouveau_channel
                int free;
                int cur;
                int put;
-
-               volatile uint32_t *pushbuf;
+               /* access via pushbuf_bo */
        } dma;
 
        uint32_t sw_subchannel[8];
diff --git a/drivers/gpu/drm/nouveau/nv50_display.c 
b/drivers/gpu/drm/nouveau/nv50_display.c
index b81dc16..99feea7 100644
--- a/drivers/gpu/drm/nouveau/nv50_display.c
+++ b/drivers/gpu/drm/nouveau/nv50_display.c
@@ -328,7 +328,6 @@ nv50_display_init(struct drm_device *dev)
        evo->dma.put = 0;
        evo->dma.cur = evo->dma.put;
        evo->dma.free = evo->dma.max - evo->dma.cur;
-       evo->dma.pushbuf = evo->pushbuf_bo->kmap.virtual;
 
        RING_SPACE(evo, NOUVEAU_DMA_SKIPS);
        for (i = 0; i < NOUVEAU_DMA_SKIPS; i++)
-- 
1.6.3.3

_______________________________________________
Nouveau mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/nouveau

Reply via email to