linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] ib: Use pci_enable_msix_range() instead of pci_enable_msix()
@ 2014-02-18 15:09 Alexander Gordeev
  2014-02-18 15:09 ` [PATCH 1/2] mthca: " Alexander Gordeev
  2014-02-18 15:09 ` [PATCH 2/2] qib: Use pci_enable_msix_range() " Alexander Gordeev
  0 siblings, 2 replies; 7+ messages in thread
From: Alexander Gordeev @ 2014-02-18 15:09 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Roland Dreier, Sean Hefty, Hal Rosenstock,
	linux-rdma, 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() and pci_enable_msix_range()
interfaces.

Cc: Roland Dreier <roland@kernel.org>
Cc: Sean Hefty <sean.hefty@intel.com>
Cc: Hal Rosenstock <hal.rosenstock@gmail.com>
Cc: linux-rdma@vger.kernel.org
Cc: linux-pci@vger.kernel.org

Alexander Gordeev (2):
  mthca: Use pci_enable_msix_range() instead of pci_enable_msix()
  qib: Use pci_enable_msix_range() instead of pci_enable_msix()

 drivers/infiniband/hw/mthca/mthca_main.c |    9 ++---
 drivers/infiniband/hw/qib/qib_pcie.c     |   55 +++++++++++++++--------------
 2 files changed, 31 insertions(+), 33 deletions(-)

-- 
1.7.7.6


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

* [PATCH 1/2] mthca: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 15:09 [PATCH 0/2] ib: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
@ 2014-02-18 15:09 ` Alexander Gordeev
  2014-02-23  6:57   ` [PATCH v2 1/2] IB/mthca: Use pci_enable_msix_exact() " Alexander Gordeev
  2014-02-18 15:09 ` [PATCH 2/2] qib: Use pci_enable_msix_range() " Alexander Gordeev
  1 sibling, 1 reply; 7+ messages in thread
From: Alexander Gordeev @ 2014-02-18 15:09 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Roland Dreier, Sean Hefty, Hal Rosenstock,
	linux-rdma, 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() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Roland Dreier <roland@kernel.org>
Cc: Sean Hefty <sean.hefty@intel.com>
Cc: Hal Rosenstock <hal.rosenstock@gmail.com>
Cc: linux-rdma@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/infiniband/hw/mthca/mthca_main.c |    9 +++------
 1 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/infiniband/hw/mthca/mthca_main.c b/drivers/infiniband/hw/mthca/mthca_main.c
index 87897b9..959d600 100644
--- a/drivers/infiniband/hw/mthca/mthca_main.c
+++ b/drivers/infiniband/hw/mthca/mthca_main.c
@@ -858,13 +858,10 @@ static int mthca_enable_msi_x(struct mthca_dev *mdev)
 	entries[1].entry = 1;
 	entries[2].entry = 2;
 
-	err = pci_enable_msix(mdev->pdev, entries, ARRAY_SIZE(entries));
-	if (err) {
-		if (err > 0)
-			mthca_info(mdev, "Only %d MSI-X vectors available, "
-				   "not using MSI-X\n", err);
+	err = pci_enable_msix_range(mdev->pdev, entries,
+				    ARRAY_SIZE(entries), ARRAY_SIZE(entries));
+	if (err < 0)
 		return err;
-	}
 
 	mdev->eq_table.eq[MTHCA_EQ_COMP ].msi_x_vector = entries[0].vector;
 	mdev->eq_table.eq[MTHCA_EQ_ASYNC].msi_x_vector = entries[1].vector;
-- 
1.7.7.6


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

* [PATCH 2/2] qib: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 15:09 [PATCH 0/2] ib: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
  2014-02-18 15:09 ` [PATCH 1/2] mthca: " Alexander Gordeev
@ 2014-02-18 15:09 ` Alexander Gordeev
  2014-02-18 16:52   ` Marciniszyn, Mike
  2014-02-19 23:11   ` Marciniszyn, Mike
  1 sibling, 2 replies; 7+ messages in thread
From: Alexander Gordeev @ 2014-02-18 15:09 UTC (permalink / raw)
  To: linux-kernel
  Cc: Alexander Gordeev, Mike Marciniszyn, Roland Dreier, Sean Hefty,
	Hal Rosenstock, linux-rdma, 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() and pci_enable_msix_range()
interfaces.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Mike Marciniszyn <infinipath@intel.com>
Cc: Roland Dreier <roland@kernel.org>
Cc: Sean Hefty <sean.hefty@intel.com>
Cc: Hal Rosenstock <hal.rosenstock@gmail.com>
Cc: linux-rdma@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/infiniband/hw/qib/qib_pcie.c |   55 +++++++++++++++++----------------
 1 files changed, 28 insertions(+), 27 deletions(-)

diff --git a/drivers/infiniband/hw/qib/qib_pcie.c b/drivers/infiniband/hw/qib/qib_pcie.c
index c8d9c4a..61a0046 100644
--- a/drivers/infiniband/hw/qib/qib_pcie.c
+++ b/drivers/infiniband/hw/qib/qib_pcie.c
@@ -197,46 +197,47 @@ static void qib_msix_setup(struct qib_devdata *dd, int pos, u32 *msixcnt,
 			   struct qib_msix_entry *qib_msix_entry)
 {
 	int ret;
-	u32 tabsize = 0;
-	u16 msix_flags;
+	int nvec = *msixcnt;
 	struct msix_entry *msix_entry;
 	int i;
 
+	ret = pci_msix_vec_count(dd->pcidev);
+	if (ret < 0)
+		goto do_intx;
+
+	nvec = min(nvec, ret);
+
 	/* We can't pass qib_msix_entry array to qib_msix_setup
 	 * so use a dummy msix_entry array and copy the allocated
 	 * irq back to the qib_msix_entry array. */
-	msix_entry = kmalloc(*msixcnt * sizeof(*msix_entry), GFP_KERNEL);
-	if (!msix_entry) {
-		ret = -ENOMEM;
+	msix_entry = kmalloc(nvec * sizeof(*msix_entry), GFP_KERNEL);
+	if (!msix_entry)
 		goto do_intx;
-	}
-	for (i = 0; i < *msixcnt; i++)
+
+	for (i = 0; i < nvec; i++)
 		msix_entry[i] = qib_msix_entry[i].msix;
 
-	pci_read_config_word(dd->pcidev, pos + PCI_MSIX_FLAGS, &msix_flags);
-	tabsize = 1 + (msix_flags & PCI_MSIX_FLAGS_QSIZE);
-	if (tabsize > *msixcnt)
-		tabsize = *msixcnt;
-	ret = pci_enable_msix(dd->pcidev, msix_entry, tabsize);
-	if (ret > 0) {
-		tabsize = ret;
-		ret = pci_enable_msix(dd->pcidev, msix_entry, tabsize);
-	}
-do_intx:
-	if (ret) {
-		qib_dev_err(dd,
-			"pci_enable_msix %d vectors failed: %d, falling back to INTx\n",
-			tabsize, ret);
-		tabsize = 0;
-	}
-	for (i = 0; i < tabsize; i++)
+	ret = pci_enable_msix_range(dd->pcidev, msix_entry, 1, nvec);
+	if (ret < 0)
+		goto free_msix_entry;
+	else
+		nvec = ret;
+
+	for (i = 0; i < nvec; i++)
 		qib_msix_entry[i].msix = msix_entry[i];
+
 	kfree(msix_entry);
-	*msixcnt = tabsize;
+	*msixcnt = nvec;
+	return;
 
-	if (ret)
-		qib_enable_intx(dd->pcidev);
+free_msix_entry:
+	kfree(msix_entry);
 
+do_intx:
+	qib_dev_err(dd, "pci_enable_msix_range %d vectors failed: %d, "
+			"falling back to INTx\n", nvec, ret);
+	*msixcnt = 0;
+	qib_enable_intx(dd->pcidev);
 }
 
 /**
-- 
1.7.7.6


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

* RE: [PATCH 2/2] qib: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 15:09 ` [PATCH 2/2] qib: Use pci_enable_msix_range() " Alexander Gordeev
@ 2014-02-18 16:52   ` Marciniszyn, Mike
  2014-02-19 23:11   ` Marciniszyn, Mike
  1 sibling, 0 replies; 7+ messages in thread
From: Marciniszyn, Mike @ 2014-02-18 16:52 UTC (permalink / raw)
  To: Alexander Gordeev, linux-kernel@vger.kernel.org
  Cc: infinipath, Roland Dreier, Hefty, Sean, Hal Rosenstock,
	linux-rdma@vger.kernel.org, linux-pci@vger.kernel.org

> Subject: [PATCH 2/2] qib: Use pci_enable_msix_range() instead of
> pci_enable_msix()
> 
We are testing this now.

I suggest a subject/summary adding the IB/:
IB/qib: Use pci_enable_msix_range() instead of pci_enable_msix()


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

* RE: [PATCH 2/2] qib: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-18 15:09 ` [PATCH 2/2] qib: Use pci_enable_msix_range() " Alexander Gordeev
  2014-02-18 16:52   ` Marciniszyn, Mike
@ 2014-02-19 23:11   ` Marciniszyn, Mike
  2014-04-09 13:22     ` Alexander Gordeev
  1 sibling, 1 reply; 7+ messages in thread
From: Marciniszyn, Mike @ 2014-02-19 23:11 UTC (permalink / raw)
  To: Alexander Gordeev, linux-kernel@vger.kernel.org
  Cc: Roland Dreier, Hefty, Sean, Hal Rosenstock,
	linux-rdma@vger.kernel.org, linux-pci@vger.kernel.org

> Subject: [PATCH 2/2] qib: Use pci_enable_msix_range() 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() and
> pci_enable_msix_range() interfaces.
> 
> Signed-off-by: Alexander Gordeev <agordeev@redhat.com>

This worked fine!

Roland, can you fix up the subject to change qib to IB/qib when you merge it?

Acked-by: Mike Marciniszyn <mike.marciniszyn@intel.com>

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

* [PATCH v2 1/2] IB/mthca: Use pci_enable_msix_exact() instead of pci_enable_msix()
  2014-02-18 15:09 ` [PATCH 1/2] mthca: " Alexander Gordeev
@ 2014-02-23  6:57   ` Alexander Gordeev
  0 siblings, 0 replies; 7+ messages in thread
From: Alexander Gordeev @ 2014-02-23  6:57 UTC (permalink / raw)
  To: linux-kernel
  Cc: Roland Dreier, Sean Hefty, Hal Rosenstock, linux-rdma, 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: Roland Dreier <roland@kernel.org>
Cc: Sean Hefty <sean.hefty@intel.com>
Cc: Hal Rosenstock <hal.rosenstock@gmail.com>
Cc: linux-rdma@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
 drivers/infiniband/hw/mthca/mthca_main.c |    8 ++------
 1 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/infiniband/hw/mthca/mthca_main.c b/drivers/infiniband/hw/mthca/mthca_main.c
index 87897b9..ded76c1 100644
--- a/drivers/infiniband/hw/mthca/mthca_main.c
+++ b/drivers/infiniband/hw/mthca/mthca_main.c
@@ -858,13 +858,9 @@ static int mthca_enable_msi_x(struct mthca_dev *mdev)
 	entries[1].entry = 1;
 	entries[2].entry = 2;
 
-	err = pci_enable_msix(mdev->pdev, entries, ARRAY_SIZE(entries));
-	if (err) {
-		if (err > 0)
-			mthca_info(mdev, "Only %d MSI-X vectors available, "
-				   "not using MSI-X\n", err);
+	err = pci_enable_msix_exact(mdev->pdev, entries, ARRAY_SIZE(entries));
+	if (err)
 		return err;
-	}
 
 	mdev->eq_table.eq[MTHCA_EQ_COMP ].msi_x_vector = entries[0].vector;
 	mdev->eq_table.eq[MTHCA_EQ_ASYNC].msi_x_vector = entries[1].vector;
-- 
1.7.7.6

-- 
Regards,
Alexander Gordeev
agordeev@redhat.com

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

* Re: [PATCH 2/2] qib: Use pci_enable_msix_range() instead of pci_enable_msix()
  2014-02-19 23:11   ` Marciniszyn, Mike
@ 2014-04-09 13:22     ` Alexander Gordeev
  0 siblings, 0 replies; 7+ messages in thread
From: Alexander Gordeev @ 2014-04-09 13:22 UTC (permalink / raw)
  To: Roland Dreier
  Cc: linux-kernel@vger.kernel.org, Hefty, Sean, Hal Rosenstock,
	linux-rdma@vger.kernel.org, linux-pci@vger.kernel.org,
	Marciniszyn, Mike

On Wed, Feb 19, 2014 at 11:11:39PM +0000, Marciniszyn, Mike wrote:
> > Subject: [PATCH 2/2] qib: Use pci_enable_msix_range() 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() and
> > pci_enable_msix_range() interfaces.
> > 
> > Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
> 
> This worked fine!
> 
> Roland, can you fix up the subject to change qib to IB/qib when you merge it?
> 
> Acked-by: Mike Marciniszyn <mike.marciniszyn@intel.com>

Hi Roland,

Do you want me to repost these patches?

Thanks!

-- 
Regards,
Alexander Gordeev
agordeev@redhat.com

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

end of thread, other threads:[~2014-04-09 13:20 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-18 15:09 [PATCH 0/2] ib: Use pci_enable_msix_range() instead of pci_enable_msix() Alexander Gordeev
2014-02-18 15:09 ` [PATCH 1/2] mthca: " Alexander Gordeev
2014-02-23  6:57   ` [PATCH v2 1/2] IB/mthca: Use pci_enable_msix_exact() " Alexander Gordeev
2014-02-18 15:09 ` [PATCH 2/2] qib: Use pci_enable_msix_range() " Alexander Gordeev
2014-02-18 16:52   ` Marciniszyn, Mike
2014-02-19 23:11   ` Marciniszyn, Mike
2014-04-09 13:22     ` Alexander Gordeev

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).