Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma

Pull rdma fixes from Jason Gunthorpe:
"Over the break a few defects were found, so this is a -rc style pull
request of various small things that have been posted.

- An attempt to shorten RCU grace period driven delays showed crashes
during heavier testing, and has been entirely reverted

- A missed merge/rebase error between the advise_mr and ib_device_ops
series

- Some small static analysis driven fixes from Julia and Aditya

- Missed ability to create a XRC_INI in the devx verbs interop
series"

* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma:
infiniband/qedr: Potential null ptr dereference of qp
infiniband: bnxt_re: qplib: Check the return value of send_message
IB/ipoib: drop useless LIST_HEAD
IB/core: Add advise_mr to the list of known ops
Revert "IB/mlx5: Fix long EEH recover time with NVMe offloads"
IB/mlx5: Allow XRC INI usage via verbs in DEVX context

+10 -21
+1
drivers/infiniband/core/device.c
··· 1232 1232 } while (0) 1233 1233 1234 1234 SET_DEVICE_OP(dev_ops, add_gid); 1235 + SET_DEVICE_OP(dev_ops, advise_mr); 1235 1236 SET_DEVICE_OP(dev_ops, alloc_dm); 1236 1237 SET_DEVICE_OP(dev_ops, alloc_fmr); 1237 1238 SET_DEVICE_OP(dev_ops, alloc_hw_stats);
+2 -3
drivers/infiniband/hw/bnxt_re/qplib_sp.c
··· 780 780 req.cos0 = cpu_to_le16(cids[0]); 781 781 req.cos1 = cpu_to_le16(cids[1]); 782 782 783 - bnxt_qplib_rcfw_send_message(rcfw, (void *)&req, (void *)&resp, NULL, 784 - 0); 785 - return 0; 783 + return bnxt_qplib_rcfw_send_message(rcfw, (void *)&req, (void *)&resp, 784 + NULL, 0); 786 785 } 787 786 788 787 int bnxt_qplib_get_roce_stats(struct bnxt_qplib_rcfw *rcfw,
+3 -16
drivers/infiniband/hw/mlx5/mr.c
··· 73 73 74 74 #ifdef CONFIG_INFINIBAND_ON_DEMAND_PAGING 75 75 /* Wait until all page fault handlers using the mr complete. */ 76 - if (mr->umem && mr->umem->is_odp) 77 - synchronize_srcu(&dev->mr_srcu); 76 + synchronize_srcu(&dev->mr_srcu); 78 77 #endif 79 78 80 79 return err; ··· 237 238 { 238 239 struct mlx5_mr_cache *cache = &dev->cache; 239 240 struct mlx5_cache_ent *ent = &cache->ent[c]; 240 - #ifdef CONFIG_INFINIBAND_ON_DEMAND_PAGING 241 - bool odp_mkey_exist = false; 242 - #endif 243 241 struct mlx5_ib_mr *tmp_mr; 244 242 struct mlx5_ib_mr *mr; 245 243 LIST_HEAD(del_list); ··· 249 253 break; 250 254 } 251 255 mr = list_first_entry(&ent->head, struct mlx5_ib_mr, list); 252 - #ifdef CONFIG_INFINIBAND_ON_DEMAND_PAGING 253 - if (mr->umem && mr->umem->is_odp) 254 - odp_mkey_exist = true; 255 - #endif 256 256 list_move(&mr->list, &del_list); 257 257 ent->cur--; 258 258 ent->size--; ··· 257 265 } 258 266 259 267 #ifdef CONFIG_INFINIBAND_ON_DEMAND_PAGING 260 - if (odp_mkey_exist) 261 - synchronize_srcu(&dev->mr_srcu); 268 + synchronize_srcu(&dev->mr_srcu); 262 269 #endif 263 270 264 271 list_for_each_entry_safe(mr, tmp_mr, &del_list, list) { ··· 572 581 { 573 582 struct mlx5_mr_cache *cache = &dev->cache; 574 583 struct mlx5_cache_ent *ent = &cache->ent[c]; 575 - bool odp_mkey_exist = false; 576 584 struct mlx5_ib_mr *tmp_mr; 577 585 struct mlx5_ib_mr *mr; 578 586 LIST_HEAD(del_list); ··· 584 594 break; 585 595 } 586 596 mr = list_first_entry(&ent->head, struct mlx5_ib_mr, list); 587 - if (mr->umem && mr->umem->is_odp) 588 - odp_mkey_exist = true; 589 597 list_move(&mr->list, &del_list); 590 598 ent->cur--; 591 599 ent->size--; ··· 592 604 } 593 605 594 606 #ifdef CONFIG_INFINIBAND_ON_DEMAND_PAGING 595 - if (odp_mkey_exist) 596 - synchronize_srcu(&dev->mr_srcu); 607 + synchronize_srcu(&dev->mr_srcu); 597 608 #endif 598 609 599 610 list_for_each_entry_safe(mr, tmp_mr, &del_list, list) {
+2 -1
drivers/infiniband/hw/mlx5/qp.c
··· 837 837 goto err_umem; 838 838 } 839 839 840 - uid = (attr->qp_type != IB_QPT_XRC_TGT) ? to_mpd(pd)->uid : 0; 840 + uid = (attr->qp_type != IB_QPT_XRC_TGT && 841 + attr->qp_type != IB_QPT_XRC_INI) ? to_mpd(pd)->uid : 0; 841 842 MLX5_SET(create_qp_in, *in, uid, uid); 842 843 pas = (__be64 *)MLX5_ADDR_OF(create_qp_in, *in, pas); 843 844 if (ubuffer->umem)
+2
drivers/infiniband/hw/qedr/qedr_iw_cm.c
··· 492 492 int i; 493 493 494 494 qp = idr_find(&dev->qpidr.idr, conn_param->qpn); 495 + if (unlikely(!qp)) 496 + return -EINVAL; 495 497 496 498 laddr = (struct sockaddr_in *)&cm_id->m_local_addr; 497 499 raddr = (struct sockaddr_in *)&cm_id->m_remote_addr;
-1
drivers/infiniband/ulp/ipoib/ipoib_ib.c
··· 669 669 { 670 670 struct ipoib_dev_priv *priv = ipoib_priv(dev); 671 671 struct ipoib_ah *ah, *tah; 672 - LIST_HEAD(remove_list); 673 672 unsigned long flags; 674 673 675 674 netif_tx_lock_bh(dev);