Re: [PATCH 14/20] KVM: arm64: Simplify handling of HCR_EL2.E2H RESx
From: Fuad Tabba <hidden>
Date: 2026-01-29 16:42:45
Also in:
kvm, kvmarm
Hi Marc, On Mon, 26 Jan 2026 at 12:17, Marc Zyngier [off-list ref] wrote:
quoted hunk ↗ jump to hunk
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? Signed-off-by: Marc Zyngier <maz@kernel.org> --- arch/arm64/kvm/config.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-)diff --git a/arch/arm64/kvm/config.c b/arch/arm64/kvm/config.c index d5871758f1fcc..187d047a9cf4a 100644 --- a/arch/arm64/kvm/config.c +++ b/arch/arm64/kvm/config.c@@ -394,16 +394,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,@@ -1023,7 +1013,8 @@ 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, RES0_WHEN_E2H0 | RES1_WHEN_E2H1, + enforce_resx),
If you were to take my suggestion for the previous patch, I think that
you could express this as follows:
FORCE_RESx | RES0_WHEN_E2H0 | RES1_WHEN_E2H1
Or if you use the modified patch 12:
FORCE_RESx | RES1_WHEN_E2H1
Either way:
Reviewed-by: Fuad Tabba <redacted>
Cheers,
/fuad
FORCE_RES0(HCR_EL2_RES0),
FORCE_RES1(HCR_EL2_RES1),
};-- 2.47.3