@@ -371,6 +371,8 @@ struct ahci_host_priv {
/* only required for per-port MSI(-X) support */
int (*get_irq_vector)(struct ata_host *host,
int port);
+
+ int (*multi_irq_host_ack)(int irq, struct ata_port *ap);
};
extern int ahci_ignore_sss;
@@ -1897,6 +1897,7 @@ static void ahci_port_intr(struct ata_port *ap)
static irqreturn_t ahci_multi_irqs_intr_hard(int irq, void *dev_instance)
{
struct ata_port *ap = dev_instance;
+ struct ahci_host_priv *hpriv = ap->host->private_data;
void __iomem *port_mmio = ahci_port_base(ap);
u32 status;
@@ -1909,6 +1910,9 @@ static irqreturn_t ahci_multi_irqs_intr_hard(int irq, void *dev_instance)
ahci_handle_port_interrupt(ap, port_mmio, status);
spin_unlock(ap->lock);
+ if (hpriv->multi_irq_host_ack)
+ hpriv->multi_irq_host_ack(irq, ap);
+
VPRINTK("EXIT\n");
return IRQ_HANDLED;