ARM: SMP: use idmap_pgd for mapping MMU enable during secondary booting
authorWill Deacon <will.deacon@arm.com>
Wed, 23 Nov 2011 12:26:25 +0000 (12:26 +0000)
committerGrazvydas Ignotas <notasas@gmail.com>
Wed, 20 Feb 2013 21:19:20 +0000 (23:19 +0200)
commita53db61c2765eb7fdfc022d915c48faa5cae2d1d
treef86e90aea93906684f7c5c69a8090c6122a8644b
parented4c86cdb42bf2ffcad9becf3d7283ff41902359
ARM: SMP: use idmap_pgd for mapping MMU enable during secondary booting

The ARM SMP booting code allocates a temporary set of page tables
containing an identity mapping of the kernel image and provides this
to secondary CPUs for initial booting.

In reality, we only need to include the __turn_mmu_on function in the
identity mapping since the rest of the kernel is executing from virtual
addresses after this point.

This patch adds __turn_mmu_on to the .idmap.text section, allowing the
SMP booting code to use the idmap_pgd directly and not have to populate
its own set of page table.

As a result of this patch, we can make the identity_mapping_add function
static (since it is only used within mm/idmap.c) and also remove the
identity_mapping_del function. The identity map population is moved to
an early initcall so that it is setup in time for secondary CPU bringup.

Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm/include/asm/idmap.h
arch/arm/kernel/head.S
arch/arm/kernel/smp.c
arch/arm/mm/idmap.c