From: Marc Zyngier Date: Tue, 25 Feb 2025 17:29:30 +0000 (+0000) Subject: KVM: arm64: nv: Fail KVM init if asking for NV without GICv3 X-Git-Tag: v6.15-rc1~195^2~2^2~6^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=83c6cb20147b5ee22357f4604632df9f8ef3c17b;p=thirdparty%2Flinux.git KVM: arm64: nv: Fail KVM init if asking for NV without GICv3 Although there is nothing in NV that is fundamentally incompatible with the lack of GICv3, there is no HW implementation without one, at least on the virtual side (yes, even fruits have some form of vGICv3). We therefore make the decision to require GICv3, which will only affect models such as QEMU. Booting with a GICv2 or something even more exotic while asking for NV will result in KVM being disabled. Signed-off-by: Marc Zyngier Link: https://lore.kernel.org/r/20250225172930.1850838-17-maz@kernel.org Signed-off-by: Oliver Upton --- diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index abf51f6cfcafe..a67653e262252 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -2325,6 +2325,13 @@ static int __init init_subsystems(void) goto out; } + if (kvm_mode == KVM_MODE_NV && + !(vgic_present && kvm_vgic_global_state.type == VGIC_V3)) { + kvm_err("NV support requires GICv3, giving up\n"); + err = -EINVAL; + goto out; + } + /* * Init HYP architected timer support */