[PATCH 08/17] arm64/hyp-stub: Enable access to ALLINT

Jinjie Ruan <[email protected]> Fri, 3 Jul 2026 18:01:26 +0800
Newsgroups org.kernel.vger.linux-efi,dev.linux.lists.kvmarm,org.kernel.vger.linux-doc,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
From: Mark Brown <[email protected]>

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 <[email protected]>
Signed-off-by: Marc Zyngier <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Jinjie Ruan <[email protected]>
---
 arch/arm64/include/asm/el2_setup.h | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/arch/arm64/include/asm/el2_setup.h b/arch/arm64/include/asm/el2_setup.h
index aa8ec9df8024..73b8997f8d43 100644
--- a/arch/arm64/include/asm/el2_setup.h
+++ b/arch/arm64/include/asm/el2_setup.h
@@ -600,6 +600,19 @@
 
 	msr_s	SYS_SMPRIMAP_EL2, xzr		// Make all priorities equal
 .Lskip_sme_\@:
+
+	// NMIs
+	__check_override id_aa64pfr1, ID_AA64PFR1_EL1_NMI_SHIFT, 4, .Linit_nmi_\@, .Lskip_nmi_\@, x1, x2
+
+.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_\@:
 .endm
 
 #endif /* __ARM_KVM_INIT_H__ */
-- 
2.34.1