Two things:
- ring->virtual start is an __iomem pointer, treat it accordingly.
- dev_priv->status_page.page_addr is now always a cpu addr, no pointer
  casting needed for that.

Take the opportunity to remove the unnecessary drm indirection when
setting up the ringbuffer iomapping.

Signed-off-by: Daniel Vetter <[email protected]>
---
 drivers/gpu/drm/i915/i915_dma.c         |    2 +-
 drivers/gpu/drm/i915/intel_ringbuffer.c |   39 +++++++++---------------------
 drivers/gpu/drm/i915/intel_ringbuffer.h |    5 +--
 3 files changed, 15 insertions(+), 31 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index f4ae172..dfaa0b5 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -256,7 +256,7 @@ static int i915_dma_resume(struct drm_device * dev)
 
        DRM_DEBUG_DRIVER("%s\n", __func__);
 
-       if (ring->map.handle == NULL) {
+       if (ring->virtual_start == NULL) {
                DRM_ERROR("can not ioremap virtual address for"
                          " ring buffer\n");
                return -ENOMEM;
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c 
b/drivers/gpu/drm/i915/intel_ringbuffer.c
index efec21a..ee8dabf 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -977,20 +977,14 @@ static int intel_init_ring_buffer(struct drm_device *dev,
        if (ret)
                goto err_unref;
 
-       ring->map.size = ring->size;
-       ring->map.offset = dev->agp->base + obj->gtt_offset;
-       ring->map.type = 0;
-       ring->map.flags = 0;
-       ring->map.mtrr = 0;
-
-       drm_core_ioremap_wc(&ring->map, dev);
-       if (ring->map.handle == NULL) {
+       ring->virtual_start = ioremap_wc(dev->agp->base + obj->gtt_offset,
+                                        ring->size);
+       if (ring->virtual_start == NULL) {
                DRM_ERROR("Failed to map ringbuffer.\n");
                ret = -EINVAL;
                goto err_unpin;
        }
 
-       ring->virtual_start = ring->map.handle;
        ret = ring->init(ring);
        if (ret)
                goto err_unmap;
@@ -1006,7 +1000,7 @@ static int intel_init_ring_buffer(struct drm_device *dev,
        return 0;
 
 err_unmap:
-       drm_core_ioremapfree(&ring->map, dev);
+       iounmap(ring->virtual_start);
 err_unpin:
        i915_gem_object_unpin(obj);
 err_unref:
@@ -1034,7 +1028,7 @@ void intel_cleanup_ring_buffer(struct intel_ring_buffer 
*ring)
 
        I915_WRITE_CTL(ring, 0);
 
-       drm_core_ioremapfree(&ring->map, ring->dev);
+       iounmap(ring->virtual_start);
 
        i915_gem_object_unpin(ring->obj);
        drm_gem_object_unreference(&ring->obj->base);
@@ -1048,7 +1042,7 @@ void intel_cleanup_ring_buffer(struct intel_ring_buffer 
*ring)
 
 static int intel_wrap_ring_buffer(struct intel_ring_buffer *ring)
 {
-       unsigned int *virt;
+       uint32_t __iomem *virt;
        int rem = ring->size - ring->tail;
 
        if (ring->space < rem) {
@@ -1057,12 +1051,10 @@ static int intel_wrap_ring_buffer(struct 
intel_ring_buffer *ring)
                        return ret;
        }
 
-       virt = (unsigned int *)(ring->virtual_start + ring->tail);
-       rem /= 8;
-       while (rem--) {
-               *virt++ = MI_NOOP;
-               *virt++ = MI_NOOP;
-       }
+       virt = ring->virtual_start + ring->tail;
+       rem /= 4;
+       while (rem--)
+               iowrite32(MI_NOOP, virt++);
 
        ring->tail = 0;
        ring->space = ring_space(ring);
@@ -1425,20 +1417,13 @@ int intel_render_ring_init_dri(struct drm_device *dev, 
u64 start, u32 size)
        if (IS_I830(ring->dev))
                ring->effective_size -= 128;
 
-       ring->map.offset = start;
-       ring->map.size = size;
-       ring->map.type = 0;
-       ring->map.flags = 0;
-       ring->map.mtrr = 0;
-
-       drm_core_ioremap_wc(&ring->map, dev);
-       if (ring->map.handle == NULL) {
+       ring->virtual_start = ioremap_wc(start, size);
+       if (ring->virtual_start == NULL) {
                DRM_ERROR("can not ioremap virtual address for"
                          " ring buffer\n");
                return -ENOMEM;
        }
 
-       ring->virtual_start = (void __force __iomem *)ring->map.handle;
        return 0;
 }
 
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h 
b/drivers/gpu/drm/i915/intel_ringbuffer.h
index fb35922..893742d 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.h
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
@@ -2,7 +2,7 @@
 #define _INTEL_RINGBUFFER_H_
 
 struct  intel_hw_status_page {
-       u32     __iomem *page_addr;
+       u32             *page_addr;
        unsigned int    gfx_addr;
        struct          drm_i915_gem_object *obj;
 };
@@ -117,7 +117,6 @@ struct  intel_ring_buffer {
        u32 outstanding_lazy_request;
 
        wait_queue_head_t irq_queue;
-       drm_local_map_t map;
 
        void *private;
 };
@@ -151,7 +150,7 @@ static inline u32
 intel_read_status_page(struct intel_ring_buffer *ring,
                       int reg)
 {
-       return ioread32(ring->status_page.page_addr + reg);
+       return ring->status_page.page_addr[reg];
 }
 
 /**
-- 
1.7.7.6

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to