linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix()
@ 2014-02-24  8:02 Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 01/23] be2iscsi: Use pci_enable_msix_exact() " Alexander Gordeev
                   ` (24 more replies)
  0 siblings, 25 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, iss_storagedev, intel-linux-scu, support,
	DL-MPTFusionLinux, qla2xxx-upstream, iscsi-driver, pv-drivers,
	linux-scsi, linux-pci

Hello!

This series is against James Bottomley's SCSI tree [1], but it needs
commit f7fc32c ("PCI/MSI: Add pci_enable_msi_exact() and
pci_enable_msix_exact()") from from Bjorn Helgaas's PCI tree [2]:

1. git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
2. git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git pci/msi

Recently pci_enable_msix_exact() function has been accepted to
the mainline. That is a variation of pci_enable_msix_range() which
allows a device driver to request a particular number of MSI-Xs.

As result, most of the changes posted in version 1 of this series
are invalidated and need to use pci_enable_msix_exact() instead of
originally posted pci_enable_msix_range() usages.

I removed almost all ACKs, since unlike pci_enable_msix_range()
function which returns the number of MSI-Xs allocated or negative
errno, pci_enable_msix_exact() returns either zero success code or
a negative errno. Although this change is simple, it still entails
an updated error code analysis and would be better reviewed by
driver maintainers.

Thanks!

Cc: iss_storagedev@hp.com
Cc: intel-linux-scu@intel.com
Cc: support@lsi.com
Cc: DL-MPTFusionLinux@lsi.com
Cc: qla2xxx-upstream@qlogic.com
Cc: iscsi-driver@qlogic.com
Cc: pv-drivers@vmware.com
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org

Alexander Gordeev (23):
  be2iscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
  bfa: Do not call pci_enable_msix() after it failed once
  bfa: Cleanup bfad_setup_intr() function
  bfa: Use pci_enable_msix_exact() instead of pci_enable_msix()
  csiostor: Remove superfluous call to pci_disable_msix()
  csiostor: Use pci_enable_msix_range() instead of pci_enable_msix()
  fnic: Use pci_enable_msix_exact() instead of pci_enable_msix()
  hpsa: Fallback to MSI rather than to INTx if MSI-X failed
  hpsa: Use pci_enable_msix_exact() instead of pci_enable_msix()
  isci: Use pci_enable_msix_exact() instead of pci_enable_msix()
  lpfc: Remove superfluous call to pci_disable_msix()
  lpfc: Use pci_enable_msix_range() instead of pci_enable_msix()
  megaraid: Fail resume if MSI-X re-initialization failed
  megaraid: Use pci_enable_msix_range() instead of pci_enable_msix()
  mpt2sas: Use pci_enable_msix_exact() instead of pci_enable_msix()
  mpt3sas: Use pci_enable_msix_exact() instead of pci_enable_msix()
  pm8001: Fix invalid return when request_irq() failed
  pm8001: Use pci_enable_msix_exact() instead of pci_enable_msix()
  pmcraid: Get rid of a redundant assignment
  pmcraid: Use pci_enable_msix_range() instead of pci_enable_msix()
  qla2xxx: Use pci_enable_msix_range() instead of pci_enable_msix()
  qla4xxx: Use pci_enable_msix_exact() instead of pci_enable_msix()
  vmw_pvscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()

 drivers/scsi/be2iscsi/be_main.c           |    6 +--
 drivers/scsi/bfa/bfad.c                   |   62 ++++++++++++-----------------
 drivers/scsi/csiostor/csio_hw.h           |    2 +-
 drivers/scsi/csiostor/csio_isr.c          |   24 ++++-------
 drivers/scsi/fnic/fnic_isr.c              |    4 +-
 drivers/scsi/hpsa.c                       |   12 +-----
 drivers/scsi/isci/init.c                  |    2 +-
 drivers/scsi/lpfc/lpfc_init.c             |   54 ++++++++++++-------------
 drivers/scsi/megaraid/megaraid_sas_base.c |   24 +++++------
 drivers/scsi/mpt2sas/mpt2sas_base.c       |    6 +-
 drivers/scsi/mpt3sas/mpt3sas_base.c       |    4 +-
 drivers/scsi/pm8001/pm8001_init.c         |   44 +++++++++++----------
 drivers/scsi/pmcraid.c                    |   14 +------
 drivers/scsi/qla2xxx/qla_isr.c            |   27 +++++-------
 drivers/scsi/qla4xxx/ql4_nx.c             |    2 +-
 drivers/scsi/vmw_pvscsi.c                 |    2 +-
 16 files changed, 121 insertions(+), 168 deletions(-)

-- 
1.7.7.6


^ permalink raw reply	[flat|nested] 34+ messages in thread

* [PATCH v2 01/23] be2iscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-03-11 17:06   ` Jayamohan Kallickal
  2014-02-24  8:02 ` [PATCH v2 02/23] bfa: Do not call pci_enable_msix() after it failed once Alexander Gordeev
                   ` (23 subsequent siblings)
  24 siblings, 1 reply; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Jayamohan Kallickal, linux-scsi, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/be2iscsi/be_main.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index 1f37505..580192f 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -5284,12 +5284,10 @@ static void beiscsi_msix_enable(struct beiscsi_hba *phba)
 	for (i = 0; i <= phba->num_cpus; i++)
 		phba->msix_entries[i].entry = i;
 
-	status = pci_enable_msix(phba->pcidev, phba->msix_entries,
-				 (phba->num_cpus + 1));
+	status = pci_enable_msix_exact(phba->pcidev, phba->msix_entries,
+				       phba->num_cpus + 1);
 	if (!status)
 		phba->msix_enabled = true;
-
-	return;
 }
 
 /*
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 02/23] bfa: Do not call pci_enable_msix() after it failed once
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 01/23] be2iscsi: Use pci_enable_msix_exact() " Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-03-02  8:01   ` Anil Gurumurthy
  2014-02-24  8:02 ` [PATCH v2 03/23] bfa: Cleanup bfad_setup_intr() function Alexander Gordeev
                   ` (22 subsequent siblings)
  24 siblings, 1 reply; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Anil Gurumurthy, Vijaya Mohan Guvva,
	linux-scsi, linux-pci

Function pci_enable_msix() should not be called in case
it threw a negative errno from a previous call.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Anil Gurumurthy <agurumur@brocade.com>
Cc: Vijaya Mohan Guvva <vmohan@brocade.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/bfa/bfad.c |   48 ++++++++++++++++++++++------------------------
 1 files changed, 23 insertions(+), 25 deletions(-)

diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c
index cc0fbcd..972ff8d 100644
--- a/drivers/scsi/bfa/bfad.c
+++ b/drivers/scsi/bfa/bfad.c
@@ -1235,33 +1235,31 @@ bfad_setup_intr(struct bfad_s *bfad)
 	   (bfa_asic_id_cb(pdev->device) && !msix_disable_cb)) {
 
 		error = pci_enable_msix(bfad->pcidev, msix_entries, bfad->nvec);
-		if (error) {
-			/* In CT1 & CT2, try to allocate just one vector */
-			if (bfa_asic_id_ctc(pdev->device)) {
-				printk(KERN_WARNING "bfa %s: trying one msix "
-				       "vector failed to allocate %d[%d]\n",
-				       bfad->pci_name, bfad->nvec, error);
-				bfad->nvec = 1;
-				error = pci_enable_msix(bfad->pcidev,
+		/* In CT1 & CT2, try to allocate just one vector */
+		if (error > 0 && bfa_asic_id_ctc(pdev->device)) {
+			printk(KERN_WARNING "bfa %s: trying one msix "
+			       "vector failed to allocate %d[%d]\n",
+			       bfad->pci_name, bfad->nvec, error);
+			bfad->nvec = 1;
+			error = pci_enable_msix(bfad->pcidev,
 						msix_entries, bfad->nvec);
-			}
+		}
 
-			/*
-			 * Only error number of vector is available.
-			 * We don't have a mechanism to map multiple
-			 * interrupts into one vector, so even if we
-			 * can try to request less vectors, we don't
-			 * know how to associate interrupt events to
-			 *  vectors. Linux doesn't duplicate vectors
-			 * in the MSIX table for this case.
-			 */
-			if (error) {
-				printk(KERN_WARNING "bfad%d: "
-				       "pci_enable_msix failed (%d), "
-				       "use line based.\n",
-					bfad->inst_no, error);
-				goto line_based;
-			}
+		/*
+		 * Only error number of vector is available.
+		 * We don't have a mechanism to map multiple
+		 * interrupts into one vector, so even if we
+		 * can try to request less vectors, we don't
+		 * know how to associate interrupt events to
+		 *  vectors. Linux doesn't duplicate vectors
+		 * in the MSIX table for this case.
+		 */
+		if (error) {
+			printk(KERN_WARNING "bfad%d: "
+			       "pci_enable_msix failed (%d), "
+			       "use line based.\n",
+				bfad->inst_no, error);
+			goto line_based;
 		}
 
 		/* Disable INTX in MSI-X mode */
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 03/23] bfa: Cleanup bfad_setup_intr() function
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 01/23] be2iscsi: Use pci_enable_msix_exact() " Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 02/23] bfa: Do not call pci_enable_msix() after it failed once Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-03-02  8:02   ` Anil Gurumurthy
  2014-02-24  8:02 ` [PATCH v2 04/23] bfa: Use pci_enable_msix_exact() instead of pci_enable_msix() Alexander Gordeev
                   ` (21 subsequent siblings)
  24 siblings, 1 reply; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Anil Gurumurthy, Vijaya Mohan Guvva,
	linux-scsi, linux-pci

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Anil Gurumurthy <agurumur@brocade.com>
Cc: Vijaya Mohan Guvva <vmohan@brocade.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/bfa/bfad.c |   18 ++++++++----------
 1 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c
index 972ff8d..e7e4774 100644
--- a/drivers/scsi/bfa/bfad.c
+++ b/drivers/scsi/bfa/bfad.c
@@ -1219,7 +1219,7 @@ bfad_install_msix_handler(struct bfad_s *bfad)
 int
 bfad_setup_intr(struct bfad_s *bfad)
 {
-	int error = 0;
+	int error;
 	u32 mask = 0, i, num_bit = 0, max_bit = 0;
 	struct msix_entry msix_entries[MAX_MSIX_ENTRY];
 	struct pci_dev *pdev = bfad->pcidev;
@@ -1279,20 +1279,18 @@ bfad_setup_intr(struct bfad_s *bfad)
 
 		bfad->bfad_flags |= BFAD_MSIX_ON;
 
-		return error;
+		return 0;
 	}
 
 line_based:
-	error = 0;
-	if (request_irq
-	    (bfad->pcidev->irq, (irq_handler_t) bfad_intx, BFAD_IRQ_FLAGS,
-	     BFAD_DRIVER_NAME, bfad) != 0) {
-		/* Enable interrupt handler failed */
-		return 1;
-	}
+	error = request_irq(bfad->pcidev->irq, (irq_handler_t)bfad_intx,
+			    BFAD_IRQ_FLAGS, BFAD_DRIVER_NAME, bfad);
+	if (error)
+		return error;
+
 	bfad->bfad_flags |= BFAD_INTX_ON;
 
-	return error;
+	return 0;
 }
 
 void
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 04/23] bfa: Use pci_enable_msix_exact() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (2 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 03/23] bfa: Cleanup bfad_setup_intr() function Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 05/23] csiostor: Remove superfluous call to pci_disable_msix() Alexander Gordeev
                   ` (20 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Anil Gurumurthy, Vijaya Mohan Guvva,
	linux-scsi, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Anil Gurumurthy <agurumur@brocade.com>
Cc: Vijaya Mohan Guvva <vmohan@brocade.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/bfa/bfad.c |   18 +++++-------------
 1 files changed, 5 insertions(+), 13 deletions(-)

diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c
index e7e4774..b7b0733 100644
--- a/drivers/scsi/bfa/bfad.c
+++ b/drivers/scsi/bfa/bfad.c
@@ -1234,26 +1234,18 @@ bfad_setup_intr(struct bfad_s *bfad)
 	if ((bfa_asic_id_ctc(pdev->device) && !msix_disable_ct) ||
 	   (bfa_asic_id_cb(pdev->device) && !msix_disable_cb)) {
 
-		error = pci_enable_msix(bfad->pcidev, msix_entries, bfad->nvec);
+		error = pci_enable_msix_exact(bfad->pcidev,
+					      msix_entries, bfad->nvec);
 		/* In CT1 & CT2, try to allocate just one vector */
-		if (error > 0 && bfa_asic_id_ctc(pdev->device)) {
+		if (error == -ENOSPC && bfa_asic_id_ctc(pdev->device)) {
 			printk(KERN_WARNING "bfa %s: trying one msix "
 			       "vector failed to allocate %d[%d]\n",
 			       bfad->pci_name, bfad->nvec, error);
 			bfad->nvec = 1;
-			error = pci_enable_msix(bfad->pcidev,
-						msix_entries, bfad->nvec);
+			error = pci_enable_msix_exact(bfad->pcidev,
+						      msix_entries, 1);
 		}
 
-		/*
-		 * Only error number of vector is available.
-		 * We don't have a mechanism to map multiple
-		 * interrupts into one vector, so even if we
-		 * can try to request less vectors, we don't
-		 * know how to associate interrupt events to
-		 *  vectors. Linux doesn't duplicate vectors
-		 * in the MSIX table for this case.
-		 */
 		if (error) {
 			printk(KERN_WARNING "bfad%d: "
 			       "pci_enable_msix failed (%d), "
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 05/23] csiostor: Remove superfluous call to pci_disable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (3 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 04/23] bfa: Use pci_enable_msix_exact() instead of pci_enable_msix() Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 06/23] csiostor: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (19 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Naresh Kumar Inna, Arvind Bhushan, linux-scsi,
	linux-pci

There is no need to call pci_disable_msix() in case
the previous call to pci_enable_msix() failed

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Naresh Kumar Inna <naresh@chelsio.com>
Cc: Arvind Bhushan <arvindb@chelsio.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/csiostor/csio_isr.c |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/csiostor/csio_isr.c b/drivers/scsi/csiostor/csio_isr.c
index 7ee9777..91ba91d 100644
--- a/drivers/scsi/csiostor/csio_isr.c
+++ b/drivers/scsi/csiostor/csio_isr.c
@@ -529,10 +529,8 @@ csio_enable_msix(struct csio_hw *hw)
 			csio_reduce_sqsets(hw, cnt - extra);
 		}
 	} else {
-		if (rv > 0) {
-			pci_disable_msix(hw->pdev);
+		if (rv > 0)
 			csio_info(hw, "Not using MSI-X, remainder:%d\n", rv);
-		}
 
 		kfree(entries);
 		return -ENOMEM;
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 06/23] csiostor: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (4 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 05/23] csiostor: Remove superfluous call to pci_disable_msix() Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 07/23] fnic: Use pci_enable_msix_exact() " Alexander Gordeev
                   ` (18 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Naresh Kumar Inna, Arvind Bhushan, linux-scsi,
	linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Naresh Kumar Inna <naresh@chelsio.com>
Cc: Arvind Bhushan <arvindb@chelsio.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/csiostor/csio_hw.h  |    2 +-
 drivers/scsi/csiostor/csio_isr.c |   22 +++++++++-------------
 2 files changed, 10 insertions(+), 14 deletions(-)

diff --git a/drivers/scsi/csiostor/csio_hw.h b/drivers/scsi/csiostor/csio_hw.h
index 49b1daa..5db2d85 100644
--- a/drivers/scsi/csiostor/csio_hw.h
+++ b/drivers/scsi/csiostor/csio_hw.h
@@ -94,7 +94,7 @@ enum {
 };
 
 struct csio_msix_entries {
-	unsigned short	vector;		/* Vector assigned by pci_enable_msix */
+	unsigned short	vector;		/* Assigned MSI-X vector */
 	void		*dev_id;	/* Priv object associated w/ this msix*/
 	char		desc[24];	/* Description of this vector */
 };
diff --git a/drivers/scsi/csiostor/csio_isr.c b/drivers/scsi/csiostor/csio_isr.c
index 91ba91d..a8c748a 100644
--- a/drivers/scsi/csiostor/csio_isr.c
+++ b/drivers/scsi/csiostor/csio_isr.c
@@ -499,7 +499,7 @@ csio_reduce_sqsets(struct csio_hw *hw, int cnt)
 static int
 csio_enable_msix(struct csio_hw *hw)
 {
-	int rv, i, j, k, n, min, cnt;
+	int i, j, k, n, min, cnt;
 	struct csio_msix_entries *entryp;
 	struct msix_entry *entries;
 	int extra = CSIO_EXTRA_VECS;
@@ -521,19 +521,15 @@ csio_enable_msix(struct csio_hw *hw)
 
 	csio_dbg(hw, "FW supp #niq:%d, trying %d msix's\n", hw->cfg_niq, cnt);
 
-	while ((rv = pci_enable_msix(hw->pdev, entries, cnt)) >= min)
-		cnt = rv;
-	if (!rv) {
-		if (cnt < (hw->num_sqsets + extra)) {
-			csio_dbg(hw, "Reducing sqsets to %d\n", cnt - extra);
-			csio_reduce_sqsets(hw, cnt - extra);
-		}
-	} else {
-		if (rv > 0)
-			csio_info(hw, "Not using MSI-X, remainder:%d\n", rv);
-
+	cnt = pci_enable_msix_range(hw->pdev, entries, min, cnt);
+	if (cnt < 0) {
 		kfree(entries);
-		return -ENOMEM;
+		return cnt;
+	}
+
+	if (cnt < (hw->num_sqsets + extra)) {
+		csio_dbg(hw, "Reducing sqsets to %d\n", cnt - extra);
+		csio_reduce_sqsets(hw, cnt - extra);
 	}
 
 	/* Save off vectors */
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 07/23] fnic: Use pci_enable_msix_exact() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (5 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 06/23] csiostor: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 08/23] hpsa: Fallback to MSI rather than to INTx if MSI-X failed Alexander Gordeev
                   ` (17 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Hiral Patel, Suma Ramars, Brian Uchino,
	linux-scsi, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Hiral Patel <hiralpat@cisco.com>
Cc: Suma Ramars <sramars@cisco.com>
Cc: Brian Uchino <buchino@cisco.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/fnic/fnic_isr.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/fnic/fnic_isr.c b/drivers/scsi/fnic/fnic_isr.c
index 7d9b54a..a0dd1b6 100644
--- a/drivers/scsi/fnic/fnic_isr.c
+++ b/drivers/scsi/fnic/fnic_isr.c
@@ -257,8 +257,8 @@ int fnic_set_intr_mode(struct fnic *fnic)
 	    fnic->raw_wq_count >= m &&
 	    fnic->wq_copy_count >= o &&
 	    fnic->cq_count >= n + m + o) {
-		if (!pci_enable_msix(fnic->pdev, fnic->msix_entry,
-				    n + m + o + 1)) {
+		if (!pci_enable_msix_exact(fnic->pdev, fnic->msix_entry,
+					   n + m + o + 1)) {
 			fnic->rq_count = n;
 			fnic->raw_wq_count = m;
 			fnic->wq_copy_count = o;
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 08/23] hpsa: Fallback to MSI rather than to INTx if MSI-X failed
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (6 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 07/23] fnic: Use pci_enable_msix_exact() " Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 09/23] hpsa: Use pci_enable_msix_exact() instead of pci_enable_msix() Alexander Gordeev
                   ` (16 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Stephen M. Cameron, iss_storagedev,
	linux-scsi, linux-pci

Currently the driver falls back to INTx mode when MSI-X
initialization failed. This is a suboptimal behaviour
for chips that also support MSI. This update changes that
behaviour and falls back to MSI mode in case MSI-X mode
initialization failed.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: "Stephen M. Cameron" <scameron@beardog.cce.hp.com>
Cc: iss_storagedev@hp.com
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/hpsa.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index 868318a..52cfd19 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -4180,11 +4180,9 @@ static void hpsa_interrupt_mode(struct ctlr_info *h)
 		if (err > 0) {
 			dev_warn(&h->pdev->dev, "only %d MSI-X vectors "
 			       "available\n", err);
-			goto default_int_mode;
 		} else {
 			dev_warn(&h->pdev->dev, "MSI-X init failed %d\n",
 			       err);
-			goto default_int_mode;
 		}
 	}
 	if (pci_find_capability(h->pdev, PCI_CAP_ID_MSI)) {
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 09/23] hpsa: Use pci_enable_msix_exact() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (7 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 08/23] hpsa: Fallback to MSI rather than to INTx if MSI-X failed Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 10/23] isci: " Alexander Gordeev
                   ` (15 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Stephen M. Cameron, iss_storagedev,
	linux-scsi, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: "Stephen M. Cameron" <scameron@beardog.cce.hp.com>
Cc: iss_storagedev@hp.com
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/hpsa.c |   10 ++--------
 1 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index 52cfd19..523a60e 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -4169,7 +4169,7 @@ static void hpsa_interrupt_mode(struct ctlr_info *h)
 		goto default_int_mode;
 	if (pci_find_capability(h->pdev, PCI_CAP_ID_MSIX)) {
 		dev_info(&h->pdev->dev, "MSIX\n");
-		err = pci_enable_msix(h->pdev, hpsa_msix_entries,
+		err = pci_enable_msix_exact(h->pdev, hpsa_msix_entries,
 						MAX_REPLY_QUEUES);
 		if (!err) {
 			for (i = 0; i < MAX_REPLY_QUEUES; i++)
@@ -4177,13 +4177,7 @@ static void hpsa_interrupt_mode(struct ctlr_info *h)
 			h->msix_vector = 1;
 			return;
 		}
-		if (err > 0) {
-			dev_warn(&h->pdev->dev, "only %d MSI-X vectors "
-			       "available\n", err);
-		} else {
-			dev_warn(&h->pdev->dev, "MSI-X init failed %d\n",
-			       err);
-		}
+		dev_warn(&h->pdev->dev, "MSI-X init failed %d\n", err);
 	}
 	if (pci_find_capability(h->pdev, PCI_CAP_ID_MSI)) {
 		dev_info(&h->pdev->dev, "MSI\n");
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 10/23] isci: Use pci_enable_msix_exact() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (8 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 09/23] hpsa: Use pci_enable_msix_exact() instead of pci_enable_msix() Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-03-03 13:56   ` Dorau, Lukasz
  2014-02-24  8:02 ` [PATCH v2 11/23] lpfc: Remove superfluous call to pci_disable_msix() Alexander Gordeev
                   ` (14 subsequent siblings)
  24 siblings, 1 reply; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Lukasz Dorau, Maciej Patelczyk, Dave Jiang,
	intel-linux-scu, linux-scsi, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Lukasz Dorau <lukasz.dorau@intel.com>
Cc: Maciej Patelczyk <maciej.patelczyk@intel.com>
Cc: Dave Jiang <dave.jiang@intel.com>
Cc: intel-linux-scu@intel.com
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/isci/init.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/isci/init.c b/drivers/scsi/isci/init.c
index d25d0d8..ce40538 100644
--- a/drivers/scsi/isci/init.c
+++ b/drivers/scsi/isci/init.c
@@ -356,7 +356,7 @@ static int isci_setup_interrupts(struct pci_dev *pdev)
 	for (i = 0; i < num_msix; i++)
 		pci_info->msix_entries[i].entry = i;
 
-	err = pci_enable_msix(pdev, pci_info->msix_entries, num_msix);
+	err = pci_enable_msix_exact(pdev, pci_info->msix_entries, num_msix);
 	if (err)
 		goto intx;
 
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 11/23] lpfc: Remove superfluous call to pci_disable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (9 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 10/23] isci: " Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 12/23] lpfc: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (13 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, James Smart, linux-scsi, linux-pci

There is no need to call pci_disable_msix() in case
the previous call to pci_enable_msix() failed

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: James Smart <james.smart@emulex.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
Acked-by: James Smart  <james.smart@emulex.com>
---
 drivers/scsi/lpfc/lpfc_init.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index 68c94cc..a9df97a 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -8078,7 +8078,7 @@ lpfc_sli_enable_msix(struct lpfc_hba *phba)
 	if (rc) {
 		lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
 				"0420 PCI enable MSI-X failed (%d)\n", rc);
-		goto msi_fail_out;
+		goto vec_fail_out;
 	}
 	for (i = 0; i < LPFC_MSIX_VECTORS; i++)
 		lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
@@ -8156,6 +8156,8 @@ irq_fail_out:
 msi_fail_out:
 	/* Unconfigure MSI-X capability structure */
 	pci_disable_msix(phba->pcidev);
+
+vec_fail_out:
 	return rc;
 }
 
@@ -8644,7 +8646,7 @@ enable_msix_vectors:
 	} else if (rc) {
 		lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
 				"0484 PCI enable MSI-X failed (%d)\n", rc);
-		goto msi_fail_out;
+		goto vec_fail_out;
 	}
 
 	/* Log MSI-X vector assignment */
@@ -8696,9 +8698,10 @@ cfg_fail_out:
 			 &phba->sli4_hba.fcp_eq_hdl[index]);
 	}
 
-msi_fail_out:
 	/* Unconfigure MSI-X capability structure */
 	pci_disable_msix(phba->pcidev);
+
+vec_fail_out:
 	return rc;
 }
 
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 12/23] lpfc: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (10 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 11/23] lpfc: Remove superfluous call to pci_disable_msix() Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 13/23] megaraid: Fail resume if MSI-X re-initialization failed Alexander Gordeev
                   ` (12 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, James Smart, linux-scsi, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: James Smart <james.smart@emulex.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/lpfc/lpfc_init.c |   45 ++++++++++++++++++----------------------
 1 files changed, 20 insertions(+), 25 deletions(-)

diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index a9df97a..5368f75 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -8047,9 +8047,9 @@ lpfc_sli4_pci_mem_unset(struct lpfc_hba *phba)
  * @phba: pointer to lpfc hba data structure.
  *
  * This routine is invoked to enable the MSI-X interrupt vectors to device
- * with SLI-3 interface specs. The kernel function pci_enable_msix() is
- * called to enable the MSI-X vectors. Note that pci_enable_msix(), once
- * invoked, enables either all or nothing, depending on the current
+ * with SLI-3 interface specs. The kernel function pci_enable_msix_exact()
+ * is called to enable the MSI-X vectors. Note that pci_enable_msix_exact(),
+ * once invoked, enables either all or nothing, depending on the current
  * availability of PCI vector resources. The device driver is responsible
  * for calling the individual request_irq() to register each MSI-X vector
  * with a interrupt handler, which is done in this function. Note that
@@ -8073,8 +8073,8 @@ lpfc_sli_enable_msix(struct lpfc_hba *phba)
 		phba->msix_entries[i].entry = i;
 
 	/* Configure MSI-X capability structure */
-	rc = pci_enable_msix(phba->pcidev, phba->msix_entries,
-				ARRAY_SIZE(phba->msix_entries));
+	rc = pci_enable_msix_exact(phba->pcidev, phba->msix_entries,
+				   ARRAY_SIZE(phba->msix_entries));
 	if (rc) {
 		lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
 				"0420 PCI enable MSI-X failed (%d)\n", rc);
@@ -8187,8 +8187,8 @@ lpfc_sli_disable_msix(struct lpfc_hba *phba)
  * @phba: pointer to lpfc hba data structure.
  *
  * This routine is invoked to enable the MSI interrupt mode to device with
- * SLI-3 interface spec. The kernel function pci_enable_msi() is called to
- * enable the MSI vector. The device driver is responsible for calling the
+ * SLI-3 interface spec. The kernel function pci_enable_msi() is called
+ * to enable the MSI vector. The device driver is responsible for calling the
  * request_irq() to register MSI vector with a interrupt the handler, which
  * is done in this function.
  *
@@ -8611,16 +8611,14 @@ out:
  * @phba: pointer to lpfc hba data structure.
  *
  * This routine is invoked to enable the MSI-X interrupt vectors to device
- * with SLI-4 interface spec. The kernel function pci_enable_msix() is called
- * to enable the MSI-X vectors. Note that pci_enable_msix(), once invoked,
- * enables either all or nothing, depending on the current availability of
- * PCI vector resources. The device driver is responsible for calling the
- * individual request_irq() to register each MSI-X vector with a interrupt
- * handler, which is done in this function. Note that later when device is
- * unloading, the driver should always call free_irq() on all MSI-X vectors
- * it has done request_irq() on before calling pci_disable_msix(). Failure
- * to do so results in a BUG_ON() and a device will be left with MSI-X
- * enabled and leaks its vectors.
+ * with SLI-4 interface spec. The kernel function pci_enable_msix_range()
+ * is called to enable the MSI-X vectors. The device driver is responsible
+ * for calling the individual request_irq() to register each MSI-X vector
+ * with a interrupt handler, which is done in this function. Note that
+ * later when device is unloading, the driver should always call free_irq()
+ * on all MSI-X vectors it has done request_irq() on before calling
+ * pci_disable_msix(). Failure to do so results in a BUG_ON() and a device
+ * will be left with MSI-X enabled and leaks its vectors.
  *
  * Return codes
  * 0 - successful
@@ -8636,17 +8634,14 @@ lpfc_sli4_enable_msix(struct lpfc_hba *phba)
 		phba->sli4_hba.msix_entries[index].entry = index;
 
 	/* Configure MSI-X capability structure */
-	vectors = phba->cfg_fcp_io_channel;
-enable_msix_vectors:
-	rc = pci_enable_msix(phba->pcidev, phba->sli4_hba.msix_entries,
-			     vectors);
-	if (rc > 1) {
-		vectors = rc;
-		goto enable_msix_vectors;
-	} else if (rc) {
+	rc = pci_enable_msix_range(phba->pcidev, phba->sli4_hba.msix_entries,
+				   2, phba->cfg_fcp_io_channel);
+	if (rc < 0) {
 		lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
 				"0484 PCI enable MSI-X failed (%d)\n", rc);
 		goto vec_fail_out;
+	} else {
+		vectors = rc;
 	}
 
 	/* Log MSI-X vector assignment */
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 13/23] megaraid: Fail resume if MSI-X re-initialization failed
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (11 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 12/23] lpfc: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 14/23] megaraid: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (11 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev

Currently the driver fails to analize MSI-X re-enablement
status on resuming and always assumes the success. This
update checks the MSI-X initialization result and fails
to resume if MSI-Xs re-enablement failed.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
---
 drivers/scsi/megaraid/megaraid_sas_base.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
index 3b7ad10..01afe38 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -4667,9 +4667,10 @@ megasas_resume(struct pci_dev *pdev)
 		goto fail_ready_state;
 
 	/* Now re-enable MSI-X */
-	if (instance->msix_vectors)
-		pci_enable_msix(instance->pdev, instance->msixentry,
-				instance->msix_vectors);
+	if (instance->msix_vectors &&
+	    pci_enable_msix(instance->pdev, instance->msixentry,
+			    instance->msix_vectors))
+		goto fail_reenable_msix;
 
 	switch (instance->pdev->device) {
 	case PCI_DEVICE_ID_LSI_FUSION:
@@ -4756,6 +4757,7 @@ fail_init_mfi:
 
 fail_set_dma_mask:
 fail_ready_state:
+fail_reenable_msix:
 
 	pci_disable_device(pdev);
 
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 14/23] megaraid: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (12 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 13/23] megaraid: Fail resume if MSI-X re-initialization failed Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 15/23] mpt2sas: Use pci_enable_msix_exact() " Alexander Gordeev
                   ` (10 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, Neela Syam Kolli, linux-scsi, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Neela Syam Kolli <megaraidlinux@lsi.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/megaraid/megaraid_sas_base.c |   20 +++++++-------------
 1 files changed, 7 insertions(+), 13 deletions(-)

diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
index 01afe38..b276aa3 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -3731,17 +3731,11 @@ static int megasas_init_fw(struct megasas_instance *instance)
 					     (unsigned int)num_online_cpus());
 		for (i = 0; i < instance->msix_vectors; i++)
 			instance->msixentry[i].entry = i;
-		i = pci_enable_msix(instance->pdev, instance->msixentry,
-				    instance->msix_vectors);
-		if (i >= 0) {
-			if (i) {
-				if (!pci_enable_msix(instance->pdev,
-						     instance->msixentry, i))
-					instance->msix_vectors = i;
-				else
-					instance->msix_vectors = 0;
-			}
-		} else
+		i = pci_enable_msix_range(instance->pdev, instance->msixentry,
+					  1, instance->msix_vectors);
+		if (i)
+			instance->msix_vectors = i;
+		else
 			instance->msix_vectors = 0;
 
 		dev_info(&instance->pdev->dev, "[scsi%d]: FW supports"
@@ -4668,8 +4662,8 @@ megasas_resume(struct pci_dev *pdev)
 
 	/* Now re-enable MSI-X */
 	if (instance->msix_vectors &&
-	    pci_enable_msix(instance->pdev, instance->msixentry,
-			    instance->msix_vectors))
+	    pci_enable_msix_exact(instance->pdev, instance->msixentry,
+				  instance->msix_vectors))
 		goto fail_reenable_msix;
 
 	switch (instance->pdev->device) {
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 15/23] mpt2sas: Use pci_enable_msix_exact() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (13 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 14/23] megaraid: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 16/23] mpt3sas: " Alexander Gordeev
                   ` (9 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Nagalakshmi Nandigama, Sreekanth Reddy,
	support, DL-MPTFusionLinux, linux-scsi, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Nagalakshmi Nandigama <Nagalakshmi.Nandigama@lsi.com>
Cc: Sreekanth Reddy <Sreekanth.Reddy@lsi.com>
Cc: support@lsi.com
Cc: DL-MPTFusionLinux@lsi.com
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/mpt2sas/mpt2sas_base.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c
index bde63f7..984b605 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_base.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_base.c
@@ -1432,10 +1432,10 @@ _base_enable_msix(struct MPT2SAS_ADAPTER *ioc)
 	for (i = 0, a = entries; i < ioc->reply_queue_count; i++, a++)
 		a->entry = i;
 
-	r = pci_enable_msix(ioc->pdev, entries, ioc->reply_queue_count);
+	r = pci_enable_msix_exact(ioc->pdev, entries, ioc->reply_queue_count);
 	if (r) {
-		dfailprintk(ioc, printk(MPT2SAS_INFO_FMT "pci_enable_msix "
-		    "failed (r=%d) !!!\n", ioc->name, r));
+		dfailprintk(ioc, printk(MPT2SAS_INFO_FMT
+		    "pci_enable_msix_exact failed (r=%d) !!!\n", ioc->name, r));
 		kfree(entries);
 		goto try_ioapic;
 	}
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 16/23] mpt3sas: Use pci_enable_msix_exact() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (14 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 15/23] mpt2sas: Use pci_enable_msix_exact() " Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 17/23] pm8001: Fix invalid return when request_irq() failed Alexander Gordeev
                   ` (8 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Nagalakshmi Nandigama, Sreekanth Reddy,
	support, DL-MPTFusionLinux, linux-scsi, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Nagalakshmi Nandigama <Nagalakshmi.Nandigama@lsi.com>
Cc: Sreekanth Reddy <Sreekanth.Reddy@lsi.com>
Cc: support@lsi.com
Cc: DL-MPTFusionLinux@lsi.com
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/mpt3sas/mpt3sas_base.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c
index 0cf4f70..7b65ec2 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_base.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
@@ -1747,10 +1747,10 @@ _base_enable_msix(struct MPT3SAS_ADAPTER *ioc)
 	for (i = 0, a = entries; i < ioc->reply_queue_count; i++, a++)
 		a->entry = i;
 
-	r = pci_enable_msix(ioc->pdev, entries, ioc->reply_queue_count);
+	r = pci_enable_msix_exact(ioc->pdev, entries, ioc->reply_queue_count);
 	if (r) {
 		dfailprintk(ioc, pr_info(MPT3SAS_FMT
-			"pci_enable_msix failed (r=%d) !!!\n",
+			"pci_enable_msix_exact failed (r=%d) !!!\n",
 			ioc->name, r));
 		kfree(entries);
 		goto try_ioapic;
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 17/23] pm8001: Fix invalid return when request_irq() failed
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (15 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 16/23] mpt3sas: " Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 18/23] pm8001: Use pci_enable_msix_exact() instead of pci_enable_msix() Alexander Gordeev
                   ` (7 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, xjtuwjp, lindar_liu, linux-scsi, linux-pci

When a call to request_irq() failed pm8001_setup_msix()
still returns the success. This udate fixes the described
misbehaviour.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: xjtuwjp@gmail.com
Cc: lindar_liu@usish.com
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
Acked-by: Jack Wang <xjtuwjp@gmail.com>
---
 drivers/scsi/pm8001/pm8001_init.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
index 73a120d..efffbb9 100644
--- a/drivers/scsi/pm8001/pm8001_init.c
+++ b/drivers/scsi/pm8001/pm8001_init.c
@@ -739,9 +739,10 @@ static u32 pm8001_setup_msix(struct pm8001_hba_info *pm8001_ha)
 			pm8001_ha->irq_vector[i].irq_id = i;
 			pm8001_ha->irq_vector[i].drv_inst = pm8001_ha;
 
-			if (request_irq(pm8001_ha->msix_entries[i].vector,
+			rc = request_irq(pm8001_ha->msix_entries[i].vector,
 				pm8001_interrupt_handler_msix, flag,
-				intr_drvname[i], &(pm8001_ha->irq_vector[i]))) {
+				intr_drvname[i], &(pm8001_ha->irq_vector[i]));
+			if (rc) {
 				for (j = 0; j < i; j++)
 					free_irq(
 					pm8001_ha->msix_entries[j].vector,
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 18/23] pm8001: Use pci_enable_msix_exact() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (16 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 17/23] pm8001: Fix invalid return when request_irq() failed Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 19/23] pmcraid: Get rid of a redundant assignment Alexander Gordeev
                   ` (6 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, xjtuwjp, lindar_liu, linux-scsi, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: xjtuwjp@gmail.com
Cc: lindar_liu@usish.com
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/pm8001/pm8001_init.c |   39 +++++++++++++++++++------------------
 1 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
index efffbb9..0aa9059 100644
--- a/drivers/scsi/pm8001/pm8001_init.c
+++ b/drivers/scsi/pm8001/pm8001_init.c
@@ -724,34 +724,35 @@ static u32 pm8001_setup_msix(struct pm8001_hba_info *pm8001_ha)
 		sizeof(pm8001_ha->msix_entries[0]);
 	for (i = 0; i < max_entry ; i++)
 		pm8001_ha->msix_entries[i].entry = i;
-	rc = pci_enable_msix(pm8001_ha->pdev, pm8001_ha->msix_entries,
+	rc = pci_enable_msix_exact(pm8001_ha->pdev, pm8001_ha->msix_entries,
 		number_of_intr);
 	pm8001_ha->number_of_intr = number_of_intr;
-	if (!rc) {
-		PM8001_INIT_DBG(pm8001_ha, pm8001_printk(
-			"pci_enable_msix request ret:%d no of intr %d\n",
-					rc, pm8001_ha->number_of_intr));
+	if (rc)
+		return rc;
 
+	PM8001_INIT_DBG(pm8001_ha, pm8001_printk(
+		"pci_enable_msix_exact request ret:%d no of intr %d\n",
+				rc, pm8001_ha->number_of_intr));
 
-		for (i = 0; i < number_of_intr; i++) {
-			snprintf(intr_drvname[i], sizeof(intr_drvname[0]),
-					DRV_NAME"%d", i);
-			pm8001_ha->irq_vector[i].irq_id = i;
-			pm8001_ha->irq_vector[i].drv_inst = pm8001_ha;
+	for (i = 0; i < number_of_intr; i++) {
+		snprintf(intr_drvname[i], sizeof(intr_drvname[0]),
+				DRV_NAME"%d", i);
+		pm8001_ha->irq_vector[i].irq_id = i;
+		pm8001_ha->irq_vector[i].drv_inst = pm8001_ha;
 
-			rc = request_irq(pm8001_ha->msix_entries[i].vector,
-				pm8001_interrupt_handler_msix, flag,
-				intr_drvname[i], &(pm8001_ha->irq_vector[i]));
-			if (rc) {
-				for (j = 0; j < i; j++)
-					free_irq(
-					pm8001_ha->msix_entries[j].vector,
+		rc = request_irq(pm8001_ha->msix_entries[i].vector,
+			pm8001_interrupt_handler_msix, flag,
+			intr_drvname[i], &(pm8001_ha->irq_vector[i]));
+		if (rc) {
+			for (j = 0; j < i; j++) {
+				free_irq(pm8001_ha->msix_entries[j].vector,
 					&(pm8001_ha->irq_vector[i]));
-				pci_disable_msix(pm8001_ha->pdev);
-				break;
 			}
+			pci_disable_msix(pm8001_ha->pdev);
+			break;
 		}
 	}
+
 	return rc;
 }
 #endif
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 19/23] pmcraid: Get rid of a redundant assignment
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (17 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 18/23] pm8001: Use pci_enable_msix_exact() instead of pci_enable_msix() Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 20/23] pmcraid: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (5 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, Anil Ravindranath, linux-scsi, linux-pci

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Anil Ravindranath <anil_ravindranath@pmc-sierra.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/pmcraid.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
index be8ce54..c06af7f 100644
--- a/drivers/scsi/pmcraid.c
+++ b/drivers/scsi/pmcraid.c
@@ -4746,7 +4746,6 @@ pmcraid_isr_legacy:
 	pinstance->hrrq_vector[0].drv_inst = pinstance;
 	pinstance->hrrq_vector[0].vector = pdev->irq;
 	pinstance->num_hrrq = 1;
-	rc = 0;
 
 	rc = request_irq(pdev->irq, pmcraid_isr, IRQF_SHARED,
 			 PMCRAID_DRIVER_NAME, &pinstance->hrrq_vector[0]);
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 20/23] pmcraid: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (18 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 19/23] pmcraid: Get rid of a redundant assignment Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 21/23] qla2xxx: " Alexander Gordeev
                   ` (4 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, Anil Ravindranath, linux-scsi, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Anil Ravindranath <anil_ravindranath@pmc-sierra.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/pmcraid.c |   13 ++-----------
 1 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
index c06af7f..6d0f208 100644
--- a/drivers/scsi/pmcraid.c
+++ b/drivers/scsi/pmcraid.c
@@ -4698,19 +4698,10 @@ pmcraid_register_interrupt_handler(struct pmcraid_instance *pinstance)
 		for (i = 0; i < PMCRAID_NUM_MSIX_VECTORS; i++)
 			entries[i].entry = i;
 
-		rc = pci_enable_msix(pdev, entries, num_hrrq);
-		if (rc < 0)
+		num_hrrq = pci_enable_msix_range(pdev, entries, 1, num_hrrq);
+		if (num_hrrq < 0)
 			goto pmcraid_isr_legacy;
 
-		/* Check how many MSIX vectors are allocated and register
-		 * msi-x handlers for each of them giving appropriate buffer
-		 */
-		if (rc > 0) {
-			num_hrrq = rc;
-			if (pci_enable_msix(pdev, entries, num_hrrq))
-				goto pmcraid_isr_legacy;
-		}
-
 		for (i = 0; i < num_hrrq; i++) {
 			pinstance->hrrq_vector[i].hrrq_id = i;
 			pinstance->hrrq_vector[i].drv_inst = pinstance;
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 21/23] qla2xxx: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (19 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 20/23] pmcraid: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 22/23] qla4xxx: Use pci_enable_msix_exact() " Alexander Gordeev
                   ` (3 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexander Gordeev, qla2xxx-upstream, linux-scsi, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Log message code 0x00c6 preserved, although it is reported
after successful call to pci_enable_msix_range(), not before
possibly unsuccessful call to pci_enable_msix(). Consumers
of the error code should not notice the difference.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: qla2xxx-upstream@qlogic.com
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/qla2xxx/qla_isr.c |   27 +++++++++++----------------
 1 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 9bc86b9..b2dcfa4 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -2896,27 +2896,22 @@ qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp)
 	for (i = 0; i < ha->msix_count; i++)
 		entries[i].entry = i;
 
-	ret = pci_enable_msix(ha->pdev, entries, ha->msix_count);
-	if (ret) {
-		if (ret < MIN_MSIX_COUNT)
-			goto msix_failed;
-
+	ret = pci_enable_msix_range(ha->pdev,
+				    entries, MIN_MSIX_COUNT, ha->msix_count);
+	if (ret < 0) {
+		ql_log(ql_log_fatal, vha, 0x00c7,
+		    "MSI-X: Failed to enable support, "
+		    "giving   up -- %d/%d.\n",
+		    ha->msix_count, ret);
+		goto msix_out;
+	} else if (ret < ha->msix_count) {
 		ql_log(ql_log_warn, vha, 0x00c6,
 		    "MSI-X: Failed to enable support "
 		    "-- %d/%d\n Retry with %d vectors.\n",
 		    ha->msix_count, ret, ret);
-		ha->msix_count = ret;
-		ret = pci_enable_msix(ha->pdev, entries, ha->msix_count);
-		if (ret) {
-msix_failed:
-			ql_log(ql_log_fatal, vha, 0x00c7,
-			    "MSI-X: Failed to enable support, "
-			    "giving   up -- %d/%d.\n",
-			    ha->msix_count, ret);
-			goto msix_out;
-		}
-		ha->max_rsp_queues = ha->msix_count - 1;
 	}
+	ha->msix_count = ret;
+	ha->max_rsp_queues = ha->msix_count - 1;
 	ha->msix_entries = kzalloc(sizeof(struct qla_msix_entry) *
 				ha->msix_count, GFP_KERNEL);
 	if (!ha->msix_entries) {
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 22/23] qla4xxx: Use pci_enable_msix_exact() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (20 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 21/23] qla2xxx: " Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-02-24  8:02 ` [PATCH v2 23/23] vmw_pvscsi: " Alexander Gordeev
                   ` (2 subsequent siblings)
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Vikas Chaudhary, iscsi-driver, linux-scsi, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
Cc: iscsi-driver@qlogic.com
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/qla4xxx/ql4_nx.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/qla4xxx/ql4_nx.c b/drivers/scsi/qla4xxx/ql4_nx.c
index d001202..2cfcfbf 100644
--- a/drivers/scsi/qla4xxx/ql4_nx.c
+++ b/drivers/scsi/qla4xxx/ql4_nx.c
@@ -3805,7 +3805,7 @@ qla4_8xxx_enable_msix(struct scsi_qla_host *ha)
 	for (i = 0; i < QLA_MSIX_ENTRIES; i++)
 		entries[i].entry = qla4_8xxx_msix_entries[i].entry;
 
-	ret = pci_enable_msix(ha->pdev, entries, ARRAY_SIZE(entries));
+	ret = pci_enable_msix_exact(ha->pdev, entries, ARRAY_SIZE(entries));
 	if (ret) {
 		ql4_printk(KERN_WARNING, ha,
 		    "MSI-X: Failed to enable support -- %d/%d\n",
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 23/23] vmw_pvscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (21 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 22/23] qla4xxx: Use pci_enable_msix_exact() " Alexander Gordeev
@ 2014-02-24  8:02 ` Alexander Gordeev
  2014-03-04 19:27   ` Arvind Kumar
  2014-02-25  8:37 ` [PATCH v2 00/23] scsi: Use pci_enable_msix_range() " Alexander Gordeev
  2014-03-13  4:04 ` Bjorn Helgaas
  24 siblings, 1 reply; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-24  8:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Arvind Kumar, pv-drivers, linux-scsi, linux-pci

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Arvind Kumar <arvindkumar@vmware.com>
Cc: pv-drivers@vmware.com
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/vmw_pvscsi.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/vmw_pvscsi.c b/drivers/scsi/vmw_pvscsi.c
index b9755ec..a046618 100644
--- a/drivers/scsi/vmw_pvscsi.c
+++ b/drivers/scsi/vmw_pvscsi.c
@@ -1078,7 +1078,7 @@ static int pvscsi_setup_msix(const struct pvscsi_adapter *adapter,
 	struct msix_entry entry = { 0, PVSCSI_VECTOR_COMPLETION };
 	int ret;
 
-	ret = pci_enable_msix(adapter->dev, &entry, 1);
+	ret = pci_enable_msix_exact(adapter->dev, &entry, 1);
 	if (ret)
 		return ret;
 
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* Re: [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (22 preceding siblings ...)
  2014-02-24  8:02 ` [PATCH v2 23/23] vmw_pvscsi: " Alexander Gordeev
@ 2014-02-25  8:37 ` Alexander Gordeev
  2014-03-13  4:04 ` Bjorn Helgaas
  24 siblings, 0 replies; 34+ messages in thread
From: Alexander Gordeev @ 2014-02-25  8:37 UTC (permalink / raw)
  To: linux-kernel
  Cc: iss_storagedev, intel-linux-scu, support, DL-MPTFusionLinux,
	qla2xxx-upstream, iscsi-driver, pv-drivers, linux-scsi,
	linux-pci

On Mon, Feb 24, 2014 at 09:02:00AM +0100, Alexander Gordeev wrote:
> This series is against James Bottomley's SCSI tree [1], but it needs
> commit f7fc32c ("PCI/MSI: Add pci_enable_msi_exact() and
> pci_enable_msix_exact()") from from Bjorn Helgaas's PCI tree [2]:

The prerequisite commit 3ce4e86 is in 3.14-rc4 now.

-- 
Regards,
Alexander Gordeev
agordeev@redhat.com

^ permalink raw reply	[flat|nested] 34+ messages in thread

* RE: [PATCH v2 02/23] bfa: Do not call pci_enable_msix() after it failed once
  2014-02-24  8:02 ` [PATCH v2 02/23] bfa: Do not call pci_enable_msix() after it failed once Alexander Gordeev
@ 2014-03-02  8:01   ` Anil Gurumurthy
  0 siblings, 0 replies; 34+ messages in thread
From: Anil Gurumurthy @ 2014-03-02  8:01 UTC (permalink / raw)
  To: Alexander Gordeev, linux-kernel; +Cc: linux-scsi, linux-pci

Patch look good.
Acked-by: Anil Gurumurthy <anil.gurumurthy@qlogic.com>

-----Original Message-----
From: linux-scsi-owner@vger.kernel.org [mailto:linux-scsi-owner@vger.kernel.org] On Behalf Of Alexander Gordeev
Sent: 24 February 2014 13:32
To: linux-kernel
Cc: Alexander Gordeev; Anil Gurumurthy; Vijaya Mohan Guvva; linux-scsi; linux-pci
Subject: [PATCH v2 02/23] bfa: Do not call pci_enable_msix() after it failed once

Function pci_enable_msix() should not be called in case it threw a negative errno from a previous call.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Anil Gurumurthy <agurumur@brocade.com>
Cc: Vijaya Mohan Guvva <vmohan@brocade.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/bfa/bfad.c |   48 ++++++++++++++++++++++------------------------
 1 files changed, 23 insertions(+), 25 deletions(-)

diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c index cc0fbcd..972ff8d 100644
--- a/drivers/scsi/bfa/bfad.c
+++ b/drivers/scsi/bfa/bfad.c
@@ -1235,33 +1235,31 @@ bfad_setup_intr(struct bfad_s *bfad)
           (bfa_asic_id_cb(pdev->device) && !msix_disable_cb)) {

                error = pci_enable_msix(bfad->pcidev, msix_entries, bfad->nvec);
-               if (error) {
-                       /* In CT1 & CT2, try to allocate just one vector */
-                       if (bfa_asic_id_ctc(pdev->device)) {
-                               printk(KERN_WARNING "bfa %s: trying one msix "
-                                      "vector failed to allocate %d[%d]\n",
-                                      bfad->pci_name, bfad->nvec, error);
-                               bfad->nvec = 1;
-                               error = pci_enable_msix(bfad->pcidev,
+               /* In CT1 & CT2, try to allocate just one vector */
+               if (error > 0 && bfa_asic_id_ctc(pdev->device)) {
+                       printk(KERN_WARNING "bfa %s: trying one msix "
+                              "vector failed to allocate %d[%d]\n",
+                              bfad->pci_name, bfad->nvec, error);
+                       bfad->nvec = 1;
+                       error = pci_enable_msix(bfad->pcidev,
                                                msix_entries, bfad->nvec);
-                       }
+               }

-                       /*
-                        * Only error number of vector is available.
-                        * We don't have a mechanism to map multiple
-                        * interrupts into one vector, so even if we
-                        * can try to request less vectors, we don't
-                        * know how to associate interrupt events to
-                        *  vectors. Linux doesn't duplicate vectors
-                        * in the MSIX table for this case.
-                        */
-                       if (error) {
-                               printk(KERN_WARNING "bfad%d: "
-                                      "pci_enable_msix failed (%d), "
-                                      "use line based.\n",
-                                       bfad->inst_no, error);
-                               goto line_based;
-                       }
+               /*
+                * Only error number of vector is available.
+                * We don't have a mechanism to map multiple
+                * interrupts into one vector, so even if we
+                * can try to request less vectors, we don't
+                * know how to associate interrupt events to
+                *  vectors. Linux doesn't duplicate vectors
+                * in the MSIX table for this case.
+                */
+               if (error) {
+                       printk(KERN_WARNING "bfad%d: "
+                              "pci_enable_msix failed (%d), "
+                              "use line based.\n",
+                               bfad->inst_no, error);
+                       goto line_based;
                }

                /* Disable INTX in MSI-X mode */
--
1.7.7.6

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@vger.kernel.org More majordomo info at  http://vger.kernel.org/majordomo-info.html

________________________________

This message and any attached documents contain information from QLogic Corporation or its wholly-owned subsidiaries that may be confidential. If you are not the intended recipient, you may not read, copy, distribute, or use this information. If you have received this transmission in error, please notify the sender immediately by reply e-mail and then delete this message.

^ permalink raw reply	[flat|nested] 34+ messages in thread

* RE: [PATCH v2 03/23] bfa: Cleanup bfad_setup_intr() function
  2014-02-24  8:02 ` [PATCH v2 03/23] bfa: Cleanup bfad_setup_intr() function Alexander Gordeev
@ 2014-03-02  8:02   ` Anil Gurumurthy
  0 siblings, 0 replies; 34+ messages in thread
From: Anil Gurumurthy @ 2014-03-02  8:02 UTC (permalink / raw)
  To: Alexander Gordeev, linux-kernel; +Cc: linux-scsi, linux-pci

Patch look good.
Acked-by: Anil Gurumurthy <anil.gurumurthy@qlogic.com>

-----Original Message-----
From: linux-scsi-owner@vger.kernel.org [mailto:linux-scsi-owner@vger.kernel.org] On Behalf Of Alexander Gordeev
Sent: 24 February 2014 13:32
To: linux-kernel
Cc: Alexander Gordeev; Anil Gurumurthy; Vijaya Mohan Guvva; linux-scsi; linux-pci
Subject: [PATCH v2 03/23] bfa: Cleanup bfad_setup_intr() function

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Anil Gurumurthy <agurumur@brocade.com>
Cc: Vijaya Mohan Guvva <vmohan@brocade.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/bfa/bfad.c |   18 ++++++++----------
 1 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c index 972ff8d..e7e4774 100644
--- a/drivers/scsi/bfa/bfad.c
+++ b/drivers/scsi/bfa/bfad.c
@@ -1219,7 +1219,7 @@ bfad_install_msix_handler(struct bfad_s *bfad)  int  bfad_setup_intr(struct bfad_s *bfad)  {
-       int error = 0;
+       int error;
        u32 mask = 0, i, num_bit = 0, max_bit = 0;
        struct msix_entry msix_entries[MAX_MSIX_ENTRY];
        struct pci_dev *pdev = bfad->pcidev;
@@ -1279,20 +1279,18 @@ bfad_setup_intr(struct bfad_s *bfad)

                bfad->bfad_flags |= BFAD_MSIX_ON;

-               return error;
+               return 0;
        }

 line_based:
-       error = 0;
-       if (request_irq
-           (bfad->pcidev->irq, (irq_handler_t) bfad_intx, BFAD_IRQ_FLAGS,
-            BFAD_DRIVER_NAME, bfad) != 0) {
-               /* Enable interrupt handler failed */
-               return 1;
-       }
+       error = request_irq(bfad->pcidev->irq, (irq_handler_t)bfad_intx,
+                           BFAD_IRQ_FLAGS, BFAD_DRIVER_NAME, bfad);
+       if (error)
+               return error;
+
        bfad->bfad_flags |= BFAD_INTX_ON;

-       return error;
+       return 0;
 }

 void
--
1.7.7.6

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@vger.kernel.org More majordomo info at  http://vger.kernel.org/majordomo-info.html

________________________________

This message and any attached documents contain information from QLogic Corporation or its wholly-owned subsidiaries that may be confidential. If you are not the intended recipient, you may not read, copy, distribute, or use this information. If you have received this transmission in error, please notify the sender immediately by reply e-mail and then delete this message.

^ permalink raw reply	[flat|nested] 34+ messages in thread

* RE: [PATCH v2 10/23] isci: Use pci_enable_msix_exact() instead of pci_enable_msix()
  2014-02-24  8:02 ` [PATCH v2 10/23] isci: " Alexander Gordeev
@ 2014-03-03 13:56   ` Dorau, Lukasz
  0 siblings, 0 replies; 34+ messages in thread
From: Dorau, Lukasz @ 2014-03-03 13:56 UTC (permalink / raw)
  To: Alexander Gordeev
  Cc: Patelczyk, Maciej, Jiang, Dave, intel-linux-scu, linux-scsi,
	linux-pci, linux-kernel, Paszkiewicz, Artur

On Monday, February 24, 2014 9:02 AM Alexander Gordeev <agordeev@redhat.com> wrote:
> As result of deprecation of MSI-X/MSI enablement functions
> pci_enable_msix() and pci_enable_msi_block() all drivers
> using these two interfaces need to be updated to use the
> new pci_enable_msi_range()  or pci_enable_msi_exact()
> and pci_enable_msix_range() or pci_enable_msix_exact()
> interfaces.
> 
> Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
> Cc: Lukasz Dorau <lukasz.dorau@intel.com>
> Cc: Maciej Patelczyk <maciej.patelczyk@intel.com>
> Cc: Dave Jiang <dave.jiang@intel.com>
> Cc: intel-linux-scu@intel.com
> Cc: linux-scsi@vger.kernel.org
> Cc: linux-pci@vger.kernel.org
> ---
>  drivers/scsi/isci/init.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/scsi/isci/init.c b/drivers/scsi/isci/init.c
> index d25d0d8..ce40538 100644
> --- a/drivers/scsi/isci/init.c
> +++ b/drivers/scsi/isci/init.c
> @@ -356,7 +356,7 @@ static int isci_setup_interrupts(struct pci_dev *pdev)
>  	for (i = 0; i < num_msix; i++)
>  		pci_info->msix_entries[i].entry = i;
> 
> -	err = pci_enable_msix(pdev, pci_info->msix_entries, num_msix);
> +	err = pci_enable_msix_exact(pdev, pci_info->msix_entries, num_msix);
>  	if (err)
>  		goto intx;
> 
> --
> 1.7.7.6

Looks fine.

Acked-by: Lukasz Dorau <lukasz.dorau@intel.com>

Thanks,
Lukasz


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v2 23/23] vmw_pvscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
  2014-02-24  8:02 ` [PATCH v2 23/23] vmw_pvscsi: " Alexander Gordeev
@ 2014-03-04 19:27   ` Arvind Kumar
  0 siblings, 0 replies; 34+ messages in thread
From: Arvind Kumar @ 2014-03-04 19:27 UTC (permalink / raw)
  To: Alexander Gordeev; +Cc: linux-kernel, pv-drivers, linux-scsi, linux-pci

Hi Alexander,

This looks fine to me.

Acked-by: Arvind Kumar <arvindkumar@vmware.com>

Thanks!
Arvind

----- Original Message -----
From: "Alexander Gordeev" <agordeev@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: "Alexander Gordeev" <agordeev@redhat.com>, "Arvind Kumar" <arvindkumar@vmware.com>, pv-drivers@vmware.com, linux-scsi@vger.kernel.org, linux-pci@vger.kernel.org
Sent: Monday, February 24, 2014 12:02:23 AM
Subject: [PATCH v2 23/23] vmw_pvscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range()  or pci_enable_msi_exact()
and pci_enable_msix_range() or pci_enable_msix_exact()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Arvind Kumar <arvindkumar@vmware.com>
Cc: pv-drivers@vmware.com
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/vmw_pvscsi.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/vmw_pvscsi.c b/drivers/scsi/vmw_pvscsi.c
index b9755ec..a046618 100644
--- a/drivers/scsi/vmw_pvscsi.c
+++ b/drivers/scsi/vmw_pvscsi.c
@@ -1078,7 +1078,7 @@ static int pvscsi_setup_msix(const struct pvscsi_adapter *adapter,
 	struct msix_entry entry = { 0, PVSCSI_VECTOR_COMPLETION };
 	int ret;
 
-	ret = pci_enable_msix(adapter->dev, &entry, 1);
+	ret = pci_enable_msix_exact(adapter->dev, &entry, 1);
 	if (ret)
 		return ret;
 
-- 
1.7.7.6

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* RE: [PATCH v2 01/23] be2iscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
  2014-02-24  8:02 ` [PATCH v2 01/23] be2iscsi: Use pci_enable_msix_exact() " Alexander Gordeev
@ 2014-03-11 17:06   ` Jayamohan Kallickal
  0 siblings, 0 replies; 34+ messages in thread
From: Jayamohan Kallickal @ 2014-03-11 17:06 UTC (permalink / raw)
  To: Alexander Gordeev, linux-kernel; +Cc: linux-scsi, linux-pci



-----Original Message-----
From: Alexander Gordeev [mailto:agordeev@redhat.com] 
Sent: Monday, February 24, 2014 12:02 AM
To: linux-kernel@vger.kernel.org
Cc: Alexander Gordeev; Jayamohan Kallickal; linux-scsi@vger.kernel.org; linux-pci@vger.kernel.org
Subject: [PATCH v2 01/23] be2iscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers using these two interfaces need to be updated to use the new pci_enable_msi_range()  or pci_enable_msi_exact() and pci_enable_msix_range() or pci_enable_msix_exact() interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/scsi/be2iscsi/be_main.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c index 1f37505..580192f 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -5284,12 +5284,10 @@ static void beiscsi_msix_enable(struct beiscsi_hba *phba)
 	for (i = 0; i <= phba->num_cpus; i++)
 		phba->msix_entries[i].entry = i;
 
-	status = pci_enable_msix(phba->pcidev, phba->msix_entries,
-				 (phba->num_cpus + 1));
+	status = pci_enable_msix_exact(phba->pcidev, phba->msix_entries,
+				       phba->num_cpus + 1);
 	if (!status)
 		phba->msix_enabled = true;
-
-	return;
 }
 
 /*
--
1.7.7.6

Acked-By: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>

--


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
                   ` (23 preceding siblings ...)
  2014-02-25  8:37 ` [PATCH v2 00/23] scsi: Use pci_enable_msix_range() " Alexander Gordeev
@ 2014-03-13  4:04 ` Bjorn Helgaas
  2014-03-13  7:04   ` James Bottomley
  2014-04-02 11:49   ` Alexander Gordeev
  24 siblings, 2 replies; 34+ messages in thread
From: Bjorn Helgaas @ 2014-03-13  4:04 UTC (permalink / raw)
  To: Alexander Gordeev, James E.J. Bottomley
  Cc: linux-kernel, iss_storagedev, intel-linux-scu, support,
	DL-MPTFusionLinux, qla2xxx-upstream, iscsi-driver, pv-drivers,
	linux-scsi, linux-pci

On Mon, Feb 24, 2014 at 09:02:00AM +0100, Alexander Gordeev wrote:
> Hello!
> 
> This series is against James Bottomley's SCSI tree [1], but it needs
> commit f7fc32c ("PCI/MSI: Add pci_enable_msi_exact() and
> pci_enable_msix_exact()") from from Bjorn Helgaas's PCI tree [2]:
> 
> 1. git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
> 2. git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git pci/msi
> 
> Recently pci_enable_msix_exact() function has been accepted to
> the mainline. That is a variation of pci_enable_msix_range() which
> allows a device driver to request a particular number of MSI-Xs.
> 
> As result, most of the changes posted in version 1 of this series
> are invalidated and need to use pci_enable_msix_exact() instead of
> originally posted pci_enable_msix_range() usages.
> 
> I removed almost all ACKs, since unlike pci_enable_msix_range()
> function which returns the number of MSI-Xs allocated or negative
> errno, pci_enable_msix_exact() returns either zero success code or
> a negative errno. Although this change is simple, it still entails
> an updated error code analysis and would be better reviewed by
> driver maintainers.

Hi James,

I think Alexander sent these to linux-scsi hoping that you would handle
them, but I know it's a hassle because they depend on f7fc32c, which went
in after the merge window.

I'd be glad to review these and apply them through my tree, unless you want
to do it.  I'd like to get these merged in the v3.15 merge window so
Alexander can move on to something else.  I haven't checked for merge
conflicts with scsi.git yet, but I assume they'd be pretty trivial if there
are any.

Bjorn

> Cc: iss_storagedev@hp.com
> Cc: intel-linux-scu@intel.com
> Cc: support@lsi.com
> Cc: DL-MPTFusionLinux@lsi.com
> Cc: qla2xxx-upstream@qlogic.com
> Cc: iscsi-driver@qlogic.com
> Cc: pv-drivers@vmware.com
> Cc: linux-scsi@vger.kernel.org
> Cc: linux-pci@vger.kernel.org
> 
> Alexander Gordeev (23):
>   be2iscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
>   bfa: Do not call pci_enable_msix() after it failed once
>   bfa: Cleanup bfad_setup_intr() function
>   bfa: Use pci_enable_msix_exact() instead of pci_enable_msix()
>   csiostor: Remove superfluous call to pci_disable_msix()
>   csiostor: Use pci_enable_msix_range() instead of pci_enable_msix()
>   fnic: Use pci_enable_msix_exact() instead of pci_enable_msix()
>   hpsa: Fallback to MSI rather than to INTx if MSI-X failed
>   hpsa: Use pci_enable_msix_exact() instead of pci_enable_msix()
>   isci: Use pci_enable_msix_exact() instead of pci_enable_msix()
>   lpfc: Remove superfluous call to pci_disable_msix()
>   lpfc: Use pci_enable_msix_range() instead of pci_enable_msix()
>   megaraid: Fail resume if MSI-X re-initialization failed
>   megaraid: Use pci_enable_msix_range() instead of pci_enable_msix()
>   mpt2sas: Use pci_enable_msix_exact() instead of pci_enable_msix()
>   mpt3sas: Use pci_enable_msix_exact() instead of pci_enable_msix()
>   pm8001: Fix invalid return when request_irq() failed
>   pm8001: Use pci_enable_msix_exact() instead of pci_enable_msix()
>   pmcraid: Get rid of a redundant assignment
>   pmcraid: Use pci_enable_msix_range() instead of pci_enable_msix()
>   qla2xxx: Use pci_enable_msix_range() instead of pci_enable_msix()
>   qla4xxx: Use pci_enable_msix_exact() instead of pci_enable_msix()
>   vmw_pvscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
> 
>  drivers/scsi/be2iscsi/be_main.c           |    6 +--
>  drivers/scsi/bfa/bfad.c                   |   62 ++++++++++++-----------------
>  drivers/scsi/csiostor/csio_hw.h           |    2 +-
>  drivers/scsi/csiostor/csio_isr.c          |   24 ++++-------
>  drivers/scsi/fnic/fnic_isr.c              |    4 +-
>  drivers/scsi/hpsa.c                       |   12 +-----
>  drivers/scsi/isci/init.c                  |    2 +-
>  drivers/scsi/lpfc/lpfc_init.c             |   54 ++++++++++++-------------
>  drivers/scsi/megaraid/megaraid_sas_base.c |   24 +++++------
>  drivers/scsi/mpt2sas/mpt2sas_base.c       |    6 +-
>  drivers/scsi/mpt3sas/mpt3sas_base.c       |    4 +-
>  drivers/scsi/pm8001/pm8001_init.c         |   44 +++++++++++----------
>  drivers/scsi/pmcraid.c                    |   14 +------
>  drivers/scsi/qla2xxx/qla_isr.c            |   27 +++++-------
>  drivers/scsi/qla4xxx/ql4_nx.c             |    2 +-
>  drivers/scsi/vmw_pvscsi.c                 |    2 +-
>  16 files changed, 121 insertions(+), 168 deletions(-)
> 
> -- 
> 1.7.7.6
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-03-13  4:04 ` Bjorn Helgaas
@ 2014-03-13  7:04   ` James Bottomley
  2014-04-02 11:49   ` Alexander Gordeev
  1 sibling, 0 replies; 34+ messages in thread
From: James Bottomley @ 2014-03-13  7:04 UTC (permalink / raw)
  To: bhelgaas
  Cc: DL-MPTFusionLinux, linux-kernel, intel-linux-scu, iss_storagedev,
	linux-scsi, pv-drivers, qla2xxx-upstream, agordeev, linux-pci,
	support, iscsi-driver

On Wed, 2014-03-12 at 22:04 -0600, Bjorn Helgaas wrote:
> On Mon, Feb 24, 2014 at 09:02:00AM +0100, Alexander Gordeev wrote:
> > Hello!
> > 
> > This series is against James Bottomley's SCSI tree [1], but it needs
> > commit f7fc32c ("PCI/MSI: Add pci_enable_msi_exact() and
> > pci_enable_msix_exact()") from from Bjorn Helgaas's PCI tree [2]:
> > 
> > 1. git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
> > 2. git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git pci/msi
> > 
> > Recently pci_enable_msix_exact() function has been accepted to
> > the mainline. That is a variation of pci_enable_msix_range() which
> > allows a device driver to request a particular number of MSI-Xs.
> > 
> > As result, most of the changes posted in version 1 of this series
> > are invalidated and need to use pci_enable_msix_exact() instead of
> > originally posted pci_enable_msix_range() usages.
> > 
> > I removed almost all ACKs, since unlike pci_enable_msix_range()
> > function which returns the number of MSI-Xs allocated or negative
> > errno, pci_enable_msix_exact() returns either zero success code or
> > a negative errno. Although this change is simple, it still entails
> > an updated error code analysis and would be better reviewed by
> > driver maintainers.
> 
> Hi James,
> 
> I think Alexander sent these to linux-scsi hoping that you would handle
> them, but I know it's a hassle because they depend on f7fc32c, which went
> in after the merge window.
> 
> I'd be glad to review these and apply them through my tree, unless you want
> to do it.  I'd like to get these merged in the v3.15 merge window so
> Alexander can move on to something else.  I haven't checked for merge
> conflicts with scsi.git yet, but I assume they'd be pretty trivial if there
> are any.

Sure, any that haven't been applied ... I think we already have some
updates for drivers which do MSIX changes, but for those you'll see the
conflict with scsi.git and you can just drop the patch for that driver.

James


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-03-13  4:04 ` Bjorn Helgaas
  2014-03-13  7:04   ` James Bottomley
@ 2014-04-02 11:49   ` Alexander Gordeev
  2014-04-02 17:00     ` Bjorn Helgaas
  1 sibling, 1 reply; 34+ messages in thread
From: Alexander Gordeev @ 2014-04-02 11:49 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: James E.J. Bottomley, linux-kernel, iss_storagedev,
	intel-linux-scu, support, DL-MPTFusionLinux, qla2xxx-upstream,
	iscsi-driver, pv-drivers, linux-scsi, linux-pci

On Wed, Mar 12, 2014 at 10:04:40PM -0600, Bjorn Helgaas wrote:
> Hi James,
> 
> I think Alexander sent these to linux-scsi hoping that you would handle
> them, but I know it's a hassle because they depend on f7fc32c, which went
> in after the merge window.
> 
> I'd be glad to review these and apply them through my tree, unless you want
> to do it.  I'd like to get these merged in the v3.15 merge window so
> Alexander can move on to something else.  I haven't checked for merge
> conflicts with scsi.git yet, but I assume they'd be pretty trivial if there
> are any.

Hi Bjorn,

It has shifted to v3.16, right?

> Bjorn

-- 
Regards,
Alexander Gordeev
agordeev@redhat.com

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-04-02 11:49   ` Alexander Gordeev
@ 2014-04-02 17:00     ` Bjorn Helgaas
  0 siblings, 0 replies; 34+ messages in thread
From: Bjorn Helgaas @ 2014-04-02 17:00 UTC (permalink / raw)
  To: Alexander Gordeev
  Cc: James E.J. Bottomley, linux-kernel, iss_storagedev,
	intel-linux-scu, Support, DL-MPT Fusion Linux, qla2xxx-upstream,
	iscsi-driver, pv-drivers, linux-scsi, linux-pci

On Wed, Apr 2, 2014 at 5:49 AM, Alexander Gordeev <agordeev@redhat.com> wrote:
> On Wed, Mar 12, 2014 at 10:04:40PM -0600, Bjorn Helgaas wrote:
>> Hi James,
>>
>> I think Alexander sent these to linux-scsi hoping that you would handle
>> them, but I know it's a hassle because they depend on f7fc32c, which went
>> in after the merge window.
>>
>> I'd be glad to review these and apply them through my tree, unless you want
>> to do it.  I'd like to get these merged in the v3.15 merge window so
>> Alexander can move on to something else.  I haven't checked for merge
>> conflicts with scsi.git yet, but I assume they'd be pretty trivial if there
>> are any.
>
> Hi Bjorn,
>
> It has shifted to v3.16, right?

Yep, sorry, I meant to get to these, but was too busy, so they'll
probably go in v3.16.

Bjorn

^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2014-04-02 17:00 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-24  8:02 [PATCH v2 00/23] scsi: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 01/23] be2iscsi: Use pci_enable_msix_exact() " Alexander Gordeev
2014-03-11 17:06   ` Jayamohan Kallickal
2014-02-24  8:02 ` [PATCH v2 02/23] bfa: Do not call pci_enable_msix() after it failed once Alexander Gordeev
2014-03-02  8:01   ` Anil Gurumurthy
2014-02-24  8:02 ` [PATCH v2 03/23] bfa: Cleanup bfad_setup_intr() function Alexander Gordeev
2014-03-02  8:02   ` Anil Gurumurthy
2014-02-24  8:02 ` [PATCH v2 04/23] bfa: Use pci_enable_msix_exact() instead of pci_enable_msix() Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 05/23] csiostor: Remove superfluous call to pci_disable_msix() Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 06/23] csiostor: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 07/23] fnic: Use pci_enable_msix_exact() " Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 08/23] hpsa: Fallback to MSI rather than to INTx if MSI-X failed Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 09/23] hpsa: Use pci_enable_msix_exact() instead of pci_enable_msix() Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 10/23] isci: " Alexander Gordeev
2014-03-03 13:56   ` Dorau, Lukasz
2014-02-24  8:02 ` [PATCH v2 11/23] lpfc: Remove superfluous call to pci_disable_msix() Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 12/23] lpfc: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 13/23] megaraid: Fail resume if MSI-X re-initialization failed Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 14/23] megaraid: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 15/23] mpt2sas: Use pci_enable_msix_exact() " Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 16/23] mpt3sas: " Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 17/23] pm8001: Fix invalid return when request_irq() failed Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 18/23] pm8001: Use pci_enable_msix_exact() instead of pci_enable_msix() Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 19/23] pmcraid: Get rid of a redundant assignment Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 20/23] pmcraid: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 21/23] qla2xxx: " Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 22/23] qla4xxx: Use pci_enable_msix_exact() " Alexander Gordeev
2014-02-24  8:02 ` [PATCH v2 23/23] vmw_pvscsi: " Alexander Gordeev
2014-03-04 19:27   ` Arvind Kumar
2014-02-25  8:37 ` [PATCH v2 00/23] scsi: Use pci_enable_msix_range() " Alexander Gordeev
2014-03-13  4:04 ` Bjorn Helgaas
2014-03-13  7:04   ` James Bottomley
2014-04-02 11:49   ` Alexander Gordeev
2014-04-02 17:00     ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).