]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI: xgene-msi: Resend an MSI racing with itself on a different CPU
authorMarc Zyngier <maz@kernel.org>
Tue, 8 Jul 2025 17:34:01 +0000 (18:34 +0100)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 22 Jul 2025 20:33:16 +0000 (15:33 -0500)
Since changing the affinity of an MSI really is about changing
the target address and that it isn't possible to mask an individual
MSI, it is completely possible for an interrupt to race with itself,
usually resulting in a lost interrupt.

Paper over the design blunder by informing the core code of this
sad state of affairs.

Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://lore.kernel.org/r/20250708173404.1278635-11-maz@kernel.org
drivers/pci/controller/pci-xgene-msi.c

index 954bc551316447b7b21796780f78c1c13278f06c..0ae8f29025bf513dda9cbc0d1411fe072f2fec00 100644 (file)
@@ -183,6 +183,7 @@ static int xgene_irq_domain_alloc(struct irq_domain *domain, unsigned int virq,
        irq_domain_set_info(domain, virq, hwirq,
                            &xgene_msi_bottom_irq_chip, domain->host_data,
                            handle_simple_irq, NULL, NULL);
+       irqd_set_resend_when_in_progress(irq_get_irq_data(virq));
 
        return 0;
 }