From: Marc Zyngier Date: Wed, 1 Apr 2026 10:36:10 +0000 (+0100) Subject: KVM: arm64: Don't advertises GICv3 in ID_PFR1_EL1 if AArch32 isn't supported X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f4626281c6bb563ef5ad9d3a59a1449b45a3dc30;p=thirdparty%2Fkernel%2Flinux.git KVM: arm64: Don't advertises GICv3 in ID_PFR1_EL1 if AArch32 isn't supported Although the AArch32 ID regs are architecturally UNKNOWN when AArch32 isn't supported at any EL, KVM makes a point in making them RAZ. Therefore, advertising GICv3 in ID_PFR1_EL1 must be gated on AArch32 being supported at least at EL0. Reviewed-by: Sascha Bischoff Fixes: a258a383b9177 ("KVM: arm64: gic-v5: Sanitize ID_AA64PFR2_EL1.GCIE") Reported-by: Mark Brown Tested-by: Mark Brown Link: https://patch.msgid.link/20260401103611.357092-16-maz@kernel.org Signed-off-by: Marc Zyngier --- diff --git a/arch/arm64/kvm/vgic/vgic-init.c b/arch/arm64/kvm/vgic/vgic-init.c index 2859dad46a931..933983bb20052 100644 --- a/arch/arm64/kvm/vgic/vgic-init.c +++ b/arch/arm64/kvm/vgic/vgic-init.c @@ -700,7 +700,8 @@ void kvm_vgic_finalize_idregs(struct kvm *kvm) break; case KVM_DEV_TYPE_ARM_VGIC_V3: aa64pfr0 |= SYS_FIELD_PREP_ENUM(ID_AA64PFR0_EL1, GIC, IMP); - pfr1 |= SYS_FIELD_PREP_ENUM(ID_PFR1_EL1, GIC, GICv3); + if (kvm_supports_32bit_el0()) + pfr1 |= SYS_FIELD_PREP_ENUM(ID_PFR1_EL1, GIC, GICv3); break; case KVM_DEV_TYPE_ARM_VGIC_V5: aa64pfr2 |= SYS_FIELD_PREP_ENUM(ID_AA64PFR2_EL1, GCIE, IMP);