[GIT PULL] Please pull RDMA subsystem changes

From: Jason Gunthorpe
Date: Fri Mar 28 2025 - 10:23:35 EST


Hi Linus,

There is a bigger merge conflict in rxe against the rc branch. I've
provided the for-linus-merged tag with a merge to v6.14 containing
the resolution from linux-next.

Here is the diff:

diff --cc drivers/infiniband/hw/mlx5/mr.c
index 2080458cabd1ca,753faa9ad06a88..b7c8c926c57870
--- a/drivers/infiniband/hw/mlx5/mr.c
+++ b/drivers/infiniband/hw/mlx5/mr.c
@@@ -2031,7 -2023,8 +2032,9 @@@ static int mlx5_revoke_mr(struct mlx5_i
struct mlx5_ib_dev *dev = to_mdev(mr->ibmr.device);
struct mlx5_cache_ent *ent = mr->mmkey.cache_ent;
bool is_odp = is_odp_mr(mr);
+ bool is_odp_dma_buf = is_dmabuf_mr(mr) &&
+ !to_ib_umem_dmabuf(mr->umem)->pinned;
+ bool from_cache = !!ent;
int ret = 0;

if (is_odp)
diff --cc drivers/infiniband/sw/rxe/rxe.c
index 4e56a371deb5ff,e27478fe9456c9..c83e2cf8274814
--- a/drivers/infiniband/sw/rxe/rxe.c
+++ b/drivers/infiniband/sw/rxe/rxe.c
@@@ -71,45 -72,10 +69,39 @@@ static void rxe_init_device_param(struc
rxe->attr.max_pkeys = RXE_MAX_PKEYS;
rxe->attr.local_ca_ack_delay = RXE_LOCAL_CA_ACK_DELAY;

- ndev = rxe_ib_device_get_netdev(&rxe->ib_dev);
- if (!ndev)
- return;
-
+ if (ndev->addr_len) {
+ memcpy(rxe->raw_gid, ndev->dev_addr,
+ min_t(unsigned int, ndev->addr_len, ETH_ALEN));
+ } else {
+ /*
+ * This device does not have a HW address, but
+ * connection mangagement requires a unique gid.
+ */
+ eth_random_addr(rxe->raw_gid);
+ }
+
addrconf_addr_eui48((unsigned char *)&rxe->attr.sys_image_guid,
- ndev->dev_addr);
+ rxe->raw_gid);

- dev_put(ndev);
-
rxe->max_ucontext = RXE_MAX_UCONTEXT;
+
+ if (IS_ENABLED(CONFIG_INFINIBAND_ON_DEMAND_PAGING)) {
+ rxe->attr.kernel_cap_flags |= IBK_ON_DEMAND_PAGING;
+
+ /* IB_ODP_SUPPORT_IMPLICIT is not supported right now. */
+ rxe->attr.odp_caps.general_caps |= IB_ODP_SUPPORT;
+
+ rxe->attr.odp_caps.per_transport_caps.ud_odp_caps |= IB_ODP_SUPPORT_SEND;
+ rxe->attr.odp_caps.per_transport_caps.ud_odp_caps |= IB_ODP_SUPPORT_RECV;
+ rxe->attr.odp_caps.per_transport_caps.ud_odp_caps |= IB_ODP_SUPPORT_SRQ_RECV;
+
+ rxe->attr.odp_caps.per_transport_caps.rc_odp_caps |= IB_ODP_SUPPORT_SEND;
+ rxe->attr.odp_caps.per_transport_caps.rc_odp_caps |= IB_ODP_SUPPORT_RECV;
+ rxe->attr.odp_caps.per_transport_caps.rc_odp_caps |= IB_ODP_SUPPORT_WRITE;
+ rxe->attr.odp_caps.per_transport_caps.rc_odp_caps |= IB_ODP_SUPPORT_READ;
+ rxe->attr.odp_caps.per_transport_caps.rc_odp_caps |= IB_ODP_SUPPORT_ATOMIC;
+ rxe->attr.odp_caps.per_transport_caps.rc_odp_caps |= IB_ODP_SUPPORT_SRQ_RECV;
+ }
}

/* initialize port attributes */
@@@ -141,18 -107,13 +133,13 @@@ static void rxe_init_port_param(struct
/* initialize port state, note IB convention that HCA ports are always
* numbered from 1
*/
-static void rxe_init_ports(struct rxe_dev *rxe, struct net_device *ndev)
+static void rxe_init_ports(struct rxe_dev *rxe)
{
struct rxe_port *port = &rxe->port;
- struct net_device *ndev;

rxe_init_port_param(port);
- ndev = rxe_ib_device_get_netdev(&rxe->ib_dev);
- if (!ndev)
- return;
addrconf_addr_eui48((unsigned char *)&port->port_guid,
- ndev->dev_addr);
+ rxe->raw_gid);
- dev_put(ndev);
spin_lock_init(&port->port_lock);
}

@@@ -170,12 -131,12 +157,12 @@@ static void rxe_init_pools(struct rxe_d
}

/* initialize rxe device state */
- static void rxe_init(struct rxe_dev *rxe)
+ static void rxe_init(struct rxe_dev *rxe, struct net_device *ndev)
{
/* init default device parameters */
- rxe_init_device_param(rxe);
+ rxe_init_device_param(rxe, ndev);

- rxe_init_ports(rxe, ndev);
+ rxe_init_ports(rxe);
rxe_init_pools(rxe);

/* init pending mmap list */

Thanks,
Jason

The tag for-linus-merged with my merge resolution to your tree is also available to pull.

The following changes since commit 15b103df80b25025040faa8f35164c2595977bdb:

net/mlx5: fs, add RDMA TRANSPORT steering domain support (2025-03-08 13:22:49 -0500)

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 37826f0a8c2f6b6add5179003b8597e32a445362:

IB/mad: Check available slots before posting receive WRs (2025-03-19 04:43:03 -0400)

----------------------------------------------------------------
RDMA v6.15 merge window pull request

- Usual minor updates and fixes for bnxt_re, hfi1, rxe, mana, iser, mlx5,
vmw_pvrdma, hns

- Make rxe work on tun devices

- mana gains more standard verbs as it moves toward supporting in-kernel
verbs

- DMABUF support for mana

- Fix page size calculations when memory registration exceeds 4G

- On Demand Paging support for rxe

- mlx5 support for RDMA TRANSPORT flow tables and a new ucap mechanism to
access control use of them

- Optional RDMA_TX/RX counters per QP in mlx5

----------------------------------------------------------------
Cheng Xu (1):
RDMA/erdma: Prevent use-after-free in erdma_accept_newconn()

Chiara Meiohas (6):
RDMA/uverbs: Introduce UCAP (User CAPabilities) API
RDMA/mlx5: Create UCAP char devices for supported device capabilities
RDMA/uverbs: Add support for UCAPs in context creation
RDMA/mlx5: Check enabled UCAPs when creating ucontext
docs: infiniband: document the UCAP API
RDMA/mlx5: Fix calculation of total invalidated pages

Christian Göttsche (1):
RDMA/mlx5: Reorder capability check last

Daisuke Matsuda (7):
RDMA/rxe: Move some code to rxe_loc.h in preparation for ODP
RDMA/rxe: Add page invalidation support
RDMA/rxe: Allow registering MRs for On-Demand Paging
RDMA/rxe: Add support for Send/Recv/Write/Read with ODP
RDMA/rxe: Add support for the traditional Atomic operations with ODP
RDMA/rxe: Improve readability of ODP pagefault interface
RDMA/rxe: Fix incorrect return value of rxe_odp_atomic_op()

Dan Carpenter (3):
RDMA/mana_ib: Fix error code in probe()
RDMA/bnxt_re: Fix buffer overflow in debugfs code
RDMA/mana_ib: Use safer allocation function()

Dr. David Alan Gilbert (2):
RDMA/hfi1: Remove unused one_qsfp_write
RDMA/vmw_pvrdma: Remove unused pvrdma_modify_device

Eric Biggers (3):
RDMA/rxe: switch to using the crc32 library
RDMA/irdma: Switch to using the crc32c library
RDMA/siw: Switch to using the crc32c library

Guofeng Yue (1):
RDMA/hns: Inappropriate format characters cleanup

Imanol (1):
IB/iser: fix typos in iscsi_iser.c comments

Kees Bakker (1):
RDMA/mana_ib: Ensure variable err is initialized

Konstantin Taranov (16):
RDMA/mana_ib: Allow registration of DMA-mapped memory in PDs
RDMA/mana_ib: implement get_dma_mr
RDMA/mana_ib: helpers to allocate kernel queues
RDMA/mana_ib: create kernel-level CQs
RDMA/mana_ib: Create and destroy UD/GSI QP
RDMA/mana_ib: UD/GSI QP creation for kernel
RDMA/mana_ib: create/destroy AH
net/mana: fix warning in the writer of client oob
RDMA/mana_ib: UD/GSI work requests
RDMA/mana_ib: implement req_notify_cq
RDMA/mana_ib: extend mana QP table
RDMA/mana_ib: polling of CQs for GSI/UD
RDMA/mana_ib: indicate CM support
RDMA/mana_ib: request error CQEs when supported
RDMA/mana_ib: Implement DMABUF MR support
RDMA/mana_ib: Fix integer overflow during queue creation

Leon Romanovsky (2):
Merge branch 'mlx5-next' into wip/leon-for-next
Add support and infrastructure for RDMA TRANSPORT

Long Li (2):
net: mana: Change the function signature of mana_get_primary_netdev_rcu
RDMA/mana_ib: Handle net event for pointing to the current netdev

Maher Sanalla (5):
IB/cache: Add log messages for IB device state changes
RDMA/core: Use ib_port_state_to_str() for IB state sysfs
IB/hfi1: Remove state transition log message and opa_lstate_name()
RDMA/uverbs: Propagate errors from rdma_lookup_get_uobject()
IB/mad: Check available slots before posting receive WRs

Michael Guralnik (4):
RDMA/mlx5: Fix MR cache initialization error flow
RDMA/mlx5: Fix cache entry update on dereg error
RDMA/mlx5: Drop access_flags from _mlx5_mr_cache_alloc()
RDMA/mlx5: Fix page_size variable overflow

Michael Margolin (1):
RDMA/core: Fix best page size finding when it can cross SG entries

Nicolas Bouchinet (1):
RDMA/core: Fixes infiniband sysctl bounds

Patrisious Haddad (8):
RDMA/mlx5: Expose RDMA TRANSPORT flow table types to userspace
RDMA/mlx5: Add optional counters for RDMA_TX/RX_packets/bytes
RDMA/core: Create and destroy rdma_counter using rdma_zalloc_drv_obj()
RDMA/core: Add support to optional-counters binding configuration
RDMA/core: Pass port to counter bind/unbind operations
RDMA/mlx5: Compile fs.c regardless of INFINIBAND_USER_ACCESS config
RDMA/mlx5: Support optional-counters binding for QPs
RDMA/mlx5: Fix mlx5_poll_one() cur_qp update flow

Preethi G (1):
RDMA/bnxt_re: Support perf management counters

Roman Gushchin (1):
RDMA/core: Don't expose hw_counters outside of init net namespace

Selvin Xavier (2):
RDMA/bnxt_re: Congestion control settings using debugfs hook
RDMA/bnxt_re: Fix the condition check while programming congestion control

Shiraz Saleem (2):
RDMA/mana_ib: Query feature_flags bitmask from FW
RDMA/mana_ib: Add port statistics support

Wang Liang (1):
RDMA/core: Fix use-after-free when rename device name

Zhu Yanjun (3):
RDMA/rxe: Replace netdev dev addr with raw_gid
RDMA/rxe: Add query_gid support
RDMA/rxe: Make rping work with tun device

Documentation/infiniband/index.rst | 1 +
Documentation/infiniband/ucaps.rst | 71 +++
drivers/infiniband/core/Makefile | 3 +-
drivers/infiniband/core/cache.c | 6 +
drivers/infiniband/core/cma.c | 24 +-
drivers/infiniband/core/counters.c | 52 +-
drivers/infiniband/core/device.c | 20 +-
drivers/infiniband/core/iwcm.c | 4 +-
drivers/infiniband/core/mad.c | 38 +-
drivers/infiniband/core/nldev.c | 18 +-
drivers/infiniband/core/sysfs.c | 15 +-
drivers/infiniband/core/ucaps.c | 267 +++++++++
drivers/infiniband/core/ucma.c | 4 +-
drivers/infiniband/core/umem.c | 36 +-
drivers/infiniband/core/uverbs_cmd.c | 163 +++---
drivers/infiniband/core/uverbs_main.c | 2 +
drivers/infiniband/core/uverbs_std_types_device.c | 4 +
drivers/infiniband/core/verbs.c | 13 +-
drivers/infiniband/hw/bnxt_re/bnxt_re.h | 6 +
drivers/infiniband/hw/bnxt_re/debugfs.c | 215 ++++++-
drivers/infiniband/hw/bnxt_re/debugfs.h | 15 +
drivers/infiniband/hw/bnxt_re/hw_counters.c | 92 +++
drivers/infiniband/hw/bnxt_re/ib_verbs.c | 36 ++
drivers/infiniband/hw/bnxt_re/ib_verbs.h | 6 +
drivers/infiniband/hw/bnxt_re/main.c | 1 +
drivers/infiniband/hw/erdma/erdma_cm.c | 1 -
drivers/infiniband/hw/hfi1/chip.c | 18 -
drivers/infiniband/hw/hfi1/chip.h | 1 -
drivers/infiniband/hw/hfi1/driver.c | 2 +-
drivers/infiniband/hw/hfi1/mad.c | 4 +-
drivers/infiniband/hw/hfi1/qsfp.c | 20 -
drivers/infiniband/hw/hfi1/qsfp.h | 2 -
drivers/infiniband/hw/hns/hns_roce_mr.c | 2 +-
drivers/infiniband/hw/hns/hns_roce_qp.c | 2 +-
drivers/infiniband/hw/hns/hns_roce_srq.c | 2 +-
drivers/infiniband/hw/irdma/Kconfig | 1 +
drivers/infiniband/hw/irdma/main.h | 1 -
drivers/infiniband/hw/irdma/osdep.h | 6 +-
drivers/infiniband/hw/irdma/puda.c | 19 +-
drivers/infiniband/hw/irdma/puda.h | 5 +-
drivers/infiniband/hw/irdma/utils.c | 47 +-
drivers/infiniband/hw/mana/Makefile | 2 +-
drivers/infiniband/hw/mana/ah.c | 58 ++
drivers/infiniband/hw/mana/counters.c | 105 ++++
drivers/infiniband/hw/mana/counters.h | 44 ++
drivers/infiniband/hw/mana/cq.c | 228 +++++++-
drivers/infiniband/hw/mana/device.c | 82 ++-
drivers/infiniband/hw/mana/main.c | 103 +++-
drivers/infiniband/hw/mana/mana_ib.h | 210 ++++++-
drivers/infiniband/hw/mana/mr.c | 105 ++++
drivers/infiniband/hw/mana/qp.c | 245 +++++++-
drivers/infiniband/hw/mana/shadow_queue.h | 115 ++++
drivers/infiniband/hw/mana/wr.c | 168 ++++++
drivers/infiniband/hw/mlx5/Makefile | 2 +-
drivers/infiniband/hw/mlx5/counters.c | 195 ++++++-
drivers/infiniband/hw/mlx5/counters.h | 15 +
drivers/infiniband/hw/mlx5/cq.c | 2 +-
drivers/infiniband/hw/mlx5/devx.c | 41 +-
drivers/infiniband/hw/mlx5/devx.h | 5 +-
drivers/infiniband/hw/mlx5/fs.c | 637 ++++++++++++++++++++-
drivers/infiniband/hw/mlx5/fs.h | 17 +-
drivers/infiniband/hw/mlx5/main.c | 77 ++-
drivers/infiniband/hw/mlx5/mlx5_ib.h | 23 +
drivers/infiniband/hw/mlx5/mr.c | 52 +-
drivers/infiniband/hw/mlx5/odp.c | 10 +-
drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c | 28 -
drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 2 -
drivers/infiniband/sw/rxe/Kconfig | 3 +-
drivers/infiniband/sw/rxe/Makefile | 2 +
drivers/infiniband/sw/rxe/rxe.c | 40 +-
drivers/infiniband/sw/rxe/rxe.h | 38 --
drivers/infiniband/sw/rxe/rxe_icrc.c | 40 +-
drivers/infiniband/sw/rxe/rxe_loc.h | 35 +-
drivers/infiniband/sw/rxe/rxe_mr.c | 13 +-
drivers/infiniband/sw/rxe/rxe_odp.c | 326 +++++++++++
drivers/infiniband/sw/rxe/rxe_req.c | 1 -
drivers/infiniband/sw/rxe/rxe_resp.c | 18 +-
drivers/infiniband/sw/rxe/rxe_verbs.c | 24 +-
drivers/infiniband/sw/rxe/rxe_verbs.h | 42 +-
drivers/infiniband/sw/siw/Kconfig | 4 +-
drivers/infiniband/sw/siw/siw.h | 37 +-
drivers/infiniband/sw/siw/siw_main.c | 22 +-
drivers/infiniband/sw/siw/siw_qp.c | 54 +-
drivers/infiniband/sw/siw/siw_qp_rx.c | 23 +-
drivers/infiniband/sw/siw/siw_qp_tx.c | 44 +-
drivers/infiniband/sw/siw/siw_verbs.c | 3 -
drivers/infiniband/ulp/iser/iscsi_iser.c | 8 +-
drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 120 +++-
.../ethernet/mellanox/mlx5/core/esw/acl/helper.c | 2 +-
.../net/ethernet/mellanox/mlx5/core/esw/legacy.c | 2 +-
.../ethernet/mellanox/mlx5/core/eswitch_offloads.c | 6 +-
drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c | 2 +
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 178 +++++-
drivers/net/ethernet/mellanox/mlx5/core/fs_core.h | 12 +-
.../net/ethernet/mellanox/mlx5/core/fs_ft_pool.c | 6 +-
.../net/ethernet/mellanox/mlx5/core/fs_ft_pool.h | 2 -
drivers/net/ethernet/mellanox/mlx5/core/fw.c | 7 +
.../ethernet/mellanox/mlx5/core/lib/fs_chains.c | 3 +-
drivers/net/ethernet/mellanox/mlx5/core/main.c | 1 +
drivers/net/ethernet/microsoft/mana/gdma_main.c | 7 +-
drivers/net/ethernet/microsoft/mana/mana_en.c | 22 +-
include/linux/mlx5/device.h | 16 +-
include/linux/mlx5/driver.h | 6 +
include/linux/mlx5/fs.h | 12 +-
include/linux/mlx5/mlx5_ifc.h | 53 +-
include/net/mana/gdma.h | 7 +
include/net/mana/mana.h | 4 +-
include/rdma/ib_ucaps.h | 30 +
include/rdma/ib_verbs.h | 30 +-
include/rdma/rdma_counter.h | 7 +-
include/rdma/uverbs_std_types.h | 2 +-
include/uapi/rdma/ib_user_ioctl_cmds.h | 1 +
include/uapi/rdma/mlx5_user_ioctl_cmds.h | 1 +
include/uapi/rdma/mlx5_user_ioctl_verbs.h | 2 +
include/uapi/rdma/rdma_netlink.h | 2 +
115 files changed, 4433 insertions(+), 703 deletions(-)
(diffstat from tag for-linus-merged)

Attachment: signature.asc
Description: PGP signature