aboutsummaryrefslogtreecommitdiffstatshomepage
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
parentPCI: xgene-msi: Sanitise MSI allocation and affinity setting (diff)
downloadwireguard-linux-3cc8f625e4c6a0e9f936da6b94166e62e387fe1d.tar.xz
wireguard-linux-3cc8f625e4c6a0e9f936da6b94166e62e387fe1d.zip
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;
}