[PATCH v3 2/3] IB/qib: use arch_phys_wc_add()

Subsystems: infiniband subsystem, the rest

STALE4157d

6 messages, 4 authors, 2015-04-21 · open the first message on its own page

[PATCH v3 2/3] IB/qib: use arch_phys_wc_add()

From: Luis R. Rodriguez <hidden>
Date: 2015-04-21 20:38:20

From: "Luis R. Rodriguez" <redacted>

This driver already makes use of ioremap_wc() on PIO buffers,
so convert it to use arch_phys_wc_add().

Cc: Toshi Kani <redacted>
Cc: Rickard Strandqvist <redacted>
Cc: Mike Marciniszyn <redacted>
Cc: Roland Dreier <redacted>
Cc: Sean Hefty <redacted>
Cc: Hal Rosenstock <redacted>
Cc: Dennis Dalessandro <redacted>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Suresh Siddha <redacted>
Cc: Ingo Molnar <redacted>
Cc: Thomas Gleixner <redacted>
Cc: Juergen Gross <jgross@suse.com>
Cc: Daniel Vetter <redacted>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Antonino Daplas <adaplas@gmail.com>
Cc: Jean-Christophe Plagniol-Villard <redacted>
Cc: Tomi Valkeinen <redacted>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Stefan Bader <redacted>
Cc: konrad.wilk@oracle.com
Cc: ville.syrjala@linux.intel.com
Cc: david.vrabel@citrix.com
Cc: jbeulich@suse.com
Cc: Roger Pau Monné <redacted>
Cc: infinipath@intel.com
Cc: linux-rdma@vger.kernel.org
Cc: linux-fbdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: xen-devel@lists.xensource.com
Signed-off-by: Luis R. Rodriguez <redacted>
---
 drivers/infiniband/hw/qib/qib_wc_x86_64.c | 31 ++++---------------------------
 1 file changed, 4 insertions(+), 27 deletions(-)
diff --git a/drivers/infiniband/hw/qib/qib_wc_x86_64.c b/drivers/infiniband/hw/qib/qib_wc_x86_64.c
index fe0850a..6d61ef9 100644
--- a/drivers/infiniband/hw/qib/qib_wc_x86_64.c
+++ b/drivers/infiniband/hw/qib/qib_wc_x86_64.c
@@ -116,21 +116,9 @@ int qib_enable_wc(struct qib_devdata *dd)
 	}
 
 	if (!ret) {
-		int cookie;
-
-		cookie = mtrr_add(pioaddr, piolen, MTRR_TYPE_WRCOMB, 1);
-		if (cookie < 0) {
-			{
-				qib_devinfo(dd->pcidev,
-					 "mtrr_add()  WC for PIO bufs failed (%d)\n",
-					 cookie);
-				ret = -EINVAL;
-			}
-		} else {
-			dd->wc_cookie = cookie;
-			dd->wc_base = (unsigned long) pioaddr;
-			dd->wc_len = (unsigned long) piolen;
-		}
+		dd->wc_cookie = arch_phys_wc_add(pioaddr, piolen);
+		if (dd->wc_cookie < 0)
+			ret = -EINVAL;
 	}
 
 	return ret;
@@ -142,18 +130,7 @@ int qib_enable_wc(struct qib_devdata *dd)
  */
 void qib_disable_wc(struct qib_devdata *dd)
 {
-	if (dd->wc_cookie) {
-		int r;
-
-		r = mtrr_del(dd->wc_cookie, dd->wc_base,
-			     dd->wc_len);
-		if (r < 0)
-			qib_devinfo(dd->pcidev,
-				 "mtrr_del(%lx, %lx, %lx) failed: %d\n",
-				 dd->wc_cookie, dd->wc_base,
-				 dd->wc_len, r);
-		dd->wc_cookie = 0; /* even on failure */
-	}
+	arch_phys_wc_del(dd->wc_cookie);
 }
 
 /**
-- 
2.3.2.209.gd67f9d5.dirty

Re: [PATCH v3 2/3] IB/qib: use arch_phys_wc_add()

From: Jason Gunthorpe <hidden>
Date: 2015-04-21 20:58:21

On Tue, Apr 21, 2015 at 01:37:55PM -0700, Luis R. Rodriguez wrote:
From: "Luis R. Rodriguez" <redacted>

This driver already makes use of ioremap_wc() on PIO buffers,
so convert it to use arch_phys_wc_add().
This is probably OK, but I think you should also remove the qib_wc_pat
module parameter.

Jason

RE: [PATCH v3 2/3] IB/qib: use arch_phys_wc_add()

From: Marciniszyn, Mike <hidden>
Date: 2015-04-21 20:59:49

quoted
This driver already makes use of ioremap_wc() on PIO buffers, so
convert it to use arch_phys_wc_add().
This is probably OK, but I think you should also remove the qib_wc_pat module
parameter.

Jason
Revise based on Jason's request and I will do some testing.

Mike

Re: [PATCH v3 2/3] IB/qib: use arch_phys_wc_add()

From: Luis R. Rodriguez <hidden>
Date: 2015-04-21 21:10:26

On Tue, Apr 21, 2015 at 1:59 PM, Marciniszyn, Mike
[off-list ref] wrote:
quoted
quoted
This driver already makes use of ioremap_wc() on PIO buffers, so
convert it to use arch_phys_wc_add().
This is probably OK, but I think you should also remove the qib_wc_pat module
parameter.

Jason
Revise based on Jason's request and I will do some testing.
I did thiink about this -- but removal of module parameters can often
times break users of the module parameter, I figured its best to leave
it to you guys to decide what to do with that, so this leaves it as a
no-op. Can this series be applied and then you can decide what to do
to not affect your users on top of this?

 Luis

Re: [PATCH v3 2/3] IB/qib: use arch_phys_wc_add()

From: Andy Lutomirski <luto@amacapital.net>
Date: 2015-04-21 21:12:54

On Tue, Apr 21, 2015 at 2:09 PM, Luis R. Rodriguez
[off-list ref] wrote:
On Tue, Apr 21, 2015 at 1:59 PM, Marciniszyn, Mike
[off-list ref] wrote:
quoted
quoted
quoted
This driver already makes use of ioremap_wc() on PIO buffers, so
convert it to use arch_phys_wc_add().
This is probably OK, but I think you should also remove the qib_wc_pat module
parameter.

Jason
Revise based on Jason's request and I will do some testing.
I did thiink about this -- but removal of module parameters can often
times break users of the module parameter, I figured its best to leave
it to you guys to decide what to do with that, so this leaves it as a
no-op. Can this series be applied and then you can decide what to do
to not affect your users on top of this?
As of a few kernel versions ago, unrecognized module parameters no
longer cause the module to refuse to load.

--Andy
 Luis


-- 
Andy Lutomirski
AMA Capital Management, LLC

Re: [PATCH v3 2/3] IB/qib: use arch_phys_wc_add()

From: Luis R. Rodriguez <hidden>
Date: 2015-04-21 21:15:19

On Tue, Apr 21, 2015 at 2:12 PM, Andy Lutomirski [off-list ref] wrote:
On Tue, Apr 21, 2015 at 2:09 PM, Luis R. Rodriguez
[off-list ref] wrote:
quoted
On Tue, Apr 21, 2015 at 1:59 PM, Marciniszyn, Mike
[off-list ref] wrote:
quoted
quoted
quoted
This driver already makes use of ioremap_wc() on PIO buffers, so
convert it to use arch_phys_wc_add().
This is probably OK, but I think you should also remove the qib_wc_pat module
parameter.

Jason
Revise based on Jason's request and I will do some testing.
I did thiink about this -- but removal of module parameters can often
times break users of the module parameter, I figured its best to leave
it to you guys to decide what to do with that, so this leaves it as a
no-op. Can this series be applied and then you can decide what to do
to not affect your users on top of this?
As of a few kernel versions ago, unrecognized module parameters no
longer cause the module to refuse to load.
Sexy, I'll respin the changes only to the qib driver. Can the changes
to ipath still be applied?

 Luis
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help