aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/qib/qib_wc_x86_64.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/hw/qib/qib_wc_x86_64.c')
-rw-r--r--drivers/infiniband/hw/qib/qib_wc_x86_64.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/qib/qib_wc_x86_64.c b/drivers/infiniband/hw/qib/qib_wc_x86_64.c
index 1d7281c5a02e..81b225f2300a 100644
--- a/drivers/infiniband/hw/qib/qib_wc_x86_64.c
+++ b/drivers/infiniband/hw/qib/qib_wc_x86_64.c
@@ -72,6 +72,7 @@ int qib_enable_wc(struct qib_devdata *dd)
72 if (dd->piobcnt2k && dd->piobcnt4k) { 72 if (dd->piobcnt2k && dd->piobcnt4k) {
73 /* 2 sizes for chip */ 73 /* 2 sizes for chip */
74 unsigned long pio2kbase, pio4kbase; 74 unsigned long pio2kbase, pio4kbase;
75
75 pio2kbase = dd->piobufbase & 0xffffffffUL; 76 pio2kbase = dd->piobufbase & 0xffffffffUL;
76 pio4kbase = (dd->piobufbase >> 32) & 0xffffffffUL; 77 pio4kbase = (dd->piobufbase >> 32) & 0xffffffffUL;
77 if (pio2kbase < pio4kbase) { 78 if (pio2kbase < pio4kbase) {
@@ -91,7 +92,7 @@ int qib_enable_wc(struct qib_devdata *dd)
91 } 92 }
92 93
93 for (bits = 0; !(piolen & (1ULL << bits)); bits++) 94 for (bits = 0; !(piolen & (1ULL << bits)); bits++)
94 /* do nothing */ ; 95 ; /* do nothing */
95 96
96 if (piolen != (1ULL << bits)) { 97 if (piolen != (1ULL << bits)) {
97 piolen >>= bits; 98 piolen >>= bits;
@@ -100,8 +101,8 @@ int qib_enable_wc(struct qib_devdata *dd)
100 piolen = 1ULL << (bits + 1); 101 piolen = 1ULL << (bits + 1);
101 } 102 }
102 if (pioaddr & (piolen - 1)) { 103 if (pioaddr & (piolen - 1)) {
103 u64 atmp; 104 u64 atmp = pioaddr & ~(piolen - 1);
104 atmp = pioaddr & ~(piolen - 1); 105
105 if (atmp < addr || (atmp + piolen) > (addr + len)) { 106 if (atmp < addr || (atmp + piolen) > (addr + len)) {
106 qib_dev_err(dd, 107 qib_dev_err(dd,
107 "No way to align address/size (%llx/%llx), no WC mtrr\n", 108 "No way to align address/size (%llx/%llx), no WC mtrr\n",