From 0e1df6216e7ce3a69d4311e4685613e57129285f Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied@redhat.com>
Date: Mon, 3 Nov 2008 09:52:25 +1000
Subject: radeon: add mtrr support for VRAM aperture.

---
 linux-core/radeon_gem.c  | 6 ++++++
 shared-core/radeon_drv.h | 3 +++
 2 files changed, 9 insertions(+)

diff --git a/linux-core/radeon_gem.c b/linux-core/radeon_gem.c
index f39e8b47..2e20de3c 100644
--- a/linux-core/radeon_gem.c
+++ b/linux-core/radeon_gem.c
@@ -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);
diff --git a/shared-core/radeon_drv.h b/shared-core/radeon_drv.h
index 83478a27..c6ebf9b6 100644
--- a/shared-core/radeon_drv.h
+++ b/shared-core/radeon_drv.h
@@ -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 {
-- 
cgit v1.2.3