From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoph Hellwig Subject: Re: use pci_alloc_irq_vectors issues Date: Mon, 17 Oct 2016 21:28:58 +0200 Message-ID: <20161017192858.GA25429@lst.de> References: <20161017080103.GA8732@lst.de> <20161017092621.GA11124@lst.de> <20161017103442.GA12240@lst.de> <20161017120234.GA14105@lst.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from verein.lst.de ([213.95.11.211]:60627 "EHLO newverein.lst.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965005AbcJQT3A (ORCPT ); Mon, 17 Oct 2016 15:29:00 -0400 Content-Disposition: inline In-Reply-To: Sender: linux-ide-owner@vger.kernel.org List-Id: linux-ide@vger.kernel.org To: Emmanuel Benisty Cc: Christoph Hellwig , tj@kernel.org, linux-ide@vger.kernel.org, linux-pci@vger.kernel.org Hi Emmanuel, I think I have an idea now - we are accidentally hitting the per-port MSI vector case because your SSD only has one AHCI "port". Can you try the below patch: diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index ba5f11c..3c2f92b 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -1413,6 +1413,7 @@ static int ahci_init_msi(struct pci_dev *pdev, unsigned int n_ports, if (hpriv->flags & AHCI_HFLAG_NO_MSI) return -ENODEV; + if (n_ports > 1) { /* * If number of MSIs is less than number of ports then Sharing Last * Message mode could be enforced. In this case assume that advantage @@ -1434,6 +1435,7 @@ static int ahci_init_msi(struct pci_dev *pdev, unsigned int n_ports, printk(KERN_INFO "ahci: MRSM is on, fallback to single MSI\n"); pci_free_irq_vectors(pdev); } + } /* * -ENOSPC indicated we don't have enough vectors. Don't bother trying