ARM: idmap: populate identity map pgd at init time using .init.text
authorWill Deacon <will.deacon@arm.com>
Fri, 30 Sep 2011 10:43:29 +0000 (11:43 +0100)
committerLeann Ogasawara <leann.ogasawara@canonical.com>
Mon, 2 Apr 2012 20:17:01 +0000 (13:17 -0700)
commit1b65b925e1e479c4d648a6a1e0062fd36b395429
tree11fd08f6d0cf2ac21979d5efd716e75b4dd02917
parentd4afbd68aca2a892b1029de4022448bf14de087a
ARM: idmap: populate identity map pgd at init time using .init.text

When disabling and re-enabling the MMU, it is necessary to take out an
identity mapping for the code that manipulates the SCTLR in order to
avoid it disappearing from under our feet. This is useful when soft
rebooting and returning from CPU suspend.

This patch allocates a set of page tables during boot and populates them
with an identity mapping for the .idmap.text section. This means that
users of the identity map do not need to manage their own pgd and can
instead annotate their functions with __idmap or, in the case of assembly
code, place them in the correct section.

Acked-by: Dave Martin <dave.martin@linaro.org>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Tested-by: Lorenzo Pieralisi <Lorenzo.Pieralisi@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
(cherry picked from commit 8903826d0cd99aed9267e792d38284cf3092042b)

Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
arch/arm/include/asm/idmap.h [new file with mode: 0644]
arch/arm/include/asm/pgtable.h
arch/arm/kernel/smp.c
arch/arm/kernel/vmlinux.lds.S
arch/arm/mm/idmap.c