radeon: add mtrr support for VRAM aperture.
authorDave Airlie <airlied@redhat.com>
Sun, 2 Nov 2008 23:52:25 +0000 (09:52 +1000)
committerDave Airlie <airlied@redhat.com>
Sun, 2 Nov 2008 23:52:25 +0000 (09:52 +1000)
linux-core/radeon_gem.c
shared-core/radeon_drv.h

index f39e8b4..2e20de3 100644 (file)
@@ -947,6 +947,10 @@ void radeon_init_memory_map(struct drm_device *dev)
                        - dev_priv->fb_location;
        }
 
+       /* add an MTRR for the VRAM */
+       dev_priv->aper_size = aper_size;
+       dev_priv->vram_mtrr = mtrr_add(dev_priv->fb_aper_offset, dev_priv->aper_size, MTRR_TYPE_WRCOMB, 1);
+
 }
 
 /* init memory manager - start with all of VRAM and a 32MB GART aperture for now */
@@ -1037,6 +1041,8 @@ void radeon_gem_mm_fini(struct drm_device *dev)
                DRM_DEBUG("delaying takedown of VRAM memory\n");
        }
 
+       if (dev_priv->vram_mtrr)
+               mtrr_del(dev_priv->vram_mtrr, dev_priv->fb_aper_offset, dev_priv->aper_size);
        mutex_unlock(&dev->struct_mutex);
 
        drm_bo_driver_finish(dev);
index 83478a2..c6ebf9b 100644 (file)
@@ -462,6 +462,9 @@ typedef struct drm_radeon_private {
        struct radeon_pm_regs pmregs;
        int irq_emitted;
        atomic_t irq_received;
+
+       uint32_t aper_size;
+       int vram_mtrr;
 } drm_radeon_private_t;
 
 typedef struct drm_radeon_buf_priv {