summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Zyngier <maz@kernel.org>2025-07-08 18:34:01 +0100
committerBjorn Helgaas <bhelgaas@google.com>2025-07-22 15:33:16 -0500
commit3cc8f625e4c6a0e9f936da6b94166e62e387fe1d (patch)
treedcc36e6ddf2ff346986a4b4696a1941b0915b0bc
parent17c1f960cbf0b93ba22e2d619718343fbdf819ab (diff)
PCI: xgene-msi: Resend an MSI racing with itself on a different CPU
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
-rw-r--r--drivers/pci/controller/pci-xgene-msi.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/pci/controller/pci-xgene-msi.c b/drivers/pci/controller/pci-xgene-msi.c
index 954bc5513164..0ae8f29025bf 100644
--- a/drivers/pci/controller/pci-xgene-msi.c
+++ b/drivers/pci/controller/pci-xgene-msi.c
@@ -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;
}