arm64: Save state of HCR_EL2.E2H before switch to EL1
authorMarc Zyngier <maz@kernel.org>
Thu, 30 Jun 2022 16:04:53 +0000 (17:04 +0100)
committerWill Deacon <will@kernel.org>
Fri, 1 Jul 2022 14:22:51 +0000 (15:22 +0100)
commitb65e411d6cc2f12a728cabe66b930c63c527a340
treeb6a307dc0e11c1201da9e3ed852b5d737dad30a6
parent7ddb0c3df7881206dcd8339c8dabf0318a781f91
arm64: Save state of HCR_EL2.E2H before switch to EL1

As we're about to switch the way E2H-stuck CPUs boot, save
the boot CPU E2H state as a flag tied to the boot mode
that can then be checked by the idreg override code.

This allows us to replace the is_kernel_in_hyp_mode() check
with a simple comparison with this state, even when running
at EL1. Note that this flag isn't saved in __boot_cpu_mode,
and is only kept in a register in the assembly code.

Use with caution.

Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20220630160500.1536744-3-maz@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/include/asm/virt.h
arch/arm64/kernel/head.S
arch/arm64/kernel/idreg-override.c