Re: [PATCH 1/2] ahci: disable correct irq for dymmy ports
From: Christoph Hellwig <hch@lst.de>
Date: 2016-08-11 17:01:39
On Thu, Aug 11, 2016 at 12:36:37PM -0400, Tejun Heo wrote:
quoted
diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c index 7461a58..dcf2c72 100644 --- a/drivers/ata/libahci.c +++ b/drivers/ata/libahci.c@@ -2524,7 +2524,7 @@ static int ahci_host_activate_multi_irqs(struct ata_host *host, /* Do not receive interrupts sent by dummy ports */ if (!pp) { - disable_irq(irq + i); + disable_irq(irq); continue; }I'm not following. The driver at that point has irqs in the range [@irq, @irq + @host->n_ports - 1] and is trying to activate them and the above code block disables irq for a port which should be skipped. Why wouldn't it need to be indexed?
Because ahci_irq_vector does that indexing already. This call changed when Dan added ahci_irq_vector to support the MSI-X case - since then ahci_irq_vector either does the base irq + index logic for MSI or uses the msix_entries array for MSI-X, and irq contains the result of that operation.