[PATCH 05/20] m68k: introduce arch_memremap()
flat view
STALE4021d
From: Dan Williams <hidden>
Date: 2015-10-09 22:21:49
Also in:
linux-arch, lkml
Subsystem:
m68k architecture, the rest · Maintainers:
Geert Uytterhoeven, Linus Torvalds
In preparation for removing ioremap_wt() introduce arch_memremap() for m68k. This simply enforces that attempts to establish writethrough mappings fail rather than silently fall back to uncached. Cc: Arnd Bergmann <arnd@arndb.de> Cc: Ross Zwisler <redacted> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Dan Williams <redacted> --- arch/m68k/Kconfig | 1 + arch/m68k/mm/kmap.c | 17 ++++++++++++++++- arch/m68k/mm/sun3kmap.c | 7 +++++++ 3 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
index 498b567f007b..468b9ea6d042 100644
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig@@ -9,6 +9,7 @@ config M68K select GENERIC_ATOMIC64 select HAVE_UID16 select VIRT_TO_BUS + select ARCH_HAS_MEMREMAP select ARCH_HAVE_NMI_SAFE_CMPXCHG if RMW_INSNS select GENERIC_CPU_DEVICES select GENERIC_IOMAP
diff --git a/arch/m68k/mm/kmap.c b/arch/m68k/mm/kmap.c
index 6e4955bc542b..519c45865127 100644
--- a/arch/m68k/mm/kmap.c
+++ b/arch/m68k/mm/kmap.c@@ -14,12 +14,12 @@ #include <linux/types.h> #include <linux/slab.h> #include <linux/vmalloc.h> +#include <linux/io.h> #include <asm/setup.h> #include <asm/segment.h> #include <asm/page.h> #include <asm/pgalloc.h> -#include <asm/io.h> #undef DEBUG
@@ -223,6 +223,21 @@ void __iomem *__ioremap(unsigned long physaddr, unsigned long size, int cachefla } EXPORT_SYMBOL(__ioremap); +void *arch_memremap(resource_size_t offset, size_t size, unsigned long flags) +{ + int mode; + + if (flags & MEMREMAP_WB) + mode = IOMAP_FULL_CACHING; + else if (flags & MEMREMAP_WT) + mode = IOMAP_WRITETHROUGH; + else + return NULL; + + return (void __force *) __ioremap(offset, size, mode); +} +EXPORT_SYMBOL(arch_memremap); + /* * Unmap an ioremap()ed region again */
diff --git a/arch/m68k/mm/sun3kmap.c b/arch/m68k/mm/sun3kmap.c
index 3dc41158c05e..981a9e423b23 100644
--- a/arch/m68k/mm/sun3kmap.c
+++ b/arch/m68k/mm/sun3kmap.c@@ -116,6 +116,13 @@ void __iomem *__ioremap(unsigned long phys, unsigned long size, int cache) } EXPORT_SYMBOL(__ioremap); +void *arch_memremap(resource_size_t offset, size_t size, unsigned long flags) +{ + pr_err_once("sun3: no support for memremap\n"); + return NULL; +} +EXPORT_SYMBOL(arch_memremap); + void iounmap(void __iomem *addr) { vfree((void *)(PAGE_MASK & (unsigned long)addr));