IB/ipath: Call mtrr_del with correct arguments
We were passing 0 for base and length, which worked on older kernels, but it doesn't seem to any longer. Signed-off-by: Bryan O'Sullivan <bryan.osullivan@qlogic.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
8d0208cb59
commit
957670a57e
|
@ -336,6 +336,8 @@ struct ipath_devdata {
|
|||
u8 ipath_ht_slave_off;
|
||||
/* for write combining settings */
|
||||
unsigned long ipath_wc_cookie;
|
||||
unsigned long ipath_wc_base;
|
||||
unsigned long ipath_wc_len;
|
||||
/* ref count for each pkey */
|
||||
atomic_t ipath_pkeyrefs[4];
|
||||
/* shadow copy of all exptids physaddr; used only by funcsim */
|
||||
|
|
|
@ -123,6 +123,8 @@ int ipath_enable_wc(struct ipath_devdata *dd)
|
|||
ipath_cdbg(VERBOSE, "Set mtrr for chip to WC, "
|
||||
"cookie is %d\n", cookie);
|
||||
dd->ipath_wc_cookie = cookie;
|
||||
dd->ipath_wc_base = (unsigned long) pioaddr;
|
||||
dd->ipath_wc_len = (unsigned long) piolen;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -136,9 +138,16 @@ int ipath_enable_wc(struct ipath_devdata *dd)
|
|||
void ipath_disable_wc(struct ipath_devdata *dd)
|
||||
{
|
||||
if (dd->ipath_wc_cookie) {
|
||||
int r;
|
||||
ipath_cdbg(VERBOSE, "undoing WCCOMB on pio buffers\n");
|
||||
mtrr_del(dd->ipath_wc_cookie, 0, 0);
|
||||
dd->ipath_wc_cookie = 0;
|
||||
r = mtrr_del(dd->ipath_wc_cookie, dd->ipath_wc_base,
|
||||
dd->ipath_wc_len);
|
||||
if (r < 0)
|
||||
dev_info(&dd->pcidev->dev,
|
||||
"mtrr_del(%lx, %lx, %lx) failed: %d\n",
|
||||
dd->ipath_wc_cookie, dd->ipath_wc_base,
|
||||
dd->ipath_wc_len, r);
|
||||
dd->ipath_wc_cookie = 0; /* even on failure */
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue