]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commit
ARM: 8667/3: Fix memory attribute inconsistencies when using fixmap
authorJon Medhurst <tixy@linaro.org>
Mon, 10 Apr 2017 10:13:59 +0000 (11:13 +0100)
committerSeth Forshee <seth.forshee@canonical.com>
Fri, 26 May 2017 22:22:03 +0000 (17:22 -0500)
commit699ee92117b635bb82d8c9378aeadbda80da4f38
treef050c8b42e4152164b8f17fec725cb6ae9ed5ab9
parent12d04d389b9e4bd8478ec6cb77015ba340fa55cd
ARM: 8667/3: Fix memory attribute inconsistencies when using fixmap

BugLink: http://bugs.launchpad.net/bugs/1693932
commit b089c31c519c3906c14801b6ec483e18a5152a50 upstream.

To cope with the variety in ARM architectures and configurations, the
pagetable attributes for kernel memory are generated at runtime to match
the system the kernel finds itself on. This calculated value is stored
in pgprot_kernel.

However, when early fixmap support was added for ARM (commit
a5f4c561b3b1) the attributes used for mappings were hard coded because
pgprot_kernel is not set up early enough. Unfortunately, when fixmap is
used after early boot this means the memory being mapped can have
different attributes to existing mappings, potentially leading to
unpredictable behaviour. A specific problem also exists due to the hard
coded values not include the 'shareable' attribute which means on
systems where this matters (e.g. those with multiple CPU clusters) the
cache contents for a memory location can become inconsistent between
CPUs.

To resolve these issues we change fixmap to use the same memory
attributes (from pgprot_kernel) that the rest of the kernel uses. To
enable this we need to refactor the initialisation code so
build_mem_type_table() is called early enough. Note, that relies on early
param parsing for memory type overrides passed via the kernel command
line, so we need to make sure this call is still after
parse_early_params().

[ardb: keep early_fixmap_init() before param parsing, for earlycon]

Fixes: a5f4c561b3b1 ("ARM: 8415/1: early fixmap support for earlycon")
Tested-by: afzal mohammed <afzal.mohd.ma@gmail.com>
Signed-off-by: Jon Medhurst <tixy@linaro.org>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
arch/arm/include/asm/fixmap.h
arch/arm/kernel/setup.c
arch/arm/mm/mmu.c