diff options
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_diag.c | 5 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_driver.c | 3 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_eeprom.c | 1 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_file_ops.c | 6 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_fs.c | 1 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_iba6120.c | 5 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_iba7220.c | 1 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_iba7322.c | 22 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_init.c | 4 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_pcie.c | 2 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_qsfp.c | 4 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_sd7220.c | 5 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_twsi.c | 5 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_tx.c | 1 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_user_sdma.c | 2 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_verbs.c | 1 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_wc_x86_64.c | 5 |
17 files changed, 67 insertions, 6 deletions
diff --git a/drivers/infiniband/hw/qib/qib_diag.c b/drivers/infiniband/hw/qib/qib_diag.c index f2d354c68256..8c34b23e5bf6 100644 --- a/drivers/infiniband/hw/qib/qib_diag.c +++ b/drivers/infiniband/hw/qib/qib_diag.c | |||
| @@ -257,6 +257,7 @@ static u32 __iomem *qib_remap_ioaddr32(struct qib_devdata *dd, u32 offset, | |||
| 257 | if (dd->userbase) { | 257 | if (dd->userbase) { |
| 258 | /* If user regs mapped, they are after send, so set limit. */ | 258 | /* If user regs mapped, they are after send, so set limit. */ |
| 259 | u32 ulim = (dd->cfgctxts * dd->ureg_align) + dd->uregbase; | 259 | u32 ulim = (dd->cfgctxts * dd->ureg_align) + dd->uregbase; |
| 260 | |||
| 260 | if (!dd->piovl15base) | 261 | if (!dd->piovl15base) |
| 261 | snd_lim = dd->uregbase; | 262 | snd_lim = dd->uregbase; |
| 262 | krb32 = (u32 __iomem *)dd->userbase; | 263 | krb32 = (u32 __iomem *)dd->userbase; |
| @@ -280,6 +281,7 @@ static u32 __iomem *qib_remap_ioaddr32(struct qib_devdata *dd, u32 offset, | |||
| 280 | snd_bottom = dd->pio2k_bufbase; | 281 | snd_bottom = dd->pio2k_bufbase; |
| 281 | if (snd_lim == 0) { | 282 | if (snd_lim == 0) { |
| 282 | u32 tot2k = dd->piobcnt2k * ALIGN(dd->piosize2k, dd->palign); | 283 | u32 tot2k = dd->piobcnt2k * ALIGN(dd->piosize2k, dd->palign); |
| 284 | |||
| 283 | snd_lim = snd_bottom + tot2k; | 285 | snd_lim = snd_bottom + tot2k; |
| 284 | } | 286 | } |
| 285 | /* If 4k buffers exist, account for them by bumping | 287 | /* If 4k buffers exist, account for them by bumping |
| @@ -398,6 +400,7 @@ static int qib_write_umem64(struct qib_devdata *dd, u32 regoffs, | |||
| 398 | /* not very efficient, but it works for now */ | 400 | /* not very efficient, but it works for now */ |
| 399 | while (reg_addr < reg_end) { | 401 | while (reg_addr < reg_end) { |
| 400 | u64 data; | 402 | u64 data; |
| 403 | |||
| 401 | if (copy_from_user(&data, uaddr, sizeof(data))) { | 404 | if (copy_from_user(&data, uaddr, sizeof(data))) { |
| 402 | ret = -EFAULT; | 405 | ret = -EFAULT; |
| 403 | goto bail; | 406 | goto bail; |
| @@ -796,6 +799,7 @@ static ssize_t qib_diag_read(struct file *fp, char __user *data, | |||
| 796 | op = diag_get_observer(dd, *off); | 799 | op = diag_get_observer(dd, *off); |
| 797 | if (op) { | 800 | if (op) { |
| 798 | u32 offset = *off; | 801 | u32 offset = *off; |
| 802 | |||
| 799 | ret = op->hook(dd, op, offset, &data64, 0, use_32); | 803 | ret = op->hook(dd, op, offset, &data64, 0, use_32); |
| 800 | } | 804 | } |
| 801 | /* | 805 | /* |
| @@ -873,6 +877,7 @@ static ssize_t qib_diag_write(struct file *fp, const char __user *data, | |||
| 873 | if (count == 4 || count == 8) { | 877 | if (count == 4 || count == 8) { |
| 874 | u64 data64; | 878 | u64 data64; |
| 875 | u32 offset = *off; | 879 | u32 offset = *off; |
| 880 | |||
| 876 | ret = copy_from_user(&data64, data, count); | 881 | ret = copy_from_user(&data64, data, count); |
| 877 | if (ret) { | 882 | if (ret) { |
| 878 | ret = -EFAULT; | 883 | ret = -EFAULT; |
diff --git a/drivers/infiniband/hw/qib/qib_driver.c b/drivers/infiniband/hw/qib/qib_driver.c index d10b60ec16cf..f58fdc3d25a2 100644 --- a/drivers/infiniband/hw/qib/qib_driver.c +++ b/drivers/infiniband/hw/qib/qib_driver.c | |||
| @@ -349,6 +349,7 @@ static u32 qib_rcv_hdrerr(struct qib_ctxtdata *rcd, struct qib_pportdata *ppd, | |||
| 349 | qp_num = be32_to_cpu(ohdr->bth[1]) & QIB_QPN_MASK; | 349 | qp_num = be32_to_cpu(ohdr->bth[1]) & QIB_QPN_MASK; |
| 350 | if (qp_num != QIB_MULTICAST_QPN) { | 350 | if (qp_num != QIB_MULTICAST_QPN) { |
| 351 | int ruc_res; | 351 | int ruc_res; |
| 352 | |||
| 352 | qp = qib_lookup_qpn(ibp, qp_num); | 353 | qp = qib_lookup_qpn(ibp, qp_num); |
| 353 | if (!qp) | 354 | if (!qp) |
| 354 | goto drop; | 355 | goto drop; |
| @@ -461,6 +462,7 @@ u32 qib_kreceive(struct qib_ctxtdata *rcd, u32 *llic, u32 *npkts) | |||
| 461 | rhf_addr = (__le32 *) rcd->rcvhdrq + l + dd->rhf_offset; | 462 | rhf_addr = (__le32 *) rcd->rcvhdrq + l + dd->rhf_offset; |
| 462 | if (dd->flags & QIB_NODMA_RTAIL) { | 463 | if (dd->flags & QIB_NODMA_RTAIL) { |
| 463 | u32 seq = qib_hdrget_seq(rhf_addr); | 464 | u32 seq = qib_hdrget_seq(rhf_addr); |
| 465 | |||
| 464 | if (seq != rcd->seq_cnt) | 466 | if (seq != rcd->seq_cnt) |
| 465 | goto bail; | 467 | goto bail; |
| 466 | hdrqtail = 0; | 468 | hdrqtail = 0; |
| @@ -651,6 +653,7 @@ bail: | |||
| 651 | int qib_set_lid(struct qib_pportdata *ppd, u32 lid, u8 lmc) | 653 | int qib_set_lid(struct qib_pportdata *ppd, u32 lid, u8 lmc) |
| 652 | { | 654 | { |
| 653 | struct qib_devdata *dd = ppd->dd; | 655 | struct qib_devdata *dd = ppd->dd; |
| 656 | |||
| 654 | ppd->lid = lid; | 657 | ppd->lid = lid; |
| 655 | ppd->lmc = lmc; | 658 | ppd->lmc = lmc; |
| 656 | 659 | ||
diff --git a/drivers/infiniband/hw/qib/qib_eeprom.c b/drivers/infiniband/hw/qib/qib_eeprom.c index 4ea642ad7e11..311ee6c3dd5e 100644 --- a/drivers/infiniband/hw/qib/qib_eeprom.c +++ b/drivers/infiniband/hw/qib/qib_eeprom.c | |||
| @@ -153,6 +153,7 @@ void qib_get_eeprom_info(struct qib_devdata *dd) | |||
| 153 | 153 | ||
| 154 | if (t && dd0->nguid > 1 && t <= dd0->nguid) { | 154 | if (t && dd0->nguid > 1 && t <= dd0->nguid) { |
| 155 | u8 oguid; | 155 | u8 oguid; |
| 156 | |||
| 156 | dd->base_guid = dd0->base_guid; | 157 | dd->base_guid = dd0->base_guid; |
| 157 | bguid = (u8 *) &dd->base_guid; | 158 | bguid = (u8 *) &dd->base_guid; |
| 158 | 159 | ||
diff --git a/drivers/infiniband/hw/qib/qib_file_ops.c b/drivers/infiniband/hw/qib/qib_file_ops.c index 30bb16efb378..41937c6f888a 100644 --- a/drivers/infiniband/hw/qib/qib_file_ops.c +++ b/drivers/infiniband/hw/qib/qib_file_ops.c | |||
| @@ -1186,6 +1186,7 @@ static void assign_ctxt_affinity(struct file *fp, struct qib_devdata *dd) | |||
| 1186 | */ | 1186 | */ |
| 1187 | if (weight >= qib_cpulist_count) { | 1187 | if (weight >= qib_cpulist_count) { |
| 1188 | int cpu; | 1188 | int cpu; |
| 1189 | |||
| 1189 | cpu = find_first_zero_bit(qib_cpulist, | 1190 | cpu = find_first_zero_bit(qib_cpulist, |
| 1190 | qib_cpulist_count); | 1191 | qib_cpulist_count); |
| 1191 | if (cpu == qib_cpulist_count) | 1192 | if (cpu == qib_cpulist_count) |
| @@ -1389,6 +1390,7 @@ static int choose_port_ctxt(struct file *fp, struct qib_devdata *dd, u32 port, | |||
| 1389 | } | 1390 | } |
| 1390 | if (!ppd) { | 1391 | if (!ppd) { |
| 1391 | u32 pidx = ctxt % dd->num_pports; | 1392 | u32 pidx = ctxt % dd->num_pports; |
| 1393 | |||
| 1392 | if (usable(dd->pport + pidx)) | 1394 | if (usable(dd->pport + pidx)) |
| 1393 | ppd = dd->pport + pidx; | 1395 | ppd = dd->pport + pidx; |
| 1394 | else { | 1396 | else { |
| @@ -1436,10 +1438,12 @@ static int get_a_ctxt(struct file *fp, const struct qib_user_info *uinfo, | |||
| 1436 | 1438 | ||
| 1437 | if (alg == QIB_PORT_ALG_ACROSS) { | 1439 | if (alg == QIB_PORT_ALG_ACROSS) { |
| 1438 | unsigned inuse = ~0U; | 1440 | unsigned inuse = ~0U; |
| 1441 | |||
| 1439 | /* find device (with ACTIVE ports) with fewest ctxts in use */ | 1442 | /* find device (with ACTIVE ports) with fewest ctxts in use */ |
| 1440 | for (ndev = 0; ndev < devmax; ndev++) { | 1443 | for (ndev = 0; ndev < devmax; ndev++) { |
| 1441 | struct qib_devdata *dd = qib_lookup(ndev); | 1444 | struct qib_devdata *dd = qib_lookup(ndev); |
| 1442 | unsigned cused = 0, cfree = 0, pusable = 0; | 1445 | unsigned cused = 0, cfree = 0, pusable = 0; |
| 1446 | |||
| 1443 | if (!dd) | 1447 | if (!dd) |
| 1444 | continue; | 1448 | continue; |
| 1445 | if (port && port <= dd->num_pports && | 1449 | if (port && port <= dd->num_pports && |
| @@ -1469,6 +1473,7 @@ static int get_a_ctxt(struct file *fp, const struct qib_user_info *uinfo, | |||
| 1469 | } else { | 1473 | } else { |
| 1470 | for (ndev = 0; ndev < devmax; ndev++) { | 1474 | for (ndev = 0; ndev < devmax; ndev++) { |
| 1471 | struct qib_devdata *dd = qib_lookup(ndev); | 1475 | struct qib_devdata *dd = qib_lookup(ndev); |
| 1476 | |||
| 1472 | if (dd) { | 1477 | if (dd) { |
| 1473 | ret = choose_port_ctxt(fp, dd, port, uinfo); | 1478 | ret = choose_port_ctxt(fp, dd, port, uinfo); |
| 1474 | if (!ret) | 1479 | if (!ret) |
| @@ -1554,6 +1559,7 @@ static int find_hca(unsigned int cpu, int *unit) | |||
| 1554 | } | 1559 | } |
| 1555 | for (ndev = 0; ndev < devmax; ndev++) { | 1560 | for (ndev = 0; ndev < devmax; ndev++) { |
| 1556 | struct qib_devdata *dd = qib_lookup(ndev); | 1561 | struct qib_devdata *dd = qib_lookup(ndev); |
| 1562 | |||
| 1557 | if (dd) { | 1563 | if (dd) { |
| 1558 | if (pcibus_to_node(dd->pcidev->bus) < 0) { | 1564 | if (pcibus_to_node(dd->pcidev->bus) < 0) { |
| 1559 | ret = -EINVAL; | 1565 | ret = -EINVAL; |
diff --git a/drivers/infiniband/hw/qib/qib_fs.c b/drivers/infiniband/hw/qib/qib_fs.c index 0431615b1f09..55f240a363fe 100644 --- a/drivers/infiniband/hw/qib/qib_fs.c +++ b/drivers/infiniband/hw/qib/qib_fs.c | |||
| @@ -560,6 +560,7 @@ static struct dentry *qibfs_mount(struct file_system_type *fs_type, int flags, | |||
| 560 | const char *dev_name, void *data) | 560 | const char *dev_name, void *data) |
| 561 | { | 561 | { |
| 562 | struct dentry *ret; | 562 | struct dentry *ret; |
| 563 | |||
| 563 | ret = mount_single(fs_type, flags, data, qibfs_fill_super); | 564 | ret = mount_single(fs_type, flags, data, qibfs_fill_super); |
| 564 | if (!IS_ERR(ret)) | 565 | if (!IS_ERR(ret)) |
| 565 | qib_super = ret->d_sb; | 566 | qib_super = ret->d_sb; |
diff --git a/drivers/infiniband/hw/qib/qib_iba6120.c b/drivers/infiniband/hw/qib/qib_iba6120.c index a8d061996896..0d2ba59af30a 100644 --- a/drivers/infiniband/hw/qib/qib_iba6120.c +++ b/drivers/infiniband/hw/qib/qib_iba6120.c | |||
| @@ -333,6 +333,7 @@ static inline void qib_write_ureg(const struct qib_devdata *dd, | |||
| 333 | enum qib_ureg regno, u64 value, int ctxt) | 333 | enum qib_ureg regno, u64 value, int ctxt) |
| 334 | { | 334 | { |
| 335 | u64 __iomem *ubase; | 335 | u64 __iomem *ubase; |
| 336 | |||
| 336 | if (dd->userbase) | 337 | if (dd->userbase) |
| 337 | ubase = (u64 __iomem *) | 338 | ubase = (u64 __iomem *) |
| 338 | ((char __iomem *) dd->userbase + | 339 | ((char __iomem *) dd->userbase + |
| @@ -1670,6 +1671,7 @@ static irqreturn_t qib_6120intr(int irq, void *data) | |||
| 1670 | } | 1671 | } |
| 1671 | if (crcs) { | 1672 | if (crcs) { |
| 1672 | u32 cntr = dd->cspec->lli_counter; | 1673 | u32 cntr = dd->cspec->lli_counter; |
| 1674 | |||
| 1673 | cntr += crcs; | 1675 | cntr += crcs; |
| 1674 | if (cntr) { | 1676 | if (cntr) { |
| 1675 | if (cntr > dd->cspec->lli_thresh) { | 1677 | if (cntr > dd->cspec->lli_thresh) { |
| @@ -1722,6 +1724,7 @@ static void qib_setup_6120_interrupt(struct qib_devdata *dd) | |||
| 1722 | "irq is 0, BIOS error? Interrupts won't work\n"); | 1724 | "irq is 0, BIOS error? Interrupts won't work\n"); |
| 1723 | else { | 1725 | else { |
| 1724 | int ret; | 1726 | int ret; |
| 1727 | |||
| 1725 | ret = request_irq(dd->cspec->irq, qib_6120intr, 0, | 1728 | ret = request_irq(dd->cspec->irq, qib_6120intr, 0, |
| 1726 | QIB_DRV_NAME, dd); | 1729 | QIB_DRV_NAME, dd); |
| 1727 | if (ret) | 1730 | if (ret) |
| @@ -2927,6 +2930,7 @@ bail: | |||
| 2927 | static int qib_6120_set_loopback(struct qib_pportdata *ppd, const char *what) | 2930 | static int qib_6120_set_loopback(struct qib_pportdata *ppd, const char *what) |
| 2928 | { | 2931 | { |
| 2929 | int ret = 0; | 2932 | int ret = 0; |
| 2933 | |||
| 2930 | if (!strncmp(what, "ibc", 3)) { | 2934 | if (!strncmp(what, "ibc", 3)) { |
| 2931 | ppd->dd->cspec->ibcctrl |= SYM_MASK(IBCCtrl, Loopback); | 2935 | ppd->dd->cspec->ibcctrl |= SYM_MASK(IBCCtrl, Loopback); |
| 2932 | qib_devinfo(ppd->dd->pcidev, "Enabling IB%u:%u IBC loopback\n", | 2936 | qib_devinfo(ppd->dd->pcidev, "Enabling IB%u:%u IBC loopback\n", |
| @@ -3168,6 +3172,7 @@ static void get_6120_chip_params(struct qib_devdata *dd) | |||
| 3168 | static void set_6120_baseaddrs(struct qib_devdata *dd) | 3172 | static void set_6120_baseaddrs(struct qib_devdata *dd) |
| 3169 | { | 3173 | { |
| 3170 | u32 cregbase; | 3174 | u32 cregbase; |
| 3175 | |||
| 3171 | cregbase = qib_read_kreg32(dd, kr_counterregbase); | 3176 | cregbase = qib_read_kreg32(dd, kr_counterregbase); |
| 3172 | dd->cspec->cregbase = (u64 __iomem *) | 3177 | dd->cspec->cregbase = (u64 __iomem *) |
| 3173 | ((char __iomem *) dd->kregbase + cregbase); | 3178 | ((char __iomem *) dd->kregbase + cregbase); |
diff --git a/drivers/infiniband/hw/qib/qib_iba7220.c b/drivers/infiniband/hw/qib/qib_iba7220.c index ece2993d0478..22affda8af88 100644 --- a/drivers/infiniband/hw/qib/qib_iba7220.c +++ b/drivers/infiniband/hw/qib/qib_iba7220.c | |||
| @@ -1044,6 +1044,7 @@ done: | |||
| 1044 | static void reenable_7220_chase(unsigned long opaque) | 1044 | static void reenable_7220_chase(unsigned long opaque) |
| 1045 | { | 1045 | { |
| 1046 | struct qib_pportdata *ppd = (struct qib_pportdata *)opaque; | 1046 | struct qib_pportdata *ppd = (struct qib_pportdata *)opaque; |
| 1047 | |||
| 1047 | ppd->cpspec->chase_timer.expires = 0; | 1048 | ppd->cpspec->chase_timer.expires = 0; |
| 1048 | qib_set_ib_7220_lstate(ppd, QLOGIC_IB_IBCC_LINKCMD_DOWN, | 1049 | qib_set_ib_7220_lstate(ppd, QLOGIC_IB_IBCC_LINKCMD_DOWN, |
| 1049 | QLOGIC_IB_IBCC_LINKINITCMD_POLL); | 1050 | QLOGIC_IB_IBCC_LINKINITCMD_POLL); |
diff --git a/drivers/infiniband/hw/qib/qib_iba7322.c b/drivers/infiniband/hw/qib/qib_iba7322.c index 4cda560bfc5c..ef97b71c8f7d 100644 --- a/drivers/infiniband/hw/qib/qib_iba7322.c +++ b/drivers/infiniband/hw/qib/qib_iba7322.c | |||
| @@ -818,6 +818,7 @@ static inline void qib_write_ureg(const struct qib_devdata *dd, | |||
| 818 | enum qib_ureg regno, u64 value, int ctxt) | 818 | enum qib_ureg regno, u64 value, int ctxt) |
| 819 | { | 819 | { |
| 820 | u64 __iomem *ubase; | 820 | u64 __iomem *ubase; |
| 821 | |||
| 821 | if (dd->userbase) | 822 | if (dd->userbase) |
| 822 | ubase = (u64 __iomem *) | 823 | ubase = (u64 __iomem *) |
| 823 | ((char __iomem *) dd->userbase + | 824 | ((char __iomem *) dd->userbase + |
| @@ -2032,6 +2033,7 @@ static void qib_7322_set_intr_state(struct qib_devdata *dd, u32 enable) | |||
| 2032 | if (dd->cspec->num_msix_entries) { | 2033 | if (dd->cspec->num_msix_entries) { |
| 2033 | /* and same for MSIx */ | 2034 | /* and same for MSIx */ |
| 2034 | u64 val = qib_read_kreg64(dd, kr_intgranted); | 2035 | u64 val = qib_read_kreg64(dd, kr_intgranted); |
| 2036 | |||
| 2035 | if (val) | 2037 | if (val) |
| 2036 | qib_write_kreg(dd, kr_intgranted, val); | 2038 | qib_write_kreg(dd, kr_intgranted, val); |
| 2037 | } | 2039 | } |
| @@ -2177,6 +2179,7 @@ static void qib_7322_handle_hwerrors(struct qib_devdata *dd, char *msg, | |||
| 2177 | int err; | 2179 | int err; |
| 2178 | unsigned long flags; | 2180 | unsigned long flags; |
| 2179 | struct qib_pportdata *ppd = dd->pport; | 2181 | struct qib_pportdata *ppd = dd->pport; |
| 2182 | |||
| 2180 | for (; pidx < dd->num_pports; ++pidx, ppd++) { | 2183 | for (; pidx < dd->num_pports; ++pidx, ppd++) { |
| 2181 | err = 0; | 2184 | err = 0; |
| 2182 | if (pidx == 0 && (hwerrs & | 2185 | if (pidx == 0 && (hwerrs & |
| @@ -2802,9 +2805,11 @@ static void qib_irq_notifier_notify(struct irq_affinity_notify *notify, | |||
| 2802 | 2805 | ||
| 2803 | if (n->rcv) { | 2806 | if (n->rcv) { |
| 2804 | struct qib_ctxtdata *rcd = (struct qib_ctxtdata *)n->arg; | 2807 | struct qib_ctxtdata *rcd = (struct qib_ctxtdata *)n->arg; |
| 2808 | |||
| 2805 | qib_update_rhdrq_dca(rcd, cpu); | 2809 | qib_update_rhdrq_dca(rcd, cpu); |
| 2806 | } else { | 2810 | } else { |
| 2807 | struct qib_pportdata *ppd = (struct qib_pportdata *)n->arg; | 2811 | struct qib_pportdata *ppd = (struct qib_pportdata *)n->arg; |
| 2812 | |||
| 2808 | qib_update_sdma_dca(ppd, cpu); | 2813 | qib_update_sdma_dca(ppd, cpu); |
| 2809 | } | 2814 | } |
| 2810 | } | 2815 | } |
| @@ -2817,9 +2822,11 @@ static void qib_irq_notifier_release(struct kref *ref) | |||
| 2817 | 2822 | ||
| 2818 | if (n->rcv) { | 2823 | if (n->rcv) { |
| 2819 | struct qib_ctxtdata *rcd = (struct qib_ctxtdata *)n->arg; | 2824 | struct qib_ctxtdata *rcd = (struct qib_ctxtdata *)n->arg; |
| 2825 | |||
| 2820 | dd = rcd->dd; | 2826 | dd = rcd->dd; |
| 2821 | } else { | 2827 | } else { |
| 2822 | struct qib_pportdata *ppd = (struct qib_pportdata *)n->arg; | 2828 | struct qib_pportdata *ppd = (struct qib_pportdata *)n->arg; |
| 2829 | |||
| 2823 | dd = ppd->dd; | 2830 | dd = ppd->dd; |
| 2824 | } | 2831 | } |
| 2825 | qib_devinfo(dd->pcidev, | 2832 | qib_devinfo(dd->pcidev, |
| @@ -2995,6 +3002,7 @@ static noinline void unknown_7322_gpio_intr(struct qib_devdata *dd) | |||
| 2995 | struct qib_pportdata *ppd; | 3002 | struct qib_pportdata *ppd; |
| 2996 | struct qib_qsfp_data *qd; | 3003 | struct qib_qsfp_data *qd; |
| 2997 | u32 mask; | 3004 | u32 mask; |
| 3005 | |||
| 2998 | if (!dd->pport[pidx].link_speed_supported) | 3006 | if (!dd->pport[pidx].link_speed_supported) |
| 2999 | continue; | 3007 | continue; |
| 3000 | mask = QSFP_GPIO_MOD_PRS_N; | 3008 | mask = QSFP_GPIO_MOD_PRS_N; |
| @@ -3002,6 +3010,7 @@ static noinline void unknown_7322_gpio_intr(struct qib_devdata *dd) | |||
| 3002 | mask <<= (QSFP_GPIO_PORT2_SHIFT * ppd->hw_pidx); | 3010 | mask <<= (QSFP_GPIO_PORT2_SHIFT * ppd->hw_pidx); |
| 3003 | if (gpiostatus & dd->cspec->gpio_mask & mask) { | 3011 | if (gpiostatus & dd->cspec->gpio_mask & mask) { |
| 3004 | u64 pins; | 3012 | u64 pins; |
| 3013 | |||
| 3005 | qd = &ppd->cpspec->qsfp_data; | 3014 | qd = &ppd->cpspec->qsfp_data; |
| 3006 | gpiostatus &= ~mask; | 3015 | gpiostatus &= ~mask; |
| 3007 | pins = qib_read_kreg64(dd, kr_extstatus); | 3016 | pins = qib_read_kreg64(dd, kr_extstatus); |
| @@ -3699,6 +3708,7 @@ static int qib_do_7322_reset(struct qib_devdata *dd) | |||
| 3699 | */ | 3708 | */ |
| 3700 | for (i = 0; i < msix_entries; i++) { | 3709 | for (i = 0; i < msix_entries; i++) { |
| 3701 | u64 vecaddr, vecdata; | 3710 | u64 vecaddr, vecdata; |
| 3711 | |||
| 3702 | vecaddr = qib_read_kreg64(dd, 2 * i + | 3712 | vecaddr = qib_read_kreg64(dd, 2 * i + |
| 3703 | (QIB_7322_MsixTable_OFFS / sizeof(u64))); | 3713 | (QIB_7322_MsixTable_OFFS / sizeof(u64))); |
| 3704 | vecdata = qib_read_kreg64(dd, 1 + 2 * i + | 3714 | vecdata = qib_read_kreg64(dd, 1 + 2 * i + |
| @@ -5360,6 +5370,7 @@ static void qib_autoneg_7322_send(struct qib_pportdata *ppd, int which) | |||
| 5360 | static void set_7322_ibspeed_fast(struct qib_pportdata *ppd, u32 speed) | 5370 | static void set_7322_ibspeed_fast(struct qib_pportdata *ppd, u32 speed) |
| 5361 | { | 5371 | { |
| 5362 | u64 newctrlb; | 5372 | u64 newctrlb; |
| 5373 | |||
| 5363 | newctrlb = ppd->cpspec->ibcctrl_b & ~(IBA7322_IBC_SPEED_MASK | | 5374 | newctrlb = ppd->cpspec->ibcctrl_b & ~(IBA7322_IBC_SPEED_MASK | |
| 5364 | IBA7322_IBC_IBTA_1_2_MASK | | 5375 | IBA7322_IBC_IBTA_1_2_MASK | |
| 5365 | IBA7322_IBC_MAX_SPEED_MASK); | 5376 | IBA7322_IBC_MAX_SPEED_MASK); |
| @@ -5846,6 +5857,7 @@ static void get_7322_chip_params(struct qib_devdata *dd) | |||
| 5846 | static void qib_7322_set_baseaddrs(struct qib_devdata *dd) | 5857 | static void qib_7322_set_baseaddrs(struct qib_devdata *dd) |
| 5847 | { | 5858 | { |
| 5848 | u32 cregbase; | 5859 | u32 cregbase; |
| 5860 | |||
| 5849 | cregbase = qib_read_kreg32(dd, kr_counterregbase); | 5861 | cregbase = qib_read_kreg32(dd, kr_counterregbase); |
| 5850 | 5862 | ||
| 5851 | dd->cspec->cregbase = (u64 __iomem *)(cregbase + | 5863 | dd->cspec->cregbase = (u64 __iomem *)(cregbase + |
| @@ -6186,6 +6198,7 @@ static int setup_txselect(const char *str, struct kernel_param *kp) | |||
| 6186 | struct qib_devdata *dd; | 6198 | struct qib_devdata *dd; |
| 6187 | unsigned long val; | 6199 | unsigned long val; |
| 6188 | char *n; | 6200 | char *n; |
| 6201 | |||
| 6189 | if (strlen(str) >= MAX_ATTEN_LEN) { | 6202 | if (strlen(str) >= MAX_ATTEN_LEN) { |
| 6190 | pr_info("txselect_values string too long\n"); | 6203 | pr_info("txselect_values string too long\n"); |
| 6191 | return -ENOSPC; | 6204 | return -ENOSPC; |
| @@ -6396,6 +6409,7 @@ static void write_7322_initregs(struct qib_devdata *dd) | |||
| 6396 | val = TIDFLOW_ERRBITS; /* these are W1C */ | 6409 | val = TIDFLOW_ERRBITS; /* these are W1C */ |
| 6397 | for (i = 0; i < dd->cfgctxts; i++) { | 6410 | for (i = 0; i < dd->cfgctxts; i++) { |
| 6398 | int flow; | 6411 | int flow; |
| 6412 | |||
| 6399 | for (flow = 0; flow < NUM_TIDFLOWS_CTXT; flow++) | 6413 | for (flow = 0; flow < NUM_TIDFLOWS_CTXT; flow++) |
| 6400 | qib_write_ureg(dd, ur_rcvflowtable+flow, val, i); | 6414 | qib_write_ureg(dd, ur_rcvflowtable+flow, val, i); |
| 6401 | } | 6415 | } |
| @@ -6506,6 +6520,7 @@ static int qib_init_7322_variables(struct qib_devdata *dd) | |||
| 6506 | 6520 | ||
| 6507 | for (pidx = 0; pidx < NUM_IB_PORTS; ++pidx) { | 6521 | for (pidx = 0; pidx < NUM_IB_PORTS; ++pidx) { |
| 6508 | struct qib_chippport_specific *cp = ppd->cpspec; | 6522 | struct qib_chippport_specific *cp = ppd->cpspec; |
| 6523 | |||
| 6509 | ppd->link_speed_supported = features & PORT_SPD_CAP; | 6524 | ppd->link_speed_supported = features & PORT_SPD_CAP; |
| 6510 | features >>= PORT_SPD_CAP_SHIFT; | 6525 | features >>= PORT_SPD_CAP_SHIFT; |
| 6511 | if (!ppd->link_speed_supported) { | 6526 | if (!ppd->link_speed_supported) { |
| @@ -7892,6 +7907,7 @@ static void serdes_7322_los_enable(struct qib_pportdata *ppd, int enable) | |||
| 7892 | static int serdes_7322_init(struct qib_pportdata *ppd) | 7907 | static int serdes_7322_init(struct qib_pportdata *ppd) |
| 7893 | { | 7908 | { |
| 7894 | int ret = 0; | 7909 | int ret = 0; |
| 7910 | |||
| 7895 | if (ppd->dd->cspec->r1) | 7911 | if (ppd->dd->cspec->r1) |
| 7896 | ret = serdes_7322_init_old(ppd); | 7912 | ret = serdes_7322_init_old(ppd); |
| 7897 | else | 7913 | else |
| @@ -8307,8 +8323,8 @@ static void force_h1(struct qib_pportdata *ppd) | |||
| 8307 | 8323 | ||
| 8308 | static int qib_r_grab(struct qib_devdata *dd) | 8324 | static int qib_r_grab(struct qib_devdata *dd) |
| 8309 | { | 8325 | { |
| 8310 | u64 val; | 8326 | u64 val = SJA_EN; |
| 8311 | val = SJA_EN; | 8327 | |
| 8312 | qib_write_kreg(dd, kr_r_access, val); | 8328 | qib_write_kreg(dd, kr_r_access, val); |
| 8313 | qib_read_kreg32(dd, kr_scratch); | 8329 | qib_read_kreg32(dd, kr_scratch); |
| 8314 | return 0; | 8330 | return 0; |
| @@ -8321,6 +8337,7 @@ static int qib_r_wait_for_rdy(struct qib_devdata *dd) | |||
| 8321 | { | 8337 | { |
| 8322 | u64 val; | 8338 | u64 val; |
| 8323 | int timeout; | 8339 | int timeout; |
| 8340 | |||
| 8324 | for (timeout = 0; timeout < 100 ; ++timeout) { | 8341 | for (timeout = 0; timeout < 100 ; ++timeout) { |
| 8325 | val = qib_read_kreg32(dd, kr_r_access); | 8342 | val = qib_read_kreg32(dd, kr_r_access); |
| 8326 | if (val & R_RDY) | 8343 | if (val & R_RDY) |
| @@ -8348,6 +8365,7 @@ static int qib_r_shift(struct qib_devdata *dd, int bisten, | |||
| 8348 | } | 8365 | } |
| 8349 | if (inp) { | 8366 | if (inp) { |
| 8350 | int tdi = inp[pos >> 3] >> (pos & 7); | 8367 | int tdi = inp[pos >> 3] >> (pos & 7); |
| 8368 | |||
| 8351 | val |= ((tdi & 1) << R_TDI_LSB); | 8369 | val |= ((tdi & 1) << R_TDI_LSB); |
| 8352 | } | 8370 | } |
| 8353 | qib_write_kreg(dd, kr_r_access, val); | 8371 | qib_write_kreg(dd, kr_r_access, val); |
diff --git a/drivers/infiniband/hw/qib/qib_init.c b/drivers/infiniband/hw/qib/qib_init.c index 9f62546a3eac..2ee36953e234 100644 --- a/drivers/infiniband/hw/qib/qib_init.c +++ b/drivers/infiniband/hw/qib/qib_init.c | |||
| @@ -234,6 +234,7 @@ int qib_init_pportdata(struct qib_pportdata *ppd, struct qib_devdata *dd, | |||
| 234 | u8 hw_pidx, u8 port) | 234 | u8 hw_pidx, u8 port) |
| 235 | { | 235 | { |
| 236 | int size; | 236 | int size; |
| 237 | |||
| 237 | ppd->dd = dd; | 238 | ppd->dd = dd; |
| 238 | ppd->hw_pidx = hw_pidx; | 239 | ppd->hw_pidx = hw_pidx; |
| 239 | ppd->port = port; /* IB port number, not index */ | 240 | ppd->port = port; /* IB port number, not index */ |
| @@ -613,6 +614,7 @@ static int qib_create_workqueues(struct qib_devdata *dd) | |||
| 613 | ppd = dd->pport + pidx; | 614 | ppd = dd->pport + pidx; |
| 614 | if (!ppd->qib_wq) { | 615 | if (!ppd->qib_wq) { |
| 615 | char wq_name[8]; /* 3 + 2 + 1 + 1 + 1 */ | 616 | char wq_name[8]; /* 3 + 2 + 1 + 1 + 1 */ |
| 617 | |||
| 616 | snprintf(wq_name, sizeof(wq_name), "qib%d_%d", | 618 | snprintf(wq_name, sizeof(wq_name), "qib%d_%d", |
| 617 | dd->unit, pidx); | 619 | dd->unit, pidx); |
| 618 | ppd->qib_wq = | 620 | ppd->qib_wq = |
| @@ -714,6 +716,7 @@ int qib_init(struct qib_devdata *dd, int reinit) | |||
| 714 | 716 | ||
| 715 | for (pidx = 0; pidx < dd->num_pports; ++pidx) { | 717 | for (pidx = 0; pidx < dd->num_pports; ++pidx) { |
| 716 | int mtu; | 718 | int mtu; |
| 719 | |||
| 717 | if (lastfail) | 720 | if (lastfail) |
| 718 | ret = lastfail; | 721 | ret = lastfail; |
| 719 | ppd = dd->pport + pidx; | 722 | ppd = dd->pport + pidx; |
| @@ -1161,6 +1164,7 @@ struct qib_devdata *qib_alloc_devdata(struct pci_dev *pdev, size_t extra) | |||
| 1161 | 1164 | ||
| 1162 | if (!qib_cpulist_count) { | 1165 | if (!qib_cpulist_count) { |
| 1163 | u32 count = num_online_cpus(); | 1166 | u32 count = num_online_cpus(); |
| 1167 | |||
| 1164 | qib_cpulist = kzalloc(BITS_TO_LONGS(count) * | 1168 | qib_cpulist = kzalloc(BITS_TO_LONGS(count) * |
| 1165 | sizeof(long), GFP_KERNEL); | 1169 | sizeof(long), GFP_KERNEL); |
| 1166 | if (qib_cpulist) | 1170 | if (qib_cpulist) |
diff --git a/drivers/infiniband/hw/qib/qib_pcie.c b/drivers/infiniband/hw/qib/qib_pcie.c index 243f8065dcad..4758a3801ae8 100644 --- a/drivers/infiniband/hw/qib/qib_pcie.c +++ b/drivers/infiniband/hw/qib/qib_pcie.c | |||
| @@ -461,6 +461,7 @@ void qib_pcie_getcmd(struct qib_devdata *dd, u16 *cmd, u8 *iline, u8 *cline) | |||
| 461 | void qib_pcie_reenable(struct qib_devdata *dd, u16 cmd, u8 iline, u8 cline) | 461 | void qib_pcie_reenable(struct qib_devdata *dd, u16 cmd, u8 iline, u8 cline) |
| 462 | { | 462 | { |
| 463 | int r; | 463 | int r; |
| 464 | |||
| 464 | r = pci_write_config_dword(dd->pcidev, PCI_BASE_ADDRESS_0, | 465 | r = pci_write_config_dword(dd->pcidev, PCI_BASE_ADDRESS_0, |
| 465 | dd->pcibar0); | 466 | dd->pcibar0); |
| 466 | if (r) | 467 | if (r) |
| @@ -698,6 +699,7 @@ static void | |||
| 698 | qib_pci_resume(struct pci_dev *pdev) | 699 | qib_pci_resume(struct pci_dev *pdev) |
| 699 | { | 700 | { |
| 700 | struct qib_devdata *dd = pci_get_drvdata(pdev); | 701 | struct qib_devdata *dd = pci_get_drvdata(pdev); |
| 702 | |||
| 701 | qib_devinfo(pdev, "QIB resume function called\n"); | 703 | qib_devinfo(pdev, "QIB resume function called\n"); |
| 702 | pci_cleanup_aer_uncorrect_error_status(pdev); | 704 | pci_cleanup_aer_uncorrect_error_status(pdev); |
| 703 | /* | 705 | /* |
diff --git a/drivers/infiniband/hw/qib/qib_qsfp.c b/drivers/infiniband/hw/qib/qib_qsfp.c index 98a2c251b92a..5e27f76805e2 100644 --- a/drivers/infiniband/hw/qib/qib_qsfp.c +++ b/drivers/infiniband/hw/qib/qib_qsfp.c | |||
| @@ -99,6 +99,7 @@ static int qsfp_read(struct qib_pportdata *ppd, int addr, void *bp, int len) | |||
| 99 | while (cnt < len) { | 99 | while (cnt < len) { |
| 100 | unsigned in_page; | 100 | unsigned in_page; |
| 101 | int wlen = len - cnt; | 101 | int wlen = len - cnt; |
| 102 | |||
| 102 | in_page = addr % QSFP_PAGESIZE; | 103 | in_page = addr % QSFP_PAGESIZE; |
| 103 | if ((in_page + wlen) > QSFP_PAGESIZE) | 104 | if ((in_page + wlen) > QSFP_PAGESIZE) |
| 104 | wlen = QSFP_PAGESIZE - in_page; | 105 | wlen = QSFP_PAGESIZE - in_page; |
| @@ -206,6 +207,7 @@ static int qib_qsfp_write(struct qib_pportdata *ppd, int addr, void *bp, | |||
| 206 | while (cnt < len) { | 207 | while (cnt < len) { |
| 207 | unsigned in_page; | 208 | unsigned in_page; |
| 208 | int wlen = len - cnt; | 209 | int wlen = len - cnt; |
| 210 | |||
| 209 | in_page = addr % QSFP_PAGESIZE; | 211 | in_page = addr % QSFP_PAGESIZE; |
| 210 | if ((in_page + wlen) > QSFP_PAGESIZE) | 212 | if ((in_page + wlen) > QSFP_PAGESIZE) |
| 211 | wlen = QSFP_PAGESIZE - in_page; | 213 | wlen = QSFP_PAGESIZE - in_page; |
| @@ -296,6 +298,7 @@ int qib_refresh_qsfp_cache(struct qib_pportdata *ppd, struct qib_qsfp_cache *cp) | |||
| 296 | * set the page to zero, Even if it already appears to be zero. | 298 | * set the page to zero, Even if it already appears to be zero. |
| 297 | */ | 299 | */ |
| 298 | u8 poke = 0; | 300 | u8 poke = 0; |
| 301 | |||
| 299 | ret = qib_qsfp_write(ppd, 127, &poke, 1); | 302 | ret = qib_qsfp_write(ppd, 127, &poke, 1); |
| 300 | udelay(50); | 303 | udelay(50); |
| 301 | if (ret != 1) { | 304 | if (ret != 1) { |
| @@ -539,6 +542,7 @@ int qib_qsfp_dump(struct qib_pportdata *ppd, char *buf, int len) | |||
| 539 | 542 | ||
| 540 | while (bidx < QSFP_DEFAULT_HDR_CNT) { | 543 | while (bidx < QSFP_DEFAULT_HDR_CNT) { |
| 541 | int iidx; | 544 | int iidx; |
| 545 | |||
| 542 | ret = qsfp_read(ppd, bidx, bin_buff, QSFP_DUMP_CHUNK); | 546 | ret = qsfp_read(ppd, bidx, bin_buff, QSFP_DUMP_CHUNK); |
| 543 | if (ret < 0) | 547 | if (ret < 0) |
| 544 | goto bail; | 548 | goto bail; |
diff --git a/drivers/infiniband/hw/qib/qib_sd7220.c b/drivers/infiniband/hw/qib/qib_sd7220.c index 071f2494a9c0..c72775f27212 100644 --- a/drivers/infiniband/hw/qib/qib_sd7220.c +++ b/drivers/infiniband/hw/qib/qib_sd7220.c | |||
| @@ -259,6 +259,7 @@ static int qib_ibsd_reset(struct qib_devdata *dd, int assert_rst) | |||
| 259 | * it again during startup. | 259 | * it again during startup. |
| 260 | */ | 260 | */ |
| 261 | u64 val; | 261 | u64 val; |
| 262 | |||
| 262 | rst_val &= ~(1ULL); | 263 | rst_val &= ~(1ULL); |
| 263 | qib_write_kreg(dd, kr_hwerrmask, | 264 | qib_write_kreg(dd, kr_hwerrmask, |
| 264 | dd->cspec->hwerrmask & | 265 | dd->cspec->hwerrmask & |
| @@ -590,6 +591,7 @@ static int epb_access(struct qib_devdata *dd, int sdnum, int claim) | |||
| 590 | * Both should be clear | 591 | * Both should be clear |
| 591 | */ | 592 | */ |
| 592 | u64 newval = 0; | 593 | u64 newval = 0; |
| 594 | |||
| 593 | qib_write_kreg(dd, acc, newval); | 595 | qib_write_kreg(dd, acc, newval); |
| 594 | /* First read after write is not trustworthy */ | 596 | /* First read after write is not trustworthy */ |
| 595 | pollval = qib_read_kreg32(dd, acc); | 597 | pollval = qib_read_kreg32(dd, acc); |
| @@ -601,6 +603,7 @@ static int epb_access(struct qib_devdata *dd, int sdnum, int claim) | |||
| 601 | /* Need to claim */ | 603 | /* Need to claim */ |
| 602 | u64 pollval; | 604 | u64 pollval; |
| 603 | u64 newval = EPB_ACC_REQ | oct_sel; | 605 | u64 newval = EPB_ACC_REQ | oct_sel; |
| 606 | |||
| 604 | qib_write_kreg(dd, acc, newval); | 607 | qib_write_kreg(dd, acc, newval); |
| 605 | /* First read after write is not trustworthy */ | 608 | /* First read after write is not trustworthy */ |
| 606 | pollval = qib_read_kreg32(dd, acc); | 609 | pollval = qib_read_kreg32(dd, acc); |
| @@ -812,6 +815,7 @@ static int qib_sd7220_ram_xfer(struct qib_devdata *dd, int sdnum, u32 loc, | |||
| 812 | if (!sofar) { | 815 | if (!sofar) { |
| 813 | /* Only set address at start of chunk */ | 816 | /* Only set address at start of chunk */ |
| 814 | int addrbyte = (addr + sofar) >> 8; | 817 | int addrbyte = (addr + sofar) >> 8; |
| 818 | |||
| 815 | transval = csbit | EPB_MADDRH | addrbyte; | 819 | transval = csbit | EPB_MADDRH | addrbyte; |
| 816 | tries = epb_trans(dd, trans, transval, | 820 | tries = epb_trans(dd, trans, transval, |
| 817 | &transval); | 821 | &transval); |
| @@ -1071,6 +1075,7 @@ static int qib_sd_setvals(struct qib_devdata *dd) | |||
| 1071 | dds_reg_map >>= 4; | 1075 | dds_reg_map >>= 4; |
| 1072 | for (midx = 0; midx < DDS_ROWS; ++midx) { | 1076 | for (midx = 0; midx < DDS_ROWS; ++midx) { |
| 1073 | u64 __iomem *daddr = taddr + ((midx << 4) + idx); | 1077 | u64 __iomem *daddr = taddr + ((midx << 4) + idx); |
| 1078 | |||
| 1074 | data = dds_init_vals[midx].reg_vals[idx]; | 1079 | data = dds_init_vals[midx].reg_vals[idx]; |
| 1075 | writeq(data, daddr); | 1080 | writeq(data, daddr); |
| 1076 | mmiowb(); | 1081 | mmiowb(); |
diff --git a/drivers/infiniband/hw/qib/qib_twsi.c b/drivers/infiniband/hw/qib/qib_twsi.c index 647f7beb1b0a..f5698664419b 100644 --- a/drivers/infiniband/hw/qib/qib_twsi.c +++ b/drivers/infiniband/hw/qib/qib_twsi.c | |||
| @@ -105,6 +105,7 @@ static void scl_out(struct qib_devdata *dd, u8 bit) | |||
| 105 | udelay(2); | 105 | udelay(2); |
| 106 | else { | 106 | else { |
| 107 | int rise_usec; | 107 | int rise_usec; |
| 108 | |||
| 108 | for (rise_usec = SCL_WAIT_USEC; rise_usec > 0; rise_usec -= 2) { | 109 | for (rise_usec = SCL_WAIT_USEC; rise_usec > 0; rise_usec -= 2) { |
| 109 | if (mask & dd->f_gpio_mod(dd, 0, 0, 0)) | 110 | if (mask & dd->f_gpio_mod(dd, 0, 0, 0)) |
| 110 | break; | 111 | break; |
| @@ -326,6 +327,7 @@ int qib_twsi_reset(struct qib_devdata *dd) | |||
| 326 | static int qib_twsi_wr(struct qib_devdata *dd, int data, int flags) | 327 | static int qib_twsi_wr(struct qib_devdata *dd, int data, int flags) |
| 327 | { | 328 | { |
| 328 | int ret = 1; | 329 | int ret = 1; |
| 330 | |||
| 329 | if (flags & QIB_TWSI_START) | 331 | if (flags & QIB_TWSI_START) |
| 330 | start_seq(dd); | 332 | start_seq(dd); |
| 331 | 333 | ||
| @@ -435,8 +437,7 @@ int qib_twsi_blk_wr(struct qib_devdata *dd, int dev, int addr, | |||
| 435 | int sub_len; | 437 | int sub_len; |
| 436 | const u8 *bp = buffer; | 438 | const u8 *bp = buffer; |
| 437 | int max_wait_time, i; | 439 | int max_wait_time, i; |
| 438 | int ret; | 440 | int ret = 1; |
| 439 | ret = 1; | ||
| 440 | 441 | ||
| 441 | while (len > 0) { | 442 | while (len > 0) { |
| 442 | if (dev == QIB_TWSI_NO_DEV) { | 443 | if (dev == QIB_TWSI_NO_DEV) { |
diff --git a/drivers/infiniband/hw/qib/qib_tx.c b/drivers/infiniband/hw/qib/qib_tx.c index 31d3561400a4..eface3b3dacf 100644 --- a/drivers/infiniband/hw/qib/qib_tx.c +++ b/drivers/infiniband/hw/qib/qib_tx.c | |||
| @@ -180,6 +180,7 @@ void qib_disarm_piobufs_set(struct qib_devdata *dd, unsigned long *mask, | |||
| 180 | 180 | ||
| 181 | for (i = 0; i < cnt; i++) { | 181 | for (i = 0; i < cnt; i++) { |
| 182 | int which; | 182 | int which; |
| 183 | |||
| 183 | if (!test_bit(i, mask)) | 184 | if (!test_bit(i, mask)) |
| 184 | continue; | 185 | continue; |
| 185 | /* | 186 | /* |
diff --git a/drivers/infiniband/hw/qib/qib_user_sdma.c b/drivers/infiniband/hw/qib/qib_user_sdma.c index a2b8236e2864..3e0677c51276 100644 --- a/drivers/infiniband/hw/qib/qib_user_sdma.c +++ b/drivers/infiniband/hw/qib/qib_user_sdma.c | |||
| @@ -226,6 +226,7 @@ qib_user_sdma_queue_create(struct device *dev, int unit, int ctxt, int sctxt) | |||
| 226 | sdma_rb_node->refcount++; | 226 | sdma_rb_node->refcount++; |
| 227 | } else { | 227 | } else { |
| 228 | int ret; | 228 | int ret; |
| 229 | |||
| 229 | sdma_rb_node = kmalloc(sizeof( | 230 | sdma_rb_node = kmalloc(sizeof( |
| 230 | struct qib_user_sdma_rb_node), GFP_KERNEL); | 231 | struct qib_user_sdma_rb_node), GFP_KERNEL); |
| 231 | if (!sdma_rb_node) | 232 | if (!sdma_rb_node) |
| @@ -936,6 +937,7 @@ static int qib_user_sdma_queue_pkts(const struct qib_devdata *dd, | |||
| 936 | 937 | ||
| 937 | if (tiddma) { | 938 | if (tiddma) { |
| 938 | char *tidsm = (char *)pkt + pktsize; | 939 | char *tidsm = (char *)pkt + pktsize; |
| 940 | |||
| 939 | cfur = copy_from_user(tidsm, | 941 | cfur = copy_from_user(tidsm, |
| 940 | iov[idx].iov_base, tidsmsize); | 942 | iov[idx].iov_base, tidsmsize); |
| 941 | if (cfur) { | 943 | if (cfur) { |
diff --git a/drivers/infiniband/hw/qib/qib_verbs.c b/drivers/infiniband/hw/qib/qib_verbs.c index 846e9daededa..4a3599890ea5 100644 --- a/drivers/infiniband/hw/qib/qib_verbs.c +++ b/drivers/infiniband/hw/qib/qib_verbs.c | |||
| @@ -1342,6 +1342,7 @@ static int qib_verbs_send_pio(struct qib_qp *qp, struct qib_ib_header *ibhdr, | |||
| 1342 | done: | 1342 | done: |
| 1343 | if (dd->flags & QIB_USE_SPCL_TRIG) { | 1343 | if (dd->flags & QIB_USE_SPCL_TRIG) { |
| 1344 | u32 spcl_off = (pbufn >= dd->piobcnt2k) ? 2047 : 1023; | 1344 | u32 spcl_off = (pbufn >= dd->piobcnt2k) ? 2047 : 1023; |
| 1345 | |||
| 1345 | qib_flush_wc(); | 1346 | qib_flush_wc(); |
| 1346 | __raw_writel(0xaebecede, piobuf_orig + spcl_off); | 1347 | __raw_writel(0xaebecede, piobuf_orig + spcl_off); |
| 1347 | } | 1348 | } |
diff --git a/drivers/infiniband/hw/qib/qib_wc_x86_64.c b/drivers/infiniband/hw/qib/qib_wc_x86_64.c index a9cbcf51d4f2..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) { |
| @@ -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", |
