]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: arm64: Wire AT S1E1A in the system instruction handling table
authorMarc Zyngier <maz@kernel.org>
Tue, 2 Jun 2026 15:54:28 +0000 (16:54 +0100)
committerMarc Zyngier <maz@kernel.org>
Wed, 3 Jun 2026 20:01:48 +0000 (21:01 +0100)
Despite having handling code for AT S1E1A, the instruction was
never plugged into the system instruction table, leading to an
exception being injected in the guest.

If the guest is Linux and using the __kvm_at() helper, the exception
is actually handled in the helper, and KVM continues more or less
silently by reentering the guest. Not exactly what you'd expect.

Fix this by plugging the emulation code where required.

Fixes: ff987ffc0c18c ("KVM: arm64: nv: Add support for FEAT_ATS1A")
Reviewed-by: Joey Gouly <joey.gouly@arm.com>
Reviewed-by: Oliver Upton <oupton@kernel.org>
Link: https://patch.msgid.link/20260602155430.2088142-3-maz@kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/sys_regs.c

index 148fc3400ea81559ea630312db4a02bb7a39ba7e..753fe30d322c312c9794b3b42257ecbb23b8ff72 100644 (file)
@@ -4217,6 +4217,7 @@ static struct sys_reg_desc sys_insn_descs[] = {
        SYS_INSN(AT_S1E0W, handle_at_s1e01),
        SYS_INSN(AT_S1E1RP, handle_at_s1e01),
        SYS_INSN(AT_S1E1WP, handle_at_s1e01),
+       SYS_INSN(AT_S1E1A, handle_at_s1e01),
 
        { SYS_DESC(SYS_DC_CSW), access_dcsw },
        { SYS_DESC(SYS_DC_CGSW), access_dcgsw },