]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: arm64: Simplify handling of HCR_EL2.E2H RESx
authorMarc Zyngier <maz@kernel.org>
Mon, 2 Feb 2026 18:43:23 +0000 (18:43 +0000)
committerMarc Zyngier <maz@kernel.org>
Thu, 5 Feb 2026 09:02:13 +0000 (09:02 +0000)
Now that we can link the RESx behaviour with the value of HCR_EL2.E2H,
we can trivially express the tautological constraint that makes E2H
a reserved value at all times.

Fun, isn't it?

Reviewed-by: Fuad Tabba <tabba@google.com>
Tested-by: Fuad Tabba <tabba@google.com>
Link: https://patch.msgid.link/20260202184329.2724080-15-maz@kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/config.c

index 474d5c8038c2434386bd7f8c5be1877694bb187a..ae72f3b8e50b13df6529cd9d9c72896cbcf91fe9 100644 (file)
@@ -388,16 +388,6 @@ static bool feat_vmid16(struct kvm *kvm)
        return kvm_has_feat_enum(kvm, ID_AA64MMFR1_EL1, VMIDBits, 16);
 }
 
-static bool compute_hcr_e2h(struct kvm *kvm, struct resx *bits)
-{
-       if (kvm_has_feat(kvm, FEAT_E2H0))
-               bits->res0 |= HCR_EL2_E2H;
-       else
-               bits->res1 |= HCR_EL2_E2H;
-
-       return true;
-}
-
 static const struct reg_bits_to_feat_map hfgrtr_feat_map[] = {
        NEEDS_FEAT(HFGRTR_EL2_nAMAIR2_EL1       |
                   HFGRTR_EL2_nMAIR2_EL1,
@@ -1017,7 +1007,7 @@ static const struct reg_bits_to_feat_map hcr_feat_map[] = {
        NEEDS_FEAT(HCR_EL2_TWEDEL       |
                   HCR_EL2_TWEDEn,
                   FEAT_TWED),
-       NEEDS_FEAT_FIXED(HCR_EL2_E2H, compute_hcr_e2h),
+       NEEDS_FEAT_FLAG(HCR_EL2_E2H, RES1_WHEN_E2H1 | FORCE_RESx),
        FORCE_RES0(HCR_EL2_RES0),
        FORCE_RES1(HCR_EL2_RES1),
 };