[PATCH v2 06/14] arm64/hyp-stub: Enable access to ALLINT

Mark Brown
2022-11-12T15:17:58Z

In order to use NMIs we need to ensure that traps are disabled for it so
update HCRX_EL2 to ensure that TALLINT is not set when we detect support
for NMIs.

Signed-off-by: Mark Brown <broonie@kernel.org>
---
arch/arm64/kernel/hyp-stub.S | 12 ++++++++++++
1 file changed, 12 insertions(+)

diff --git a/arch/arm64/kernel/hyp-stub.S b/arch/arm64/kernel/hyp-stub.S
index 2ee18c860f2a..4e0b06467973 100644
--- a/arch/arm64/kernel/hyp-stub.S
+++ b/arch/arm64/kernel/hyp-stub.S
@@ -151,6 +151,18 @@ SYM_CODE_START_LOCAL(__finalise_el2)

.Lskip_sme:

+ // NMIs
+ __check_override id_aa64pfr1 ID_AA64PFR1_EL1_NMI_SHIFT 4 .Linit_nmi .Lskip_nmi
+.Linit_nmi:
+ mrs x1, id_aa64mmfr1_el1 // HCRX_EL2 present?
+ ubfx x1, x1, #ID_AA64MMFR1_EL1_HCX_SHIFT, #4
+ cbz x1, .Lskip_nmi
+
+ mrs_s x1, SYS_HCRX_EL2
+ and x1, x1, #~HCRX_EL2_TALLINT_MASK // Don't trap ALLINT
+ msr_s SYS_HCRX_EL2, x1
+.Lskip_nmi:
+
// nVHE? No way! Give me the real thing!
// Sanity check: MMU *must* be off
mrs x1, sctlr_el2
--
2.30.2