arm64: add basic VMAP_STACK support
commite3067861ba6650a566a6273738c23c956ad55c02
authorMark Rutland <mark.rutland@arm.com>
Fri, 21 Jul 2017 13:25:33 +0000 (21 14:25 +0100)
committerMark Rutland <mark.rutland@arm.com>
Tue, 15 Aug 2017 17:36:04 +0000 (15 18:36 +0100)
tree95c523e8bbb75e883b02e659481fa9557f2e56e6
parentf60fe78f133243e6de0f05fdefc3ed2f3c5085ca
arm64: add basic VMAP_STACK support

This patch enables arm64 to be built with vmap'd task and IRQ stacks.

As vmap'd stacks are mapped at page granularity, stacks must be a multiple of
PAGE_SIZE. This means that a 64K page kernel must use stacks of at least 64K in
size.

To minimize the increase in Image size, IRQ stacks are dynamically allocated at
boot time, rather than embedding the boot CPU's IRQ stack in the kernel image.

This patch was co-authored by Ard Biesheuvel and Mark Rutland.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Will Deacon <will.deacon@arm.com>
Tested-by: Laura Abbott <labbott@redhat.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: James Morse <james.morse@arm.com>
arch/arm64/Kconfig
arch/arm64/include/asm/efi.h
arch/arm64/include/asm/memory.h
arch/arm64/kernel/irq.c
arch/arm64/kernel/vmlinux.lds.S