Hi Linus, These are the proposed RDMA patches for 5.16. Not a very exciting cycle, we again meet the now-normal PR size that is predominately fixes with a few driver features. Thanks, Jason The following changes since commit 8bb7eca972ad531c9b149c0a51ab43a417385813: Linux 5.15 (2021-10-31 13:53:10 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git tags/for-linus for you to fetch changes up to f1a090f09f42be5a5542009f0be310fdb3e768fc: RDMA/core: Require the driver to set the IOVA correctly during rereg_mr (2021-11-03 09:37:52 -0300) ---------------------------------------------------------------- RDMA v5.16 merge window pull request A typical collection of patches this cycle, mostly fixing with a few new features: - Fixes from static tools. clang warnings, dead code, unused variable, coccinelle sweeps, etc - Driver bug fixes and minor improvements in rxe, bnxt_re, hfi1, mlx5, irdma, qedr - rtrs ULP bug fixes an improvments - Additional counters for bnxt_re - Support verbs CQ notifications in EFA - Continued reworking and fixing of rxe - netlink control to enable/disable optional device counters - rxe now can use AH objects for its UD path, fixing various bugs in the process - Add DMABUF support to EFA ---------------------------------------------------------------- Aharon Landau (12): RDMA/mlx5: Avoid taking MRs from larger MR cache pools when a pool is empty RDMA/counter: Add a descriptor in struct rdma_hw_stats RDMA/counter: Add an is_disabled field in struct rdma_hw_stats RDMA/counter: Add optional counter support RDMA/nldev: Add support to get status of all counters RDMA/nldev: Split nldev_stat_set_mode_doit out of nldev_stat_set_doit RDMA/nldev: Allow optional-counter status configuration through RDMA netlink RDMA/mlx5: Support optional counters in hw_stats initialization RDMA/mlx5: Add steering support in optional flow counters RDMA/mlx5: Add modify_op_stat() support RDMA/mlx5: Add optional counter support in get_hw_stats callback RDMA/core: Require the driver to set the IOVA correctly during rereg_mr Alok Prasad (1): RDMA/qedr: Fix NULL deref for query_qp on the GSI QP Andy Shevchenko (1): IB/hf1: Use string_upper() instead of an open coded variant Arnd Bergmann (1): RDMA/mlx5: fix build error with INFINIBAND_USER_ACCESS=n Bob Pearson (11): RDMA/rxe: Add memory barriers to kernel queues RDMA/rxe: Cleanup MR status and type enums RDMA/rxe: Separate HW and SW l/rkeys RDMA/rxe: Create duplicate mapping tables for FMRs RDMA/rxe: Only allow invalidate for appropriate MRs RDMA/rxe: Move AV from rxe_send_wqe to rxe_send_wr RDMA/rxe: Change AH objects to indexed RDMA/rxe: Create AH index and return to user space RDMA/rxe: Replace ah->pd by ah->ibah.pd RDMA/rxe: Lookup kernel AH from ah index in UD WQEs RDMA/rxe: Convert kernel UD post send to use ah_num Cai Huoqing (1): RDMA/hns: Use dma_alloc_coherent() instead of kmalloc/dma_map_single() Chengchang Tang (1): RDMA/hns: Use the core code to manage the fixed mmap entries Christophe JAILLET (3): RDMA: Remove redundant 'flush_workqueue()' calls RDMA/rxe: Save a few bytes from struct rxe_pool RDMA/rxe: Use 'bitmap_zalloc()' when applicable Colin Ian King (1): RDMA/iwpm: Remove redundant initialization of pointer err_str Edwin Peer (1): RDMA/bnxt_re: Use separate response buffer for stat_ctx_free Gal Pressman (4): RDMA/efa: CQ notifications dma-buf: Fix pin callback comment RDMA/umem: Allow pinned dmabuf umem usage RDMA/efa: Add support for dmabuf memory regions Gustavo A. R. Silva (1): RDMA/hfi1: Use struct_size() and flex_array_size() helpers Haoyue Xu (1): RDMA/hns: Fix initial arm_st of CQ Jack Wang (2): RDMA/rtrs: Fix warning when use poll mode on client side. RDMA/rtrs: Replace duplicate check with is_pollqueue helper Jakub Kicinski (3): RDMA/ipoib: Use dev_addr_mod() RDMA/mlx5: Use dev_addr_mod() RDMA: Constify netdev->dev_addr accesses Jason Gunthorpe (8): Merge branch 'mlx5-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux IB/mlx5: Flow through a more detailed return code from get_prefetchable_mr() Merge tag 'v5.15-rc4' into rdma.get for-next RDMA/cma: Split apart the multiple uses of the same list heads Merge branch 'mlx5-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux Merge brank 'mlx5_mkey' into rdma.git for-next Merge tag 'v5.15' into rdma.git for-next Merge branch 'for-rc' into rdma.git for-next Joe Perches (1): RDMA/rxe: Make rxe_type_info static const Junji Wei (1): RDMA/rxe: Fix wrong port_cap_flags Kamal Heib (5): RDMA/qedr: Remove unsupported qedr_resize_cq callback RDMA/bnxt_re: Fix kernel panic when trying to access bnxt_re_stat_descs RDMA/bnxt_re: Use helper function to set GUIDs RDMA/qed: Use helper function to set GUIDs RDMA/bnxt_re: Remove unsupported bnxt_re_modify_ah callback Leon Romanovsky (1): RDMA/mlx4: Return missed an error if device doesn't support steering Logan Gunthorpe (2): RDMA/rw: switch to dma_map_sgtable() RDMA/core: Set sgtable nents when using ib_dma_virt_map_sg() Mark Zhang (2): RDMA/core: Add a helper API rdma_free_hw_stats_struct RDMA/core: Fix missed initialization of rdma_hw_stats::lock Md Haris Iqbal (5): RDMA/rtrs: Use sysfs_emit instead of s*printf function for sysfs show RDMA/rtrs: Remove len parameter from helper print functions of sysfs RDMA/rtrs: Introduce destroy_cq helper RDMA/rtrs: Do not allow sessname to contain special symbols / and . RDMA/rtrs-clt: Follow "one entry one value" rule for IO migration stats Mike Marciniszyn (6): IB/hfi1: Remove cache and embed txreq in ring IB/hfi1: Get rid of hot path divide IB/hfi1: Get rid of tx priv backpointer IB/hfi1: Tune netdev xmit cachelines IB/hfi1: Remove atomic completion count IB/hfi1: Add ring consumer and producers traces Rao Shoaib (1): RDMA/rxe: Bump up default maximum values used via uverbs Scott Breyer (3): IB/hfi1: Rebranding of hfi1 driver to Cornelis Networks IB/qib: Rebranding of qib driver to Cornelis Networks IB/opa_vnic: Rebranding of OPA VNIC driver to Cornelis Networks Selvin Xavier (10): RDMA/bnxt_re: Add extended statistics counters RDMA/bnxt_re: Update statistics counter name RDMA/bnxt_re: Reduce the delay in polling for hwrm command completion RDMA/bnxt_re: Support multiple page sizes RDMA/bnxt_re: Suppress unwanted error messages RDMA/bnxt_re: Fix query SRQ failure RDMA/bnxt_re: Fix FRMR issue with single page MR allocation RDMA/bnxt_re: Use GFP_KERNEL in non atomic context RDMA/bnxt_re: Correct FRMR size calculation RDMA/bnxt_re: Check if the vlan is valid before reporting Xiao Yang (7): RDMA/rxe: Add new RXE_READ_OR_WRITE_MASK RDMA/rxe: Add MASK suffix for RXE_READ_OR_ATOMIC and RXE_WRITE_OR_SEND RDMA/rxe: Remove unused WR_READ_WRITE_OR_SEND_MASK RDMA/rxe: Remove the is_user members of struct rxe_sq/rxe_rq/rxe_srq RDMA/rxe: Change the is_user member of struct rxe_cq to bool RDMA/rxe: Set partial attributes when completion status != IBV_WC_SUCCESS RDMA/rxe: Remove duplicate settings Yixing Liu (1): RDMA/hns: Modify the value of MAX_LP_MSG_LEN to meet hardware compatibility Zhu Yanjun (11): RDMA/rxe: remove the redundant variable RDMA/rxe: remove the unnecessary variable RDMA/irdma: Delete unused struct irdma_bth RDMA/irdma: Remove irdma_uk_mw_bind() RDMA/irdma: Remove irdma_sc_send_lsmm_nostag() RDMA/irdma: Remove irdma_get_hw_addr() RDMA/irdma: Remove irdma_cqp_up_map_cmd() RDMA/irdma: Make irdma_uk_cq_init() return a void RDMA/irdma: Remove the unused spin lock in struct irdma_qp_uk RDMA/irdma: Remove the unused variable local_qp RDMA/irdma: optimize rx path by removing unnecessary copy wangyugui (1): RDMA/core: Use kvzalloc when allocating the struct ib_port drivers/infiniband/core/cma.c | 34 +- drivers/infiniband/core/cma_priv.h | 11 +- drivers/infiniband/core/counters.c | 40 ++- drivers/infiniband/core/device.c | 1 + drivers/infiniband/core/iwpm_util.c | 2 +- drivers/infiniband/core/nldev.c | 278 ++++++++++++--- drivers/infiniband/core/rw.c | 66 ++-- drivers/infiniband/core/sa_query.c | 1 - drivers/infiniband/core/sysfs.c | 58 ++-- drivers/infiniband/core/umem_dmabuf.c | 51 +++ drivers/infiniband/core/uverbs_cmd.c | 3 - drivers/infiniband/core/verbs.c | 49 +++ drivers/infiniband/hw/bnxt_re/bnxt_re.h | 19 +- drivers/infiniband/hw/bnxt_re/hw_counters.c | 380 +++++++++++++-------- drivers/infiniband/hw/bnxt_re/hw_counters.h | 30 +- drivers/infiniband/hw/bnxt_re/ib_verbs.c | 45 ++- drivers/infiniband/hw/bnxt_re/ib_verbs.h | 1 - drivers/infiniband/hw/bnxt_re/main.c | 16 +- drivers/infiniband/hw/bnxt_re/qplib_fp.c | 15 +- drivers/infiniband/hw/bnxt_re/qplib_rcfw.c | 6 +- drivers/infiniband/hw/bnxt_re/qplib_rcfw.h | 2 +- drivers/infiniband/hw/bnxt_re/qplib_res.c | 22 +- drivers/infiniband/hw/bnxt_re/qplib_res.h | 10 +- drivers/infiniband/hw/bnxt_re/qplib_sp.c | 57 +++- drivers/infiniband/hw/bnxt_re/qplib_sp.h | 33 +- drivers/infiniband/hw/bnxt_re/roce_hsi.h | 85 +++++ drivers/infiniband/hw/cxgb4/cm.c | 1 - drivers/infiniband/hw/cxgb4/device.c | 1 - drivers/infiniband/hw/cxgb4/provider.c | 22 +- drivers/infiniband/hw/efa/efa.h | 23 +- drivers/infiniband/hw/efa/efa_admin_cmds_defs.h | 100 +++++- drivers/infiniband/hw/efa/efa_admin_defs.h | 41 +++ drivers/infiniband/hw/efa/efa_com.c | 164 +++++++++ drivers/infiniband/hw/efa/efa_com.h | 38 ++- drivers/infiniband/hw/efa/efa_com_cmd.c | 35 +- drivers/infiniband/hw/efa/efa_com_cmd.h | 10 +- drivers/infiniband/hw/efa/efa_main.c | 182 ++++++++-- drivers/infiniband/hw/efa/efa_regs_defs.h | 7 +- drivers/infiniband/hw/efa/efa_verbs.c | 213 +++++++++--- drivers/infiniband/hw/hfi1/Kconfig | 4 +- drivers/infiniband/hw/hfi1/chip.c | 3 +- drivers/infiniband/hw/hfi1/driver.c | 3 +- drivers/infiniband/hw/hfi1/efivar.c | 10 +- drivers/infiniband/hw/hfi1/init.c | 3 +- drivers/infiniband/hw/hfi1/ipoib.h | 82 +++-- drivers/infiniband/hw/hfi1/ipoib_main.c | 2 +- drivers/infiniband/hw/hfi1/ipoib_tx.c | 316 ++++++++--------- drivers/infiniband/hw/hfi1/trace_tx.h | 71 +++- drivers/infiniband/hw/hfi1/user_exp_rcv.c | 5 +- drivers/infiniband/hw/hfi1/verbs.c | 53 +-- drivers/infiniband/hw/hns/hns_roce_device.h | 26 +- drivers/infiniband/hw/hns/hns_roce_hw_v1.c | 10 +- drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 32 +- drivers/infiniband/hw/hns/hns_roce_main.c | 142 ++++++-- drivers/infiniband/hw/irdma/cm.h | 12 +- drivers/infiniband/hw/irdma/ctrl.c | 43 +-- drivers/infiniband/hw/irdma/hw.c | 7 +- drivers/infiniband/hw/irdma/main.h | 5 +- drivers/infiniband/hw/irdma/osdep.h | 1 - drivers/infiniband/hw/irdma/protos.h | 2 - drivers/infiniband/hw/irdma/trace_cm.h | 8 +- drivers/infiniband/hw/irdma/type.h | 3 +- drivers/infiniband/hw/irdma/uk.c | 101 ++---- drivers/infiniband/hw/irdma/user.h | 32 +- drivers/infiniband/hw/irdma/utils.c | 49 +-- drivers/infiniband/hw/irdma/verbs.c | 146 ++++---- drivers/infiniband/hw/mlx4/alias_GUID.c | 4 +- drivers/infiniband/hw/mlx4/main.c | 44 ++- drivers/infiniband/hw/mlx4/mlx4_ib.h | 2 +- drivers/infiniband/hw/mlx4/qp.c | 4 +- drivers/infiniband/hw/mlx5/counters.c | 283 ++++++++++++--- drivers/infiniband/hw/mlx5/fs.c | 187 ++++++++++ drivers/infiniband/hw/mlx5/mlx5_ib.h | 28 +- drivers/infiniband/hw/mlx5/mr.c | 26 +- drivers/infiniband/hw/mlx5/odp.c | 40 ++- drivers/infiniband/hw/qedr/main.c | 1 - drivers/infiniband/hw/qedr/verbs.c | 25 +- drivers/infiniband/hw/qedr/verbs.h | 1 - drivers/infiniband/hw/qib/qib_driver.c | 5 +- drivers/infiniband/hw/usnic/usnic_fwd.c | 2 +- drivers/infiniband/hw/usnic/usnic_fwd.h | 2 +- drivers/infiniband/sw/rxe/rxe_av.c | 20 +- drivers/infiniband/sw/rxe/rxe_comp.c | 55 ++- drivers/infiniband/sw/rxe/rxe_cq.c | 28 +- drivers/infiniband/sw/rxe/rxe_hw_counters.c | 42 +-- drivers/infiniband/sw/rxe/rxe_loc.h | 2 + drivers/infiniband/sw/rxe/rxe_mr.c | 275 +++++++++++---- drivers/infiniband/sw/rxe/rxe_mw.c | 36 +- drivers/infiniband/sw/rxe/rxe_opcode.h | 6 +- drivers/infiniband/sw/rxe/rxe_param.h | 34 +- drivers/infiniband/sw/rxe/rxe_pool.c | 41 ++- drivers/infiniband/sw/rxe/rxe_pool.h | 15 - drivers/infiniband/sw/rxe/rxe_qp.c | 16 +- drivers/infiniband/sw/rxe/rxe_queue.c | 30 +- drivers/infiniband/sw/rxe/rxe_queue.h | 374 +++++++++----------- drivers/infiniband/sw/rxe/rxe_req.c | 65 ++-- drivers/infiniband/sw/rxe/rxe_resp.c | 50 +-- drivers/infiniband/sw/rxe/rxe_srq.c | 3 +- drivers/infiniband/sw/rxe/rxe_verbs.c | 139 +++----- drivers/infiniband/sw/rxe/rxe_verbs.h | 62 ++-- drivers/infiniband/sw/siw/siw_cm.c | 4 +- drivers/infiniband/ulp/ipoib/ipoib_cm.c | 4 +- drivers/infiniband/ulp/ipoib/ipoib_ib.c | 9 +- drivers/infiniband/ulp/ipoib/ipoib_main.c | 18 +- drivers/infiniband/ulp/opa_vnic/Kconfig | 4 +- drivers/infiniband/ulp/opa_vnic/Makefile | 3 +- drivers/infiniband/ulp/opa_vnic/opa_vnic_vema.c | 7 +- drivers/infiniband/ulp/rtrs/rtrs-clt-stats.c | 55 +-- drivers/infiniband/ulp/rtrs/rtrs-clt-sysfs.c | 11 +- drivers/infiniband/ulp/rtrs/rtrs-clt.c | 6 + drivers/infiniband/ulp/rtrs/rtrs-clt.h | 13 +- drivers/infiniband/ulp/rtrs/rtrs-pri.h | 2 +- drivers/infiniband/ulp/rtrs/rtrs-srv-stats.c | 3 +- drivers/infiniband/ulp/rtrs/rtrs-srv-sysfs.c | 2 +- drivers/infiniband/ulp/rtrs/rtrs-srv.c | 6 + drivers/infiniband/ulp/rtrs/rtrs-srv.h | 3 +- drivers/infiniband/ulp/rtrs/rtrs.c | 31 +- .../net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c | 8 +- drivers/net/ethernet/qlogic/qed/qed_rdma.c | 17 +- include/linux/dma-buf.h | 4 +- include/rdma/ib_hdrs.h | 1 + include/rdma/ib_umem.h | 11 + include/rdma/ib_verbs.h | 74 ++-- include/rdma/rdma_counter.h | 2 + include/uapi/rdma/efa-abi.h | 18 +- include/uapi/rdma/rdma_netlink.h | 5 + include/uapi/rdma/rdma_user_rxe.h | 10 +- 127 files changed, 3655 insertions(+), 1946 deletions(-) (diffstat from tag for-linus-merged)