]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: arm64: Enable nested for GICv5 host with FEAT_GCIE_LEGACY
authorSascha Bischoff <Sascha.Bischoff@arm.com>
Thu, 28 Aug 2025 10:59:42 +0000 (10:59 +0000)
committerMarc Zyngier <maz@kernel.org>
Wed, 17 Sep 2025 16:41:02 +0000 (17:41 +0100)
Extend the NV check to pass for a GICv5 host that has
FEAT_GCIE_LEGACY. The has_gcie_v3_compat flag is only set on GICv5
hosts (that explicitly support FEAT_GCIE_LEGACY), and hence the
explicit check for a VGIC_V5 is omitted.

As of this change, vGICv3-based VMs can run with nested on a
compatible GICv5 host.

Signed-off-by: Sascha Bischoff <sascha.bischoff@arm.com>
Reviewed-by: Oliver Upton <oliver.upton@linux.dev>
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/arm.c

index 5bf101c869c9ab179ebf0672b42b37fe2eec1bc5..49485d08ece25953f7293a9e48f55fda9f075bce 100644 (file)
@@ -2315,8 +2315,9 @@ static int __init init_subsystems(void)
        }
 
        if (kvm_mode == KVM_MODE_NV &&
-          !(vgic_present && kvm_vgic_global_state.type == VGIC_V3)) {
-               kvm_err("NV support requires GICv3, giving up\n");
+               !(vgic_present && (kvm_vgic_global_state.type == VGIC_V3 ||
+                                  kvm_vgic_global_state.has_gcie_v3_compat))) {
+               kvm_err("NV support requires GICv3 or GICv5 with legacy support, giving up\n");
                err = -EINVAL;
                goto out;
        }