]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: arm64: vgic-v4: Only WARN for HW IRQ mismatch when unmapping vLPI
authorOliver Upton <oliver.upton@linux.dev>
Wed, 26 Feb 2025 18:31:22 +0000 (10:31 -0800)
committerOliver Upton <oliver.upton@linux.dev>
Wed, 26 Feb 2025 21:22:48 +0000 (13:22 -0800)
The VMM or guest can easily screw up GICv4 vLPI injection by
misconfiguring the MSI or the virtual ITS. Don't fuss over it; limit the
WARN in vgic_v4_unset_forwarding() to fire in the worrying case where an
unrelated HW IRQ was mapped to a vLPI.

Reported-by: Sudheer Dantuluri <dantuluris@google.com>
Tested-by: Sudheer Dantuluri <dantuluris@google.com>
Acked-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20250226183124.82094-3-oliver.upton@linux.dev
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
arch/arm64/kvm/vgic/vgic-v4.c

index eedecbbbcf31bb746ecf839d1c0462f2dd9fea51..3e1de40720e0a7aab5b42ab813fea63b18e5de0e 100644 (file)
@@ -512,7 +512,7 @@ int kvm_vgic_v4_unset_forwarding(struct kvm *kvm, int virq,
        if (ret)
                goto out;
 
-       WARN_ON(!(irq->hw && irq->host_irq == virq));
+       WARN_ON(irq->hw && irq->host_irq != virq);
        if (irq->hw) {
                atomic_dec(&irq->target_vcpu->arch.vgic_cpu.vgic_v3.its_vpe.vlpi_count);
                irq->hw = false;