diff options
author | Will Deacon <will.deacon@arm.com> | 2017-11-14 15:38:19 +0100 |
---|---|---|
committer | Will Deacon <will.deacon@arm.com> | 2017-12-11 14:41:06 +0100 |
commit | ea1e3de85e94d711f63437c04624aa0e8de5c8b3 (patch) | |
tree | f390c46a0ddda1975269041456090a1f09e1ba35 /arch/arm64/include/asm/mmu.h | |
parent | arm64: tls: Avoid unconditional zeroing of tpidrro_el0 for native tasks (diff) | |
download | linux-ea1e3de85e94d711f63437c04624aa0e8de5c8b3.tar.xz linux-ea1e3de85e94d711f63437c04624aa0e8de5c8b3.zip |
arm64: entry: Add fake CPU feature for unmapping the kernel at EL0
Allow explicit disabling of the entry trampoline on the kernel command
line (kpti=off) by adding a fake CPU feature (ARM64_UNMAP_KERNEL_AT_EL0)
that can be used to toggle the alternative sequences in our entry code and
avoid use of the trampoline altogether if desired. This also allows us to
make use of a static key in arm64_kernel_unmapped_at_el0().
Reviewed-by: Mark Rutland <mark.rutland@arm.com>
Tested-by: Laura Abbott <labbott@redhat.com>
Tested-by: Shanker Donthineni <shankerd@codeaurora.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm64/include/asm/mmu.h')
-rw-r--r-- | arch/arm64/include/asm/mmu.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm64/include/asm/mmu.h b/arch/arm64/include/asm/mmu.h index c07954638658..da6f12e40714 100644 --- a/arch/arm64/include/asm/mmu.h +++ b/arch/arm64/include/asm/mmu.h @@ -36,7 +36,8 @@ typedef struct { static inline bool arm64_kernel_unmapped_at_el0(void) { - return IS_ENABLED(CONFIG_UNMAP_KERNEL_AT_EL0); + return IS_ENABLED(CONFIG_UNMAP_KERNEL_AT_EL0) && + cpus_have_const_cap(ARM64_UNMAP_KERNEL_AT_EL0); } extern void paging_init(void); |