diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 15 |
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)); |