Skip to content

Commit 2cf532f

Browse files
Alexander Gordeevhtejun
authored andcommitted
ahci: Do not receive interrupts sent by dummy ports
In multiple MSI mode all AHCI ports (including dummy) get assigned separate MSI vectors and (as result of execution pci_enable_msi_exact() function) separate IRQ numbers, (mapped to the MSI vectors). Therefore, although interrupts from dummy ports are not desired they are still enabled. We do not request IRQs for dummy ports, but that only means we do not assign AHCI-specific ISRs to corresponding IRQ numbers. As result, dummy port interrupts still could come and traverse all the way from the PCI device to the kernel, causing unnecessary overhead. This update disables IRQs for dummy ports and prevents the described issue. Signed-off-by: Alexander Gordeev <agordeev@redhat.com> Signed-off-by: Tejun Heo <tj@kernel.org> Tested-by: David Milburn <dmilburn@redhat.com> Cc: linux-ide@vger.kernel.org Cc: stable@vger.kernel.org Fixes: 5ca72c4 ("AHCI: Support multiple MSIs")
1 parent ccf8f53 commit 2cf532f

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

drivers/ata/ahci.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,12 +1241,16 @@ int ahci_host_activate(struct ata_host *host, int irq, unsigned int n_msis)
12411241
for (i = 0; i < host->n_ports; i++) {
12421242
struct ahci_port_priv *pp = host->ports[i]->private_data;
12431243

1244-
/* pp is NULL for dummy ports */
1245-
if (pp)
1246-
rc = devm_request_threaded_irq(host->dev,
1247-
irq + i, ahci_hw_interrupt,
1248-
ahci_thread_fn, IRQF_SHARED,
1249-
pp->irq_desc, host->ports[i]);
1244+
/* Do not receive interrupts sent by dummy ports */
1245+
if (!pp) {
1246+
disable_irq(irq + i);
1247+
continue;
1248+
}
1249+
1250+
rc = devm_request_threaded_irq(host->dev, irq + i,
1251+
ahci_hw_interrupt,
1252+
ahci_thread_fn, IRQF_SHARED,
1253+
pp->irq_desc, host->ports[i]);
12501254
if (rc)
12511255
goto out_free_irqs;
12521256
}

0 commit comments

Comments
 (0)