[GIT PULL] Please pull RDMA subsystem changes

From: Jason Gunthorpe
Date: Wed Apr 01 2020 - 19:05:22 EST


Hi Linus,

These are the proposed RDMA patches for 5.7.

This cycle saw some more activity from Syzkaller, I think we are now clean on
all but one of those bugs, including the long standing and obnoxious rdma_cm
locking design defect. Continue to see many drivers getting cleanups, with a
few new user visible features.

Thanks,
Jason

The following changes since commit 826096d84f509d95ee8f72728fe19c44fbb9df6b:

mlx5: Remove uninitialized use of key in mlx5_core_create_mkey (2020-03-16 23:30:32 -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 b4d8ddf8356d8ac73fb931d16bcc661a83b2c0fe:

RDMA/bnxt_re: make bnxt_re_ib_init static (2020-03-30 15:03:19 -0300)

----------------------------------------------------------------
RDMA 5.7 pull request

The majority of the patches are cleanups, refactorings and clarity
improvements

- Various driver updates for siw, bnxt_re, rxe, efa, mlx5, hfi1

- Lots of cleanup patches for hns

- Convert more places to use refcount

- Aggressively lock the RDMA CM code that syzkaller says isn't working

- Work to clarify ib_cm

- Use the new ib_device lifecycle model in bnxt_re

- Fix mlx5's MR cache which seems to be failing more often with the new
ODP code

- mlx5 'dynamic uar' and 'tx steering' user interfaces

----------------------------------------------------------------
Alex Vesker (1):
IB/mlx5: Replace tunnel mpls capability bits for tunnel_offloads

Alexander Lobakin (1):
IB/mlx5: Optimize u64 division on 32-bit arches

Andrew Morton (1):
RDMA/siw: Suppress uninitialized var warning

Avihai Horon (1):
RDMA/cm: Update num_paths in cma_resolve_iboe_route error flow

Bart Van Assche (1):
RDMA/rxe: Fix configuration of atomic queue pair attributes

Bernard Metzler (1):
RDMA/siw: Fix passive connection establishment

Christophe JAILLET (1):
RDMA/bnxt_re: Remove a redundant 'memset'

Colin Ian King (2):
RDMA/hns: fix spelling mistake: "attatch" -> "attach"
RDMA/hns: fix spelling mistake "attatch" -> "attach"

Dan Carpenter (1):
IB/mlx5: Fix a NULL vs IS_ERR() check

Devesh Sharma (8):
RDMA/bnxt_re: Refactor queue pair creation code
RDMA/bnxt_re: Replace chip context structure with pointer
RDMA/bnxt_re: Refactor hardware queue memory allocation
RDMA/bnxt_re: Refactor net ring allocation function
RDMA/bnxt_re: Refactor command queue management code
RDMA/bnxt_re: Refactor notification queue management code
RDMA/bnxt_re: Refactor doorbell management functions
RDMA/bnxt_re: use ibdev based message printing functions

Erez Shitrit (1):
RDMA/mlx5: Remove duplicate definitions of SW_ICM macros

Gal Pressman (3):
RDMA/efa: Unified getters/setters for device structs bitmask access
RDMA/efa: Properly document the interrupt mask register
RDMA/efa: Do not delay freeing of DMA pages

George Spelvin (1):
IB/qib: Delete struct qib_ivdev.qp_rnd

Gustavo A. R. Silva (2):
RDMA: Replace zero-length array with flexible-array member
RDMA/hns: Fix uninitialized variable bug

Jason Gunthorpe (35):
RDMA/core: Get rid of ib_create_qp_user
RDMA/ucma: Use refcount_t for the ctx->ref
RDMA/bnxt_re: Using vmalloc requires including vmalloc.h
RDMA/ucma: Put a lock around every call to the rdma_cm layer
Merge tag 'v5.6-rc4' into rdma.git for-next
Merge branch 'mlx5_packet_pacing' into rdma.git for-next
Merge tag 'v5.6-rc5' into rdma.git for-next
RDMA/cma: Teach lockdep about the order of rtnl and lock
RDMA/mlx5: Rename the tracking variables for the MR cache
RDMA/mlx5: Simplify how the MR cache bucket is located
RDMA/mlx5: Always remove MRs from the cache before destroying them
RDMA/mlx5: Fix MR cache size and limit debugfs
RDMA/mlx5: Lock access to ent->available_mrs/limit when doing queue_work
RDMA/mlx5: Fix locking in MR cache work queue
RDMA/mlx5: Revise how the hysteresis scheme works for cache filling
RDMA/mlx5: Allow MRs to be created in the cache synchronously
Merge branch 'mlx5_mr_cache' into rdma.git for-next
RDMA/cm: Fix ordering of xa_alloc_cyclic() in ib_create_cm_id()
RDMA/cm: Fix checking for allowed duplicate listens
RDMA/cm: Remove a race freeing timewait_info
RDMA/cm: Make the destroy_id flow more robust
RDMA/cm: Simplify establishing a listen cm_id
RDMA/cm: Read id.state under lock when doing pr_debug()
RDMA/cm: Make it clear that there is no concurrency in cm_sidr_req_handler()
RDMA/cm: Make it clearer how concurrency works in cm_req_handler()
RDMA/cm: Add missing locking around id.state in cm_dup_req_handler
RDMA/cm: Add some lockdep assertions for cm_id_priv->lock
RDMA/cm: Allow ib_send_cm_dreq() to be done under lock
RDMA/cm: Allow ib_send_cm_drep() to be done under lock
RDMA/cm: Allow ib_send_cm_rej() to be done under lock
RDMA/cm: Allow ib_send_cm_sidr_rep() to be done under lock
RDMA/cm: Make sure the cm_id is in the IB_CM_IDLE state in destroy
RDMA/bnxt_re: Use ib_device_try_get()
RDMA/bnxt_re: Fix lifetimes in bnxt_re_task
Merge branch 'mlx5_tx_steering' into rdma.git for-next

Jihua Tao (1):
RDMA/hns: Reduce PFC frames in congestion scenarios

Kaike Wan (3):
IB/hfi1: Remove kobj from hfi1_devdata
IB/hfi1: Fix memory leaks in sysfs registration and unregistration
IB/hfi1: Call kobject_put() when kobject_init_and_add() fails

Kamal Heib (3):
RDMA/siw: Fix setting active_mtu attribute
RDMA/siw: Fix setting active_{speed, width} attributes
RDMA/providers: Fix return value when QP type isn't supported

Lang Cheng (10):
RDMA/hns: Cleanups of magic numbers
RDMA/hns: Initialize all fields of doorbells to zero
RDMA/hns: Treat revision HIP08_A as a special case
RDMA/hns: Check if depth of qp is 0 before configure
RDMA/hns: Simplify attribute judgment code
RDMA/hns: Adjust the qp status value sequence of the hardware
RDMA/hns: Remove definition of cq doorbell structure
RDMA/hns: Remove redundant qpc setup operations
RDMA/hns: Reduce the maximum number of extend SGE per WQE
RDMA/hns: Modify the mask of QP number for CQE of hip08

Leon Romanovsky (8):
RDMA/ucma: Mask QPN to be 24 bits according to IBTA
RDMA/ipoib: Don't set constant driver version
RDMA/opa_vnic: Delete driver version
RDMA/mlx4: Delete duplicated offsetofend implementation
RDMA/mlx5: Use offsetofend() instead of duplicated variant
RDMA/cm: Delete not implemented CM peer to peer communication
RDMA/efa: Use in-kernel offsetofend() to check field availability
IB/mlx5: Limit the scope of struct mlx5_bfreg_info to mlx5_ib

Lijun Ou (2):
RDMA/hns: Unify format of prints
RDMA/hns: Optimize hns_roce_alloc_vf_resource()

Mauro Carvalho Chehab (1):
IB/hfi1: Get rid of a warning

Max Gurtovoy (1):
RDMA/rw: map P2P memory correctly for signature operations

Michael Guralnik (4):
RDMA/core: Add weak ordering dma attr to dma mapping
RDMA/mlx5: Prevent UMR usage with RO only when we have RO caps
net/mlx5: Add support for RDMA TX steering
RDMA/mlx5: Add support for RDMA TX flow table

Mike Marciniszyn (1):
IB/rdmavt: Delete unused routine

Parav Pandit (8):
RDMA/cma: Use a helper function to enqueue resolve work items
RDMA/cma: Use RDMA device port iterator
RDMA/cma: Rename cma_device ref/deref helpers to to get/put
RDMA/cma: Use refcount API to reflect refcount
RDMA/cma: Rename cma_device ref/deref helpers to to get/put
RDMA/cma: Use refcount API to reflect refcount
IB/mlx5: Add np_min_time_between_cnps and rp_max_rate debug params
IB/mlx5: Fix missing congestion control debugfs on rep rdma device

Saeed Mahameed (1):
RDMA/mlx5: Replace spinlock protected write with atomic var

Selvin Xavier (6):
RDMA/core: Add helper function to retrieve driver gid context from gid attr
RDMA/bnxt_re: Use rdma_read_gid_hw_context to retrieve HW gid index
RDMA/bnxt_re: Refactor device add/remove functionalities
RDMA/bnxt_re: Use driver_unregister and unregistration API
RDMA/bnxt_re: Remove unnecessary sched count
RDMA/bnxt_re: Wait for all the CQ events before freeing CQ data structures

Sergey Gorenko (1):
IB/iser: Always check sig MR before putting it to the free pool

Shiraz Saleem (1):
i40iw: Do an RCU lookup in i40iw_add_ipv4_addr

Sindhu, Devale (1):
i40iw: Report correct firmware version

Takashi Iwai (1):
IB/hfi1: Use scnprintf() for avoiding potential buffer overflow

Weihang Li (4):
RDMA/hns: Fix wrong judgments of udata->outlen
RDMA/hns: Fix a wrong judgment of return value
RDMA/hns: Remove redundant assignment of wc->smac when polling cq
RDMA/hns: Remove redundant judgment of qp_type

Wenpeng Liang (1):
RDMA/hns: Remove meaningless prints

Xi Wang (15):
RDMA/hns: Optimize eqe buffer allocation flow
RDMA/hns: Optimize qp destroy flow
RDMA/hns: Optimize qp context create and destroy flow
RDMA/hns: Optimize qp number assign flow
RDMA/hns: Optimize qp buffer allocation flow
RDMA/hns: Optimize qp param setup flow
RDMA/hns: Optimize kernel qp wrid allocation flow
RDMA/hns: Optimize qp doorbell allocation flow
RDMA/hns: Rename wqe buffer related functions
RDMA/hns: Optimize wqe buffer filling process for post send
RDMA/hns: Optimize the wr opcode conversion from ib to hns
RDMA/hns: Optimize base address table config flow for qp buffer
RDMA/hns: Optimize wqe buffer set flow for post send
RDMA/hns: Optimize mhop get flow for multi-hop addressing
RDMA/hns: Optimize mhop put flow for multi-hop addressing

Yishai Hadas (6):
IB/mlx5: Introduce UAPIs to manage packet pacing
IB/mlx5: Generally use the WC auto detection test result
IB/mlx5: Expose UAR object and its alloc/destroy commands
IB/mlx5: Extend CQ creation to get uar page index from user space
IB/mlx5: Extend QP creation to get uar page index from user space
IB/mlx5: Move to fully dynamic UAR mode once user space supports it

Yixian Liu (4):
RDMA/hns: Add the workqueue framework for flush cqe handler
RDMA/hns: Delayed flush cqe process with workqueue
RDMA/hns: Use flush framework for the case in aeq
RDMA/hns: Stop doorbell update while qp state error

YueHaibing (4):
RDMA/bnxt_re: Remove set but not used variable 'pg_size'
RDMA/bnxt_re: Remove set but not used variable 'dev_attr'
RDMA/bnxt_re: Remove set but not used variables 'pg' and 'idx'
RDMA/bnxt_re: make bnxt_re_ib_init static

Zhu Yanjun (2):
RDMA/core: Remove the duplicate header file
RDMA/rxe: Set sys_image_guid to be aligned with HW IB devices

drivers/infiniband/core/cache.c | 19 +-
drivers/infiniband/core/cm.c | 746 ++++----
drivers/infiniband/core/cma.c | 114 +-
drivers/infiniband/core/cma_configfs.c | 6 +-
drivers/infiniband/core/cma_priv.h | 6 +-
drivers/infiniband/core/mad_priv.h | 4 +-
drivers/infiniband/core/multicast.c | 2 +-
drivers/infiniband/core/rw.c | 12 +-
drivers/infiniband/core/sa_query.c | 2 +-
drivers/infiniband/core/ucma.c | 61 +-
drivers/infiniband/core/umem.c | 11 +-
drivers/infiniband/core/verbs.c | 24 +-
drivers/infiniband/hw/bnxt_re/bnxt_re.h | 26 +-
drivers/infiniband/hw/bnxt_re/ib_verbs.c | 926 ++++++----
drivers/infiniband/hw/bnxt_re/main.c | 492 +++---
drivers/infiniband/hw/bnxt_re/qplib_fp.c | 489 +++---
drivers/infiniband/hw/bnxt_re/qplib_fp.h | 95 +-
drivers/infiniband/hw/bnxt_re/qplib_rcfw.c | 463 +++--
drivers/infiniband/hw/bnxt_re/qplib_rcfw.h | 85 +-
drivers/infiniband/hw/bnxt_re/qplib_res.c | 470 +++--
drivers/infiniband/hw/bnxt_re/qplib_res.h | 145 +-
drivers/infiniband/hw/bnxt_re/qplib_sp.c | 48 +-
drivers/infiniband/hw/cxgb4/iw_cxgb4.h | 4 +-
drivers/infiniband/hw/cxgb4/qp.c | 2 +-
drivers/infiniband/hw/cxgb4/t4fw_ri_api.h | 8 +-
drivers/infiniband/hw/efa/efa_admin_cmds_defs.h | 7 +-
drivers/infiniband/hw/efa/efa_admin_defs.h | 4 +-
drivers/infiniband/hw/efa/efa_com.c | 158 +-
drivers/infiniband/hw/efa/efa_com_cmd.c | 29 +-
drivers/infiniband/hw/efa/efa_common_defs.h | 13 +-
drivers/infiniband/hw/efa/efa_regs_defs.h | 25 +-
drivers/infiniband/hw/efa/efa_verbs.c | 51 +-
drivers/infiniband/hw/hfi1/fault.c | 4 +-
drivers/infiniband/hw/hfi1/file_ops.c | 4 +-
drivers/infiniband/hw/hfi1/hfi.h | 2 -
drivers/infiniband/hw/hfi1/init.c | 26 +-
drivers/infiniband/hw/hfi1/mad.c | 4 +-
drivers/infiniband/hw/hfi1/mad.h | 2 +-
drivers/infiniband/hw/hfi1/pio.h | 4 +-
drivers/infiniband/hw/hfi1/sdma.c | 2 +-
drivers/infiniband/hw/hfi1/sdma.h | 4 +-
drivers/infiniband/hw/hfi1/sysfs.c | 26 +-
drivers/infiniband/hw/hfi1/user_exp_rcv.h | 2 +-
drivers/infiniband/hw/hns/hns_roce_cq.c | 8 +-
drivers/infiniband/hw/hns/hns_roce_device.h | 54 +-
drivers/infiniband/hw/hns/hns_roce_hem.c | 474 ++---
drivers/infiniband/hw/hns/hns_roce_hw_v1.c | 46 +-
drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 1851 +++++++-------------
drivers/infiniband/hw/hns/hns_roce_hw_v2.h | 16 +-
drivers/infiniband/hw/hns/hns_roce_mr.c | 2 +-
drivers/infiniband/hw/hns/hns_roce_pd.c | 6 +-
drivers/infiniband/hw/hns/hns_roce_qp.c | 977 ++++++-----
drivers/infiniband/hw/hns/hns_roce_srq.c | 3 +-
drivers/infiniband/hw/i40iw/i40iw.h | 22 +-
drivers/infiniband/hw/i40iw/i40iw_cm.h | 4 +-
drivers/infiniband/hw/i40iw/i40iw_ctrl.c | 96 +
drivers/infiniband/hw/i40iw/i40iw_d.h | 26 +-
drivers/infiniband/hw/i40iw/i40iw_main.c | 24 +-
drivers/infiniband/hw/i40iw/i40iw_p.h | 1 +
drivers/infiniband/hw/i40iw/i40iw_status.h | 3 +-
drivers/infiniband/hw/i40iw/i40iw_type.h | 12 +
drivers/infiniband/hw/i40iw/i40iw_verbs.c | 12 +-
drivers/infiniband/hw/mlx4/main.c | 9 +-
drivers/infiniband/hw/mlx4/qp.c | 2 +-
drivers/infiniband/hw/mlx5/Makefile | 1 +
drivers/infiniband/hw/mlx5/cong.c | 20 +
drivers/infiniband/hw/mlx5/cq.c | 21 +-
drivers/infiniband/hw/mlx5/flow.c | 3 +
drivers/infiniband/hw/mlx5/main.c | 265 ++-
drivers/infiniband/hw/mlx5/mem.c | 2 +-
drivers/infiniband/hw/mlx5/mlx5_ib.h | 89 +-
drivers/infiniband/hw/mlx5/mr.c | 608 ++++---
drivers/infiniband/hw/mlx5/odp.c | 2 +-
drivers/infiniband/hw/mlx5/qos.c | 136 ++
drivers/infiniband/hw/mlx5/qp.c | 35 +-
drivers/infiniband/hw/mthca/mthca_memfree.c | 2 +-
drivers/infiniband/hw/mthca/mthca_memfree.h | 2 +-
drivers/infiniband/hw/mthca/mthca_provider.c | 2 +-
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 2 +-
drivers/infiniband/hw/qedr/verbs.c | 2 +-
drivers/infiniband/hw/qib/qib_verbs.c | 2 -
drivers/infiniband/hw/qib/qib_verbs.h | 1 -
drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 2 +-
drivers/infiniband/hw/usnic/usnic_uiom.h | 2 +-
drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | 2 +-
drivers/infiniband/sw/rdmavt/qp.c | 2 +-
drivers/infiniband/sw/rdmavt/vt.c | 6 -
drivers/infiniband/sw/rxe/rxe.c | 2 +
drivers/infiniband/sw/rxe/rxe_qp.c | 7 +-
drivers/infiniband/sw/rxe/rxe_queue.h | 2 +-
drivers/infiniband/sw/siw/siw_cm.c | 137 +-
drivers/infiniband/sw/siw/siw_qp_rx.c | 2 +-
drivers/infiniband/sw/siw/siw_verbs.c | 11 +-
drivers/infiniband/ulp/ipoib/ipoib.h | 2 -
drivers/infiniband/ulp/ipoib/ipoib_ethtool.c | 3 -
drivers/infiniband/ulp/ipoib/ipoib_main.c | 4 -
drivers/infiniband/ulp/iser/iser_memory.c | 21 +-
drivers/infiniband/ulp/opa_vnic/opa_vnic_encap.h | 6 +-
drivers/infiniband/ulp/opa_vnic/opa_vnic_ethtool.c | 2 -
.../infiniband/ulp/opa_vnic/opa_vnic_internal.h | 1 -
drivers/infiniband/ulp/opa_vnic/opa_vnic_vema.c | 5 -
drivers/infiniband/ulp/srp/ib_srp.h | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c | 1 +
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 53 +
drivers/net/ethernet/mellanox/mlx5/core/fs_core.h | 7 +-
include/linux/mlx5/device.h | 6 +
include/linux/mlx5/driver.h | 17 -
include/linux/mlx5/fs.h | 1 +
include/linux/mlx5/mlx5_ifc.h | 8 +-
include/rdma/ib_cache.h | 1 +
include/rdma/ib_cm.h | 1 -
include/rdma/ib_fmr_pool.h | 2 +-
include/rdma/ib_verbs.h | 49 +-
include/rdma/opa_vnic.h | 2 +-
include/rdma/rdmavt_mr.h | 2 +-
include/rdma/rdmavt_qp.h | 2 +-
include/rdma/uverbs_ioctl.h | 2 +-
include/uapi/rdma/mlx5-abi.h | 6 +
include/uapi/rdma/mlx5_user_ioctl_cmds.h | 35 +
include/uapi/rdma/mlx5_user_ioctl_verbs.h | 10 +
120 files changed, 5401 insertions(+), 4495 deletions(-)
(diffstat from tag for-linus-merged)

Attachment: signature.asc
Description: PGP signature