Commit 8d8e882c authored by Marc Zyngier's avatar Marc Zyngier Committed by Oliver Upton
Browse files

KVM: arm64: Fix EL2 S1 XN handling for hVHE setups



The current XN implementation is tied to the EL2 translation regime,
and fall flat on its face with the EL2&0 one that is used for hVHE,
as the permission bit for privileged execution is a different one.

Fixes: 6537565f ("KVM: arm64: Adjust EL2 stage-1 leaf AP bits when ARM64_KVM_HVHE is set")
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Reviewed-by: default avatarFuad Tabba <tabba@google.com>
Link: https://msgid.link/20251210173024.561160-2-maz@kernel.org


Signed-off-by: default avatarOliver Upton <oupton@kernel.org>
parent 5e8b511c
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -87,7 +87,15 @@ typedef u64 kvm_pte_t;

#define KVM_PTE_LEAF_ATTR_HI_SW		GENMASK(58, 55)

#define KVM_PTE_LEAF_ATTR_HI_S1_XN	BIT(54)
#define __KVM_PTE_LEAF_ATTR_HI_S1_XN	BIT(54)
#define __KVM_PTE_LEAF_ATTR_HI_S1_UXN	BIT(54)
#define __KVM_PTE_LEAF_ATTR_HI_S1_PXN	BIT(53)

#define KVM_PTE_LEAF_ATTR_HI_S1_XN					\
	({ cpus_have_final_cap(ARM64_KVM_HVHE) ?			\
			(__KVM_PTE_LEAF_ATTR_HI_S1_UXN |		\
			 __KVM_PTE_LEAF_ATTR_HI_S1_PXN) :		\
			__KVM_PTE_LEAF_ATTR_HI_S1_XN; })

#define KVM_PTE_LEAF_ATTR_HI_S2_XN	GENMASK(54, 53)