]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: arm64: Mark HCR.EL2.E2H RES0 when ID_AA64MMFR1_EL1.VH is zero
authorMarc Zyngier <maz@kernel.org>
Thu, 20 Feb 2025 13:48:56 +0000 (13:48 +0000)
committerOliver Upton <oliver.upton@linux.dev>
Mon, 24 Feb 2025 19:06:55 +0000 (11:06 -0800)
Enforce HCR_EL2.E2H being RES0 when VHE is disabled, so that we can
actually rely on that bit never being flipped behind our back.

Signed-off-by: Marc Zyngier <maz@kernel.org>
Reviewed-by: Joey Gouly <joey.gouly@arm.com>
Link: https://lore.kernel.org/r/20250220134907.554085-4-maz@kernel.org
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
arch/arm64/kvm/nested.c

index 0c9387d2f50708565b5aac1fc0f86fefffd94ea1..ed3add7d32f66647783e52fd8d412c0efa423189 100644 (file)
@@ -1034,6 +1034,8 @@ int kvm_init_nv_sysregs(struct kvm_vcpu *vcpu)
                res0 |= (HCR_TEA | HCR_TERR);
        if (!kvm_has_feat(kvm, ID_AA64MMFR1_EL1, LO, IMP))
                res0 |= HCR_TLOR;
+       if (!kvm_has_feat(kvm, ID_AA64MMFR1_EL1, VH, IMP))
+               res0 |= HCR_E2H;
        if (!kvm_has_feat(kvm, ID_AA64MMFR4_EL1, E2H0, IMP))
                res1 |= HCR_E2H;
        set_sysreg_masks(kvm, HCR_EL2, res0, res1);