aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_gem.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 29d9d21e9413..6ecfd108effa 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -233,7 +233,7 @@ i915_gem_gtt_pwrite(struct drm_device *dev, struct drm_gem_object *obj,
233 if (unwritten) 233 if (unwritten)
234#endif /* CONFIG_HIGHMEM */ 234#endif /* CONFIG_HIGHMEM */
235 { 235 {
236 vaddr = ioremap(pfn << PAGE_SHIFT, PAGE_SIZE); 236 vaddr = ioremap_wc(pfn << PAGE_SHIFT, PAGE_SIZE);
237#if WATCH_PWRITE 237#if WATCH_PWRITE
238 DRM_INFO("pwrite slow i %d o %d l %d " 238 DRM_INFO("pwrite slow i %d o %d l %d "
239 "pfn %ld vaddr %p\n", 239 "pfn %ld vaddr %p\n",
@@ -1612,9 +1612,10 @@ i915_gem_object_pin_and_relocate(struct drm_gem_object *obj,
1612 if (reloc_page != NULL) 1612 if (reloc_page != NULL)
1613 iounmap(reloc_page); 1613 iounmap(reloc_page);
1614 1614
1615 reloc_page = ioremap(dev->agp->base + 1615 reloc_page = ioremap_wc(dev->agp->base +
1616 (reloc_offset & ~(PAGE_SIZE - 1)), 1616 (reloc_offset &
1617 PAGE_SIZE); 1617 ~(PAGE_SIZE - 1)),
1618 PAGE_SIZE);
1618 last_reloc_offset = reloc_offset; 1619 last_reloc_offset = reloc_offset;
1619 if (reloc_page == NULL) { 1620 if (reloc_page == NULL) {
1620 drm_gem_object_unreference(target_obj); 1621 drm_gem_object_unreference(target_obj);
@@ -2318,7 +2319,9 @@ i915_gem_init_hws(struct drm_device *dev)
2318 dev_priv->hws_map.flags = 0; 2319 dev_priv->hws_map.flags = 0;
2319 dev_priv->hws_map.mtrr = 0; 2320 dev_priv->hws_map.mtrr = 0;
2320 2321
2321 drm_core_ioremap(&dev_priv->hws_map, dev); 2322 /* Ioremapping here is the wrong thing to do. We want cached access.
2323 */
2324 drm_core_ioremap_wc(&dev_priv->hws_map, dev);
2322 if (dev_priv->hws_map.handle == NULL) { 2325 if (dev_priv->hws_map.handle == NULL) {
2323 DRM_ERROR("Failed to map status page.\n"); 2326 DRM_ERROR("Failed to map status page.\n");
2324 memset(&dev_priv->hws_map, 0, sizeof(dev_priv->hws_map)); 2327 memset(&dev_priv->hws_map, 0, sizeof(dev_priv->hws_map));
@@ -2369,7 +2372,7 @@ i915_gem_init_ringbuffer(struct drm_device *dev)
2369 dev_priv->ring.map.flags = 0; 2372 dev_priv->ring.map.flags = 0;
2370 dev_priv->ring.map.mtrr = 0; 2373 dev_priv->ring.map.mtrr = 0;
2371 2374
2372 drm_core_ioremap(&dev_priv->ring.map, dev); 2375 drm_core_ioremap_wc(&dev_priv->ring.map, dev);
2373 if (dev_priv->ring.map.handle == NULL) { 2376 if (dev_priv->ring.map.handle == NULL) {
2374 DRM_ERROR("Failed to map ringbuffer.\n"); 2377 DRM_ERROR("Failed to map ringbuffer.\n");
2375 memset(&dev_priv->ring, 0, sizeof(dev_priv->ring)); 2378 memset(&dev_priv->ring, 0, sizeof(dev_priv->ring));