memremap: add arch specific hook for MEMREMAP_WB mappings
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Mon, 22 Feb 2016 14:02:07 +0000 (15:02 +0100)
committerArd Biesheuvel <ard.biesheuvel@linaro.org>
Mon, 4 Apr 2016 08:26:41 +0000 (10:26 +0200)
commitc269cba35b061181bc23c470809c00e8f71e535a
tree5b34de143f15b6eb1b786394c45fa8012d4397a9
parent7769aea2a27db8f12859dcecce37a3da44ab588b
memremap: add arch specific hook for MEMREMAP_WB mappings

Currently, the memremap code serves MEMREMAP_WB mappings directly from
the kernel direct mapping, unless the region is in high memory, in which
case it falls back to using ioremap_cache(). However, the semantics of
ioremap_cache() are not unambiguously defined, and on ARM, it will
actually result in a mapping type that differs from the attributes used
for the linear mapping, and for this reason, the ioremap_cache() call
fails if the region is part of the memory managed by the kernel.

So instead, implement an optional hook 'arch_memremap_wb' whose default
implementation calls ioremap_cache() as before, but which can be
overridden by the architecture to do what is appropriate for it.

Acked-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
kernel/memremap.c