From: Oliver Upton Date: Wed, 26 Feb 2025 18:31:22 +0000 (-0800) Subject: KVM: arm64: vgic-v4: Only WARN for HW IRQ mismatch when unmapping vLPI X-Git-Tag: v6.15-rc1~195^2~2^2~7^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d0b79563fd60c063ee4ad2a76024e60338ed3881;p=thirdparty%2Flinux.git KVM: arm64: vgic-v4: Only WARN for HW IRQ mismatch when unmapping vLPI 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 Tested-by: Sudheer Dantuluri Acked-by: Marc Zyngier Link: https://lore.kernel.org/r/20250226183124.82094-3-oliver.upton@linux.dev Signed-off-by: Oliver Upton --- diff --git a/arch/arm64/kvm/vgic/vgic-v4.c b/arch/arm64/kvm/vgic/vgic-v4.c index eedecbbbcf31b..3e1de40720e0a 100644 --- a/arch/arm64/kvm/vgic/vgic-v4.c +++ b/arch/arm64/kvm/vgic/vgic-v4.c @@ -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;