From: Sven Auhagen <sven.auhagen@xxxxxxxxxxxx> When the ahci-host AHCI_HFLAG_MULTI_MSI flag is set then the driver must provide a get_irq_vector callback and take care of getting the IRQs itself. So in this case ahci_platform_init_host() should not try to get an IRQ itself. Suggested-by: Hans de Goede <hdegoede@xxxxxxxxxx> Reviewed-by: Hans de Goede <hdegoede@xxxxxxxxxx> Signed-off-by: Sven Auhagen <sven.auhagen@xxxxxxxxxxxx> --- drivers/ata/libahci_platform.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/ata/libahci_platform.c b/drivers/ata/libahci_platform.c index de638dafce21..f6f2a111d226 100644 --- a/drivers/ata/libahci_platform.c +++ b/drivers/ata/libahci_platform.c @@ -581,14 +581,16 @@ int ahci_platform_init_host(struct platform_device *pdev, struct ata_host *host; int i, irq, n_ports, rc; - irq = platform_get_irq(pdev, 0); - if (irq <= 0) { - if (irq != -EPROBE_DEFER) - dev_err(dev, "no irq\n"); - return irq; - } + if (!(hpriv->flags & AHCI_HFLAG_MULTI_MSI)) { + irq = platform_get_irq(pdev, 0); + if (irq <= 0) { + if (irq != -EPROBE_DEFER) + dev_err(dev, "no irq\n"); + return irq; + } - hpriv->irq = irq; + hpriv->irq = irq; + } /* prepare host */ pi.private_data = (void *)(unsigned long)hpriv->flags; -- 2.20.1