From: Ingo Molnar Date: Wed, 30 Jan 2008 12:33:40 +0000 (+0100) Subject: x86: change ioremap() to default to uncached X-Git-Tag: v2.6.25-rc1~1143^2~145 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6371b495991debfd1417b17c2bc4f7d7bae05739;p=linux-2.6 x86: change ioremap() to default to uncached Prepare ioremap() to default to uncached. This will be the safest - but first we have to fix CPA. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner --- diff --git a/include/asm-x86/io_32.h b/include/asm-x86/io_32.h index 2a04bd17ea..db39788463 100644 --- a/include/asm-x86/io_32.h +++ b/include/asm-x86/io_32.h @@ -111,18 +111,27 @@ extern void __iomem * __ioremap(unsigned long offset, unsigned long size, unsign * make bus memory CPU accessible via the readb/readw/readl/writeb/ * writew/writel functions and the other mmio helpers. The returned * address is not guaranteed to be usable directly as a virtual - * address. + * address. * * If the area you are trying to map is a PCI BAR you should have a * look at pci_iomap(). */ +extern void __iomem * ioremap_nocache(unsigned long offset, unsigned long size); -static inline void __iomem * ioremap(unsigned long offset, unsigned long size) +static inline void __iomem * +ioremap_cache(unsigned long offset, unsigned long size) { return __ioremap(offset, size, 0); } -extern void __iomem * ioremap_nocache(unsigned long offset, unsigned long size); +/* + * The default ioremap() behavior is non-cached: + */ +static inline void __iomem * ioremap(unsigned long offset, unsigned long size) +{ + return ioremap_nocache(offset, size); +} + extern void iounmap(volatile void __iomem *addr); /* diff --git a/include/asm-x86/io_64.h b/include/asm-x86/io_64.h index fef0ce2ced..7dee3c6e9c 100644 --- a/include/asm-x86/io_64.h +++ b/include/asm-x86/io_64.h @@ -152,11 +152,6 @@ static inline void * phys_to_virt(unsigned long address) extern void __iomem *__ioremap(unsigned long offset, unsigned long size, unsigned long flags); -static inline void __iomem * ioremap (unsigned long offset, unsigned long size) -{ - return __ioremap(offset, size, 0); -} - extern void *early_ioremap(unsigned long addr, unsigned long size); extern void early_iounmap(void *addr, unsigned long size); @@ -165,8 +160,24 @@ extern void early_iounmap(void *addr, unsigned long size); * it's useful if some control registers are in such an area and write combining * or read caching is not desirable: */ -extern void __iomem * ioremap_nocache (unsigned long offset, unsigned long size); +extern void __iomem * ioremap_nocache(unsigned long offset, unsigned long size); + +static inline void __iomem * +ioremap_cache(unsigned long offset, unsigned long size) +{ + return __ioremap(offset, size, 0); +} + +/* + * The default ioremap() behavior is non-cached: + */ +static inline void __iomem * ioremap(unsigned long offset, unsigned long size) +{ + return ioremap_cache(offset, size); +} + extern void iounmap(volatile void __iomem *addr); + extern void __iomem *fix_ioremap(unsigned idx, unsigned long phys); /*