>From 4f000ec18079924b1191118dccf468bba50c402d Mon Sep 17 00:00:00 2001 From: Thomas Schlichter Date: Sat, 17 Oct 2009 21:29:43 +0200 Subject: [PATCH 5/6] Use MTRR for write combining ioremap If PAT is not enabled, set up write combining MTRR entries in ioremap(). Signed-off-by: Thomas Schlichter --- arch/x86/mm/ioremap.c | 15 ++++++++++----- 1 files changed, 10 insertions(+), 5 deletions(-) diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index 334e63c..abe40fa 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c @@ -21,6 +21,7 @@ #include #include #include +#include #include "physaddr.h" @@ -268,11 +269,15 @@ EXPORT_SYMBOL(ioremap_nocache); */ void __iomem *ioremap_wc(resource_size_t phys_addr, unsigned long size) { - if (pat_enabled) - return __ioremap_caller(phys_addr, size, _PAGE_CACHE_WC, - __builtin_return_address(0)); - else - return ioremap_nocache(phys_addr, size); + if (!pat_enabled) { + void __iomem *ret = ioremap_nocache(phys_addr, size); + if (ret) + mtrr_add_unaligned(phys_addr, size, + MTRR_TYPE_WRCOMB, false); + return ret; + } + return __ioremap_caller(phys_addr, size, _PAGE_CACHE_WC, + __builtin_return_address(0)); } EXPORT_SYMBOL(ioremap_wc); -- 1.6.5