From e169b23e66575856c5712b8f2162e305d8560d6b Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 21 Oct 2008 16:25:42 +0200 Subject: linux-moblin: Add 2.6.27 moblin kernel This will be the default moblin kernel. We also moved the 2.6.27-rc* kernels to meta-moblin. --- ...use-ioremap_wc-in-i915-instead-of-ioremap.patch | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 meta-moblin/packages/linux/linux-moblin-2.6.27-rc6/0022-drm-use-ioremap_wc-in-i915-instead-of-ioremap.patch (limited to 'meta-moblin/packages/linux/linux-moblin-2.6.27-rc6/0022-drm-use-ioremap_wc-in-i915-instead-of-ioremap.patch') diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.27-rc6/0022-drm-use-ioremap_wc-in-i915-instead-of-ioremap.patch b/meta-moblin/packages/linux/linux-moblin-2.6.27-rc6/0022-drm-use-ioremap_wc-in-i915-instead-of-ioremap.patch new file mode 100644 index 000000000..8e6cbe95a --- /dev/null +++ b/meta-moblin/packages/linux/linux-moblin-2.6.27-rc6/0022-drm-use-ioremap_wc-in-i915-instead-of-ioremap.patch @@ -0,0 +1,58 @@ +commit d9f2382adde582f8792ad96e9570716bcbea21a0 +Author: Eric Anholt +Date: Tue Sep 23 14:50:57 2008 -0700 + + drm: Use ioremap_wc in i915_driver instead of ioremap, since we always want WC. + + Fixes failure to map the ringbuffer when PAT tells us we don't get to do + uncached on something that's already mapped WC, or something along those lines. + + Signed-off-by: Eric Anholt + +diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c +index 29d9d21..6ecfd10 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, + if (unwritten) + #endif /* CONFIG_HIGHMEM */ + { +- vaddr = ioremap(pfn << PAGE_SHIFT, PAGE_SIZE); ++ vaddr = ioremap_wc(pfn << PAGE_SHIFT, PAGE_SIZE); + #if WATCH_PWRITE + DRM_INFO("pwrite slow i %d o %d l %d " + "pfn %ld vaddr %p\n", +@@ -1612,9 +1612,10 @@ i915_gem_object_pin_and_relocate(struct drm_gem_object *obj, + if (reloc_page != NULL) + iounmap(reloc_page); + +- reloc_page = ioremap(dev->agp->base + +- (reloc_offset & ~(PAGE_SIZE - 1)), +- PAGE_SIZE); ++ reloc_page = ioremap_wc(dev->agp->base + ++ (reloc_offset & ++ ~(PAGE_SIZE - 1)), ++ PAGE_SIZE); + last_reloc_offset = reloc_offset; + if (reloc_page == NULL) { + drm_gem_object_unreference(target_obj); +@@ -2318,7 +2319,9 @@ i915_gem_init_hws(struct drm_device *dev) + dev_priv->hws_map.flags = 0; + dev_priv->hws_map.mtrr = 0; + +- drm_core_ioremap(&dev_priv->hws_map, dev); ++ /* Ioremapping here is the wrong thing to do. We want cached access. ++ */ ++ drm_core_ioremap_wc(&dev_priv->hws_map, dev); + if (dev_priv->hws_map.handle == NULL) { + DRM_ERROR("Failed to map status page.\n"); + memset(&dev_priv->hws_map, 0, sizeof(dev_priv->hws_map)); +@@ -2369,7 +2372,7 @@ i915_gem_init_ringbuffer(struct drm_device *dev) + dev_priv->ring.map.flags = 0; + dev_priv->ring.map.mtrr = 0; + +- drm_core_ioremap(&dev_priv->ring.map, dev); ++ drm_core_ioremap_wc(&dev_priv->ring.map, dev); + if (dev_priv->ring.map.handle == NULL) { + DRM_ERROR("Failed to map ringbuffer.\n"); + memset(&dev_priv->ring, 0, sizeof(dev_priv->ring)); -- cgit v1.2.3