aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Airlie <airlied@linux.ie>2008-07-15 01:48:05 -0400
committerDave Airlie <airlied@linux.ie>2008-07-15 01:48:05 -0400
commit242e3df80b8d25ed681c278512df0993725f25dd (patch)
tree28dcd053d5c5203d8a952f0c1b5f354c3c7d06f7
parent50515af207d410c9f228380e529c56f43c3de0bd (diff)
drm/radeon: fixup issue with radeon and PAT support.
With new userspace libpciaccess we can get a conflicting mapping on the PCIE GART table in the video RAM. Always try and map it _wc. Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--drivers/gpu/drm/drm_memory.c5
-rw-r--r--drivers/gpu/drm/radeon/radeon_cp.c2
-rw-r--r--include/drm/drmP.h1
3 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_memory.c b/drivers/gpu/drm/drm_memory.c
index 845081b44f63..0177012845c6 100644
--- a/drivers/gpu/drm/drm_memory.c
+++ b/drivers/gpu/drm/drm_memory.c
@@ -167,6 +167,11 @@ void drm_core_ioremap(struct drm_map *map, struct drm_device *dev)
167} 167}
168EXPORT_SYMBOL(drm_core_ioremap); 168EXPORT_SYMBOL(drm_core_ioremap);
169 169
170void drm_core_ioremap_wc(struct drm_map *map, struct drm_device *dev)
171{
172 map->handle = ioremap_wc(map->offset, map->size);
173}
174EXPORT_SYMBOL(drm_core_ioremap_wc);
170void drm_core_ioremapfree(struct drm_map *map, struct drm_device *dev) 175void drm_core_ioremapfree(struct drm_map *map, struct drm_device *dev)
171{ 176{
172 if (!map->handle || !map->size) 177 if (!map->handle || !map->size)
diff --git a/drivers/gpu/drm/radeon/radeon_cp.c b/drivers/gpu/drm/radeon/radeon_cp.c
index e53158f0ecb5..f0de81a5689d 100644
--- a/drivers/gpu/drm/radeon/radeon_cp.c
+++ b/drivers/gpu/drm/radeon/radeon_cp.c
@@ -1154,7 +1154,7 @@ static int radeon_do_init_cp(struct drm_device * dev, drm_radeon_init_t * init)
1154 dev_priv->gart_info.mapping.size = 1154 dev_priv->gart_info.mapping.size =
1155 dev_priv->gart_info.table_size; 1155 dev_priv->gart_info.table_size;
1156 1156
1157 drm_core_ioremap(&dev_priv->gart_info.mapping, dev); 1157 drm_core_ioremap_wc(&dev_priv->gart_info.mapping, dev);
1158 dev_priv->gart_info.addr = 1158 dev_priv->gart_info.addr =
1159 dev_priv->gart_info.mapping.handle; 1159 dev_priv->gart_info.mapping.handle;
1160 1160
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 0764b662b339..1c1b13e29223 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1089,6 +1089,7 @@ extern int drm_mm_remove_space_from_tail(struct drm_mm *mm, unsigned long size);
1089extern int drm_mm_add_space_to_tail(struct drm_mm *mm, unsigned long size); 1089extern int drm_mm_add_space_to_tail(struct drm_mm *mm, unsigned long size);
1090 1090
1091extern void drm_core_ioremap(struct drm_map *map, struct drm_device *dev); 1091extern void drm_core_ioremap(struct drm_map *map, struct drm_device *dev);
1092extern void drm_core_ioremap_wc(struct drm_map *map, struct drm_device *dev);
1092extern void drm_core_ioremapfree(struct drm_map *map, struct drm_device *dev); 1093extern void drm_core_ioremapfree(struct drm_map *map, struct drm_device *dev);
1093 1094
1094static __inline__ struct drm_map *drm_core_findmap(struct drm_device *dev, 1095static __inline__ struct drm_map *drm_core_findmap(struct drm_device *dev,