]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: arm64: Restore POR_EL0 access to host EL0
authorJoey Gouly <joey.gouly@arm.com>
Thu, 4 Jun 2026 10:54:34 +0000 (11:54 +0100)
committerMarc Zyngier <maz@kernel.org>
Fri, 5 Jun 2026 10:48:24 +0000 (11:48 +0100)
CPTR_EL2.E0POE was being cleared in __deactivate_cptr_traps_vhe(), which meant
that any accesses to POR_EL0 from host EL0 would trap and be reported to
userspace as an Illegal instruction. This would happen after running any VM,
regardless if it used POE or not.

Signed-off-by: Joey Gouly <joey.gouly@arm.com>
Link: https://sashiko.dev/#/patchset/20260602155430.2088142-1-maz@kernel.org?part=1
Link: https://patch.msgid.link/20260604105434.2297268-1-joey.gouly@arm.com
Signed-off-by: Marc Zyngier <maz@kernel.org>
Cc: stable@vger,kernel.org
arch/arm64/kvm/hyp/include/hyp/switch.h

index 320cd45d49c5aeaa3ba15b22a8a21c7969b0bda9..e9b36a3b27bbcb73092e11faaf352c666e040e00 100644 (file)
@@ -181,6 +181,8 @@ static inline void __deactivate_cptr_traps_vhe(struct kvm_vcpu *vcpu)
                val |= CPACR_EL1_ZEN;
        if (cpus_have_final_cap(ARM64_SME))
                val |= CPACR_EL1_SMEN;
+       if (cpus_have_final_cap(ARM64_HAS_S1POE))
+               val |= CPACR_EL1_E0POE;
 
        write_sysreg(val, cpacr_el1);
 }