Hi Linus, There was a last minute userspace regression reported, so this is a little later than I usually send it. There are three merge conflicts this time, one is silent. 1) The struct member wad renamed in the DMABUF tree: +++ b/drivers/infiniband/core/umem_dmabuf.c +static struct dma_buf_attach_ops ib_umem_dmabuf_attach_pinned_revocable_ops = { + .allow_peer2peer = true, - .move_notify = ib_umem_dmabuf_revoke_locked, ++ .invalidate_mappings = ib_umem_dmabuf_revoke_locked, +}; 2) Overlapping removals: +++ b/drivers/infiniband/hw/mlx5/mr.c @@@ -46,15 -46,14 +46,13 @@@ #include "data_direct.h" #include "dmah.h" - #define MLX5_UMR_ALIGN 2048 - -enum { - MAX_PENDING_REG_MR = 8, -}; +static int mkey_max_umr_order(struct mlx5_ib_dev *dev) +{ + if (MLX5_CAP_GEN(dev->mdev, umr_extended_translation_offset)) + return MLX5_MAX_UMR_EXTENDED_SHIFT; + return MLX5_MAX_UMR_SHIFT; +} -#define MLX5_MR_CACHE_PERSISTENT_ENTRY_MIN_DESCS 4 - -static void -create_mkey_callback(int status, struct mlx5_async_work *context); 3) rxe_ns_pernet_sk6: +++ b/drivers/infiniband/sw/rxe/rxe_net.c @@@ -141,9 -138,9 +141,7 @@@ static struct dst_entry *rxe_find_route memcpy(&fl6.daddr, daddr, sizeof(*daddr)); fl6.flowi6_proto = IPPROTO_UDP; - ndst = ipv6_stub->ipv6_dst_lookup_flow(net, - rxe_ns_pernet_sk6(net), &fl6, - NULL); - ndst = ip6_dst_lookup_flow(sock_net(recv_sockets.sk6->sk), - recv_sockets.sk6->sk, &fl6, - NULL); ++ ndst = ip6_dst_lookup_flow(net, rxe_ns_pernet_sk6(net), &fl6, NULL); if (IS_ERR(ndst)) { rxe_dbg_qp(qp, "no route to %pI6\n", daddr); return NULL; The tag for-linus-merged with my merge resolution to your tree is also available to pull. Thanks, Jason The following changes since commit 7aaa8047eafd0bd628065b15757d9b48c5f9c07d: Linux 7.0-rc6 (2026-03-29 15:40:00 -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 9091e3b59f2bef11c0a841096327565ae0ca220b: RDMA/core: Fix user CQ creation for drivers without create_cq (2026-04-17 12:16:00 -0300) ---------------------------------------------------------------- RDMA v7.1 merge window Usual collection of driver changes, more core infrastructure updates that typical this cycle: - Minor cleanups and kernel-doc fixes in bnxt_re, hns, rdmavt, efa, ocrdma, erdma, rtrs, hfi1, ionic, and pvrdma - New udata validation framework and driver updates - Modernize CQ creation interface in mlx4 and mlx5, manage CQ umem in core - Promote UMEM to a core component, split out DMA block iterator logic - Introduce FRMR pools with aging, statistics, pinned handles, and netlink control and use it in mlx5 - Add PCIe TLP emulation support in mlx5 - Extend umem to work with revocable pinned dmabuf's and use it in irdma - More net namespace improvements for rxe - GEN4 hardware support in irdma - First steps to MW and UC support in mana_ib - Support for CQ umem and doorbells in bnxt_re - Drop opa_vnic driver from hfi1 - Fixes: IB/core zero dmac neighbor resolution race GID table memory free rxe pad/ICRC validation and r_key async errors mlx4 external umem for CQ umem DMA attributes on unmap mana_ib RX steering on RSS QP destroy ---------------------------------------------------------------- Chen Zhao (1): IB/core: Fix zero dmac race in neighbor resolution Cheng Xu (1): RDMA/erdma: Remove numa_node from struct erdma_devattr Chiara Meiohas (1): RDMA/mlx5: Move device async_ctx initialization Dean Luick (4): RDMA/OPA: Update OPA link speed list RDMA/rdmavt: Add ucontext alloc/dealloc passthrough RDMA/rdmavt: Correct multi-port QP iteration RDMA/rdmavt: Add driver mmap callback Dennis Dalessandro (1): RDMA/hfi1: Remove opa_vnic Evan Green (1): RDMA/rxe: Generate async error for r_key violations Florian Westphal (1): RDMA/core: Prefer NLA_NUL_STRING Jacob Moroni (6): RDMA/umem: Add ib_umem_dmabuf_get_pinned_and_lock helper RDMA/umem: Move umem dmabuf revoke logic into helper function RDMA/umem: Add pinned revocable dmabuf import interface RDMA/umem: Add helpers for umem dmabuf revoke lock RDMA/irdma: Add support for revocable pinned dmabuf import RDMA/irdma: Add support for GEN4 hardware Jason Gunthorpe (29): RDMA: Use copy_struct_from_user() instead of open coding RDMA/core: Add rdma_udata_to_dev() RDMA: Add ib_copy_validate_udata_in() RDMA: Add ib_copy_validate_udata_in_cm() RDMA: Add ib_respond_udata() RDMA: Add ib_is_udata_in_empty() RDMA: Provide documentation about the uABI compatibility rules RDMA/bnxt_re: Add compatibility checks to the uapi path RDMA/bnxt_re: Add compatibility checks to the uapi path for no data RDMA/bnxt_re: Add missing comp_mask validation RDMA/bnxt_re: Use ib_respond_udata() RDMA/bnxt_re: Use ib_respond_empty_udata() RDMA: Add IB_UVERBS_CORE_SUPPORT_ROBUST_UDATA RDMA: Consolidate patterns with offsetofend() to ib_copy_validate_udata_in() RDMA: Consolidate patterns with offsetof() to ib_copy_validate_udata_in() RDMA: Consolidate patterns with sizeof() to ib_copy_validate_udata_in() RDMA: Use ib_copy_validate_udata_in() for implicit full structs RDMA/pvrdma: Use ib_copy_validate_udata_in() for srq RDMA/mlx5: Use ib_copy_validate_udata_in() for SRQ RDMA/mlx5: Use ib_copy_validate_udata_in() for MW RDMA/mlx4: Use ib_copy_validate_udata_in() RDMA/mlx4: Use ib_copy_validate_udata_in() for QP RDMA/hns: Use ib_copy_validate_udata_in() RDMA: Use ib_copy_validate_udata_in_cm() for zero comp_mask RDMA/mlx5: Pull comp_mask validation into ib_copy_validate_udata_in_cm() RDMA/hns: Add missing comp_mask check in create_qp RDMA/irdma: Add missing comp_mask check in alloc_ucontext RDMA: Remove redundant = {} for udata req structs RDMA/hns: Remove the duplicate calls to ib_copy_validate_udata_in() Jay Bhat (1): RDMA/irdma: Provide scratch buffers to firmware for internal use Kai Zen (1): RDMA/ionic: bound node_desc sysfs read with %.64s Kalesh AP (3): RDMA/bnxt_re: Move the UAPI methods to a dedicated file RDMA/bnxt_re: Refactor bnxt_qplib_create_qp() function RDMA/bnxt_re: Support doorbell extensions Kexin Sun (2): RDMA/uverbs: Update outdated reference to remove_commit_idr_uobject() RDMA: Remove outdated comments referencing hfi1_destroy_qp() Konstantin Taranov (2): RDMA/mana_ib: cleanup the usage of mana_gd_send_request() RDMA/mana_ib: Support memory windows Leon Romanovsky (27): RDMA: Move DMA block iterator logic into dedicated files RDMA/umem: Allow including ib_umem header from any location RDMA/umem: Remove unnecessary includes and defines from ib_umem header RDMA/core: Promote UMEM to a core component RDMA/core: Manage CQ umem in core code RDMA/efa: Rely on CPU address in create‑QP RDMA/core: Prepare create CQ path for API unification RDMA/core: Reject zero CQE count RDMA/efa: Remove check for zero CQE count RDMA/mlx5: Save 4 bytes in CQ structure RDMA/mlx5: Provide a modern CQ creation interface RDMA/mlx4: Inline mlx4_ib_get_cq_umem into callers RDMA/mlx4: Introduce a modern CQ creation interface RDMA/mlx4: Remove unused create_flags field from CQ structure RDMA: Complete k[z|m|c]alloc-to-k[z|m]alloc_obj conversion RDMA/core: Delete not-implemented get_vector_affinity Add support for TLP emulation RDMA/core: Remove unused ib_resize_cq() implementation RDMA: Clarify that CQ resize is a user‑space verb RDMA: Properly propagate the number of CQEs as unsigned int RDMA/bnxt_re: Simplify bnxt_re_init_depth() callers and implementation RDMA/bnxt_re: Remove unnecessary checks in kernel CQ creation path RDMA/bnxt_re: Replace kcalloc() with kzalloc_objs() RDMA/bnxt_re: Clean up uverbs CQ creation path Merge branch 'master' into rdma-next RDMA/umem: Use consistent DMA attributes when unmapping entries RDMA/mlx4: Restrict external umem for CQ when copy_to_user() is used Long Li (1): RDMA/mana_ib: Disable RX steering on RSS QP destroy Maher Sanalla (3): RDMA/mlx5: Refactor VAR table to use region abstraction RDMA/mlx5: Add TLP VAR region support and infrastructure RDMA/mlx5: Add support for TLP VAR allocation Marco Crivellari (2): RDMA/rtrs: add WQ_PERCPU to alloc_workqueue users RDMA/rxe: Replace use of system_unbound_wq with rxe_wq Michael Guralnik (10): IB/core: Introduce FRMR pools RDMA/core: Add aging to FRMR pools RDMA/core: Add FRMR pools statistics RDMA/core: Add pinned handles to FRMR pools RDMA/mlx5: Switch from MR cache to FRMR pools net/mlx5: Drop MR cache related code RDMA/nldev: Add command to get FRMR pools RDMA/core: Add netlink command to modify FRMR aging RDMA/nldev: Add command to set pinned FRMR handles RDMA/nldev: Expose kernel-internal FRMR pools in netlink Michael Margolin (2): RDMA/efa: Rename alloc_ucontext comp_mask to supported_caps RDMA/core: Fix user CQ creation for drivers without create_cq Randy Dunlap (4): IB/cache: avoid kernel-doc warnings RDMA/umem: fix kernel-doc warnings RDMA/iwcm: fix some kernel-doc issues in iw_cm.h RDMA/restrack: fix kernel-doc indicator Rosen Penev (3): RDMA/ocrdma: kzalloc_objs to kzalloc_flex IB/hfi1: kzalloc to kzalloc_flex RDMA/core: Use kzalloc_flex for GID table Sriharsha Basavapatna (3): RDMA/bnxt_re: Refactor bnxt_re_create_cq() RDMA/bnxt_re: Separate kernel and user CQ creation paths RDMA/bnxt_re: Support application specific CQs Yonatan Nachum (3): RDMA/efa: Rename admin queue attributes struct name for extendability RDMA/efa: Expose new extended max inline buff size RDMA/efa: Use extended inline buff size for inline validation Zhu Yanjun (4): RDMA/nldev: Add dellink function pointer RDMA/rxe: Add net namespace support for IPv4/IPv6 sockets RDMA/rxe: Support RDMA link creation and destruction per net namespace RDMA/rxe: Add testcase for net namespace rxe hkbinbin (1): RDMA/rxe: Validate pad and ICRC before payload_size() in rxe_rcv zhenwei pi (1): RDMA/core: Fix memory free for GID table Documentation/driver-api/infiniband.rst | 15 - Documentation/infiniband/index.rst | 1 - Documentation/infiniband/opa_vnic.rst | 159 --- .../translations/zh_CN/infiniband/index.rst | 1 - .../translations/zh_CN/infiniband/opa_vnic.rst | 156 --- MAINTAINERS | 8 +- drivers/infiniband/Kconfig | 2 - drivers/infiniband/core/Makefile | 6 +- drivers/infiniband/core/addr.c | 3 + drivers/infiniband/core/cache.c | 15 +- drivers/infiniband/core/cq.c | 3 + drivers/infiniband/core/device.c | 6 +- drivers/infiniband/core/frmr_pools.c | 547 +++++++++ drivers/infiniband/core/frmr_pools.h | 63 ++ drivers/infiniband/core/ib_core_uverbs.c | 27 + drivers/infiniband/core/iter.c | 43 + drivers/infiniband/core/iwpm_msg.c | 6 +- drivers/infiniband/core/nldev.c | 298 +++++ drivers/infiniband/core/rdma_core.c | 4 +- drivers/infiniband/core/rdma_core.h | 3 + drivers/infiniband/core/umem.c | 15 +- drivers/infiniband/core/umem_dmabuf.c | 138 ++- drivers/infiniband/core/uverbs_cmd.c | 40 +- drivers/infiniband/core/uverbs_ioctl.c | 87 ++ drivers/infiniband/core/uverbs_std_types_cq.c | 41 +- drivers/infiniband/core/uverbs_std_types_device.c | 8 + drivers/infiniband/core/verbs.c | 59 +- drivers/infiniband/hw/bnxt_re/Makefile | 2 +- drivers/infiniband/hw/bnxt_re/ib_verbs.c | 894 ++++++++------- drivers/infiniband/hw/bnxt_re/ib_verbs.h | 25 +- drivers/infiniband/hw/bnxt_re/main.c | 4 +- drivers/infiniband/hw/bnxt_re/qplib_fp.c | 305 ++---- drivers/infiniband/hw/bnxt_re/qplib_fp.h | 8 + drivers/infiniband/hw/bnxt_re/qplib_res.c | 47 +- drivers/infiniband/hw/bnxt_re/qplib_res.h | 10 + drivers/infiniband/hw/bnxt_re/uapi.c | 469 ++++++++ drivers/infiniband/hw/cxgb4/mem.c | 2 +- drivers/infiniband/hw/efa/efa.h | 6 +- drivers/infiniband/hw/efa/efa_admin_cmds_defs.h | 23 +- drivers/infiniband/hw/efa/efa_com_cmd.c | 55 +- drivers/infiniband/hw/efa/efa_com_cmd.h | 3 +- drivers/infiniband/hw/efa/efa_main.c | 3 +- drivers/infiniband/hw/efa/efa_verbs.c | 123 +-- drivers/infiniband/hw/erdma/erdma.h | 1 - drivers/infiniband/hw/erdma/erdma_eq.c | 3 +- drivers/infiniband/hw/erdma/erdma_main.c | 1 - drivers/infiniband/hw/erdma/erdma_verbs.c | 8 +- drivers/infiniband/hw/hfi1/Makefile | 4 +- drivers/infiniband/hw/hfi1/aspm.c | 2 +- drivers/infiniband/hw/hfi1/chip.c | 54 +- drivers/infiniband/hw/hfi1/chip.h | 2 - drivers/infiniband/hw/hfi1/driver.c | 13 +- drivers/infiniband/hw/hfi1/hfi.h | 20 - drivers/infiniband/hw/hfi1/init.c | 4 +- drivers/infiniband/hw/hfi1/mad.c | 1 - drivers/infiniband/hw/hfi1/msix.c | 4 +- drivers/infiniband/hw/hfi1/netdev.h | 8 +- drivers/infiniband/hw/hfi1/netdev_rx.c | 3 +- drivers/infiniband/hw/hfi1/qp.c | 1 - drivers/infiniband/hw/hfi1/user_exp_rcv.c | 14 +- drivers/infiniband/hw/hfi1/user_exp_rcv.h | 2 +- drivers/infiniband/hw/hfi1/verbs.c | 2 - drivers/infiniband/hw/hfi1/vnic.h | 126 --- drivers/infiniband/hw/hfi1/vnic_main.c | 615 ----------- drivers/infiniband/hw/hfi1/vnic_sdma.c | 282 ----- drivers/infiniband/hw/hns/hns_roce_alloc.c | 2 +- drivers/infiniband/hw/hns/hns_roce_cq.c | 16 +- drivers/infiniband/hw/hns/hns_roce_hem.c | 7 +- drivers/infiniband/hw/hns/hns_roce_main.c | 6 +- drivers/infiniband/hw/hns/hns_roce_qp.c | 23 +- drivers/infiniband/hw/hns/hns_roce_srq.c | 54 +- drivers/infiniband/hw/ionic/ionic_controlpath.c | 6 +- drivers/infiniband/hw/ionic/ionic_ibdev.c | 2 +- drivers/infiniband/hw/ionic/ionic_ibdev.h | 2 +- drivers/infiniband/hw/irdma/ctrl.c | 44 +- drivers/infiniband/hw/irdma/defs.h | 4 + drivers/infiniband/hw/irdma/hw.c | 29 +- drivers/infiniband/hw/irdma/ig3rdma_hw.c | 1 - drivers/infiniband/hw/irdma/irdma.h | 1 + drivers/infiniband/hw/irdma/main.h | 2 +- drivers/infiniband/hw/irdma/type.h | 2 + drivers/infiniband/hw/irdma/user.h | 4 +- drivers/infiniband/hw/irdma/verbs.c | 121 +- drivers/infiniband/hw/mana/cq.c | 11 +- drivers/infiniband/hw/mana/device.c | 3 + drivers/infiniband/hw/mana/main.c | 141 +-- drivers/infiniband/hw/mana/mana_ib.h | 10 +- drivers/infiniband/hw/mana/mr.c | 92 +- drivers/infiniband/hw/mana/qp.c | 69 +- drivers/infiniband/hw/mana/wq.c | 12 +- drivers/infiniband/hw/mlx4/cq.c | 258 +++-- drivers/infiniband/hw/mlx4/main.c | 14 +- drivers/infiniband/hw/mlx4/mlx4_ib.h | 8 +- drivers/infiniband/hw/mlx4/mr.c | 1 + drivers/infiniband/hw/mlx4/qp.c | 82 +- drivers/infiniband/hw/mlx4/srq.c | 5 +- drivers/infiniband/hw/mlx5/cq.c | 183 ++-- drivers/infiniband/hw/mlx5/devx.c | 6 +- drivers/infiniband/hw/mlx5/dm.c | 2 +- drivers/infiniband/hw/mlx5/fs.c | 6 +- drivers/infiniband/hw/mlx5/main.c | 172 ++- drivers/infiniband/hw/mlx5/mem.c | 1 + drivers/infiniband/hw/mlx5/mlx5_ib.h | 102 +- drivers/infiniband/hw/mlx5/mr.c | 1158 ++++---------------- drivers/infiniband/hw/mlx5/odp.c | 19 - drivers/infiniband/hw/mlx5/qos.c | 2 +- drivers/infiniband/hw/mlx5/qp.c | 68 +- drivers/infiniband/hw/mlx5/srq.c | 17 +- drivers/infiniband/hw/mlx5/umr.c | 1 + drivers/infiniband/hw/mlx5/umr.h | 1 + drivers/infiniband/hw/mthca/mthca_provider.c | 36 +- drivers/infiniband/hw/ocrdma/ocrdma.h | 2 +- drivers/infiniband/hw/ocrdma/ocrdma_main.c | 2 +- drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 56 +- drivers/infiniband/hw/ocrdma/ocrdma_verbs.h | 2 +- drivers/infiniband/hw/qedr/verbs.c | 44 +- drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 2 +- drivers/infiniband/hw/vmw_pvrdma/pvrdma.h | 2 +- drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c | 5 +- drivers/infiniband/hw/vmw_pvrdma/pvrdma_misc.c | 3 +- drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | 6 +- drivers/infiniband/hw/vmw_pvrdma/pvrdma_srq.c | 6 +- drivers/infiniband/sw/rdmavt/cq.c | 4 +- drivers/infiniband/sw/rdmavt/cq.h | 2 +- drivers/infiniband/sw/rdmavt/mcast.c | 1 - drivers/infiniband/sw/rdmavt/mmap.c | 22 +- drivers/infiniband/sw/rdmavt/qp.c | 2 +- drivers/infiniband/sw/rdmavt/vt.c | 10 +- drivers/infiniband/sw/rxe/Makefile | 3 +- drivers/infiniband/sw/rxe/rxe.c | 38 +- drivers/infiniband/sw/rxe/rxe.h | 2 + drivers/infiniband/sw/rxe/rxe_cq.c | 31 - drivers/infiniband/sw/rxe/rxe_loc.h | 3 - drivers/infiniband/sw/rxe/rxe_net.c | 144 ++- drivers/infiniband/sw/rxe/rxe_net.h | 9 +- drivers/infiniband/sw/rxe/rxe_ns.c | 124 +++ drivers/infiniband/sw/rxe/rxe_ns.h | 26 + drivers/infiniband/sw/rxe/rxe_odp.c | 2 +- drivers/infiniband/sw/rxe/rxe_recv.c | 3 +- drivers/infiniband/sw/rxe/rxe_resp.c | 56 +- drivers/infiniband/sw/rxe/rxe_task.c | 2 +- drivers/infiniband/sw/rxe/rxe_verbs.c | 33 +- drivers/infiniband/sw/rxe/rxe_verbs.h | 1 + drivers/infiniband/sw/siw/siw_verbs.c | 6 +- drivers/infiniband/ulp/Makefile | 1 - drivers/infiniband/ulp/opa_vnic/Kconfig | 9 - drivers/infiniband/ulp/opa_vnic/Makefile | 9 - drivers/infiniband/ulp/opa_vnic/opa_vnic_encap.c | 513 --------- drivers/infiniband/ulp/opa_vnic/opa_vnic_encap.h | 524 --------- drivers/infiniband/ulp/opa_vnic/opa_vnic_ethtool.c | 183 ---- .../infiniband/ulp/opa_vnic/opa_vnic_internal.h | 329 ------ drivers/infiniband/ulp/opa_vnic/opa_vnic_netdev.c | 400 ------- drivers/infiniband/ulp/opa_vnic/opa_vnic_vema.c | 1056 ------------------ .../infiniband/ulp/opa_vnic/opa_vnic_vema_iface.c | 390 ------- drivers/infiniband/ulp/rtrs/rtrs-clt.c | 2 +- drivers/infiniband/ulp/rtrs/rtrs-srv.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/main.c | 67 +- drivers/net/ethernet/microsoft/mana/mana_en.c | 11 +- include/linux/mlx5/driver.h | 11 - include/net/mana/gdma.h | 5 + include/net/mana/mana.h | 1 + include/rdma/frmr_pools.h | 39 + include/rdma/ib_cache.h | 4 +- include/rdma/ib_umem.h | 66 +- include/rdma/ib_verbs.h | 194 ++-- include/rdma/iter.h | 88 ++ include/rdma/iw_cm.h | 14 +- include/rdma/opa_port_info.h | 8 +- include/rdma/opa_vnic.h | 96 -- include/rdma/rdma_netlink.h | 2 + include/rdma/rdma_vt.h | 10 + include/rdma/restrack.h | 4 +- include/rdma/uverbs_ioctl.h | 101 ++ include/uapi/rdma/bnxt_re-abi.h | 36 +- include/uapi/rdma/efa-abi.h | 11 +- include/uapi/rdma/ib_user_ioctl_verbs.h | 1 + include/uapi/rdma/mlx5_user_ioctl_cmds.h | 1 + include/uapi/rdma/mlx5_user_ioctl_verbs.h | 4 + include/uapi/rdma/rdma_netlink.h | 22 + tools/testing/selftests/Makefile | 1 + tools/testing/selftests/rdma/Makefile | 7 + tools/testing/selftests/rdma/config | 3 + tools/testing/selftests/rdma/rxe_ipv6.sh | 63 ++ .../selftests/rdma/rxe_rping_between_netns.sh | 85 ++ .../selftests/rdma/rxe_socket_with_netns.sh | 76 ++ .../selftests/rdma/rxe_test_NETDEV_UNREGISTER.sh | 63 ++ 186 files changed, 4726 insertions(+), 8149 deletions(-) (diffstat from tag for-linus-merged)