Hi Linus, As seems to be typical, this is a smaller PR probably due to the holidays, but also normalish for RDMA right now. The new ROCEv2 support for ERDMA stands out as the largest functional change. There are some non-trivial merge conflicts with the RDMA -rc branch, it took a couple of rounds with Stephen to get things sorted, but this is what has been in linux-next for a while now. https://lore.kernel.org/r/20250106105106.3d94b0c3@xxxxxxxxxxxxxxxx https://lore.kernel.org/r/20250106120252.000a2afa@xxxxxxxxxxxxxxxx https://lore.kernel.org/r/20250106111307.7d0f55ba@xxxxxxxxxxxxxxxx I've also prepared the tag for-linus-merged with the agreed linux-next merge resolution using v6.13 that you may prefer to pull instead of this unmerged tag. Otherwise, here is git show of my merge commit, which matches linux-next, for reference: diff --cc drivers/infiniband/sw/rxe/rxe_net.c index d400aaab0e7000,8cc64ceeb3569b..132a87e52d5c7e --- a/drivers/infiniband/sw/rxe/rxe_net.c +++ b/drivers/infiniband/sw/rxe/rxe_net.c @@@ -577,7 -595,13 +585,13 @@@ void rxe_port_down(struct rxe_dev *rxe void rxe_set_port_state(struct rxe_dev *rxe) { - if (ib_get_curr_port_state(rxe->ndev) == IB_PORT_ACTIVE) + struct net_device *ndev; + + ndev = rxe_ib_device_get_netdev(&rxe->ib_dev); + if (!ndev) + return; + - if (netif_running(ndev) && netif_carrier_ok(ndev)) ++ if (ib_get_curr_port_state(ndev) == IB_PORT_ACTIVE) rxe_port_up(rxe); else rxe_port_down(rxe); diff --cc drivers/infiniband/sw/rxe/rxe_verbs.c index dad3cacb904880,8a5fc20fd18692..6152a0fdfc8caa --- a/drivers/infiniband/sw/rxe/rxe_verbs.c +++ b/drivers/infiniband/sw/rxe/rxe_verbs.c @@@ -55,10 -62,9 +62,10 @@@ static int rxe_query_port(struct ib_dev ret = ib_get_eth_speed(ibdev, port_num, &attr->active_speed, &attr->active_width); - attr->state = ib_get_curr_port_state(rxe->ndev); ++ attr->state = ib_get_curr_port_state(ndev); if (attr->state == IB_PORT_ACTIVE) attr->phys_state = IB_PORT_PHYS_STATE_LINK_UP; - else if (dev_get_flags(rxe->ndev) & IFF_UP) + else if (dev_get_flags(ndev) & IFF_UP) attr->phys_state = IB_PORT_PHYS_STATE_POLLING; else attr->phys_state = IB_PORT_PHYS_STATE_DISABLED; diff --cc drivers/infiniband/sw/siw/siw_verbs.c index 592a015cc4c6a0,7ca0297d68a4a7..5ac8bd450d2407 --- a/drivers/infiniband/sw/siw/siw_verbs.c +++ b/drivers/infiniband/sw/siw/siw_verbs.c @@@ -178,13 -178,21 +178,20 @@@ int siw_query_port(struct ib_device *ba rv = ib_get_eth_speed(base_dev, port, &attr->active_speed, &attr->active_width); + if (rv) + return rv; + + ndev = ib_device_get_netdev(base_dev, SIW_PORT); + if (!ndev) + return -ENODEV; + attr->gid_tbl_len = 1; attr->max_msg_sz = -1; - attr->max_mtu = ib_mtu_int_to_enum(sdev->netdev->mtu); - attr->active_mtu = ib_mtu_int_to_enum(sdev->netdev->mtu); - attr->state = ib_get_curr_port_state(sdev->netdev); + attr->max_mtu = ib_mtu_int_to_enum(ndev->max_mtu); + attr->active_mtu = ib_mtu_int_to_enum(READ_ONCE(ndev->mtu)); - attr->phys_state = (netif_running(ndev) && netif_carrier_ok(ndev)) ? ++ attr->state = ib_get_curr_port_state(ndev); + attr->phys_state = attr->state == IB_PORT_ACTIVE ? IB_PORT_PHYS_STATE_LINK_UP : IB_PORT_PHYS_STATE_DISABLED; - attr->state = attr->phys_state == IB_PORT_PHYS_STATE_LINK_UP ? - IB_PORT_ACTIVE : IB_PORT_DOWN; attr->port_cap_flags = IB_PORT_CM_SUP | IB_PORT_DEVICE_MGMT_SUP; /* * All zero Thanks, Jason The following changes since commit 40384c840ea1944d7c5a392e8975ed088ecf0b37: Linux 6.13-rc1 (2024-12-01 14:28:56 -0800) 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 d3d930411ce390e532470194296658a960887773: RDMA/mlx5: Fix implicit ODP use after free (2025-01-21 14:10:49 -0400) ---------------------------------------------------------------- RDMA v6.14 merge window pull request Lighter that normal, but the now usual collection of driver fixes and small improvements: - Small fixes and minor improvements to cxgb4, bnxt_re, rxe, srp, efa, cxgb4 - Update mlx4 to use the new umem APIs, avoiding direct use of scatterlist - Support ROCEv2 in erdma - Remove various uncalled functions, constify bin_attribute - Provide core infrastructure to catch netdev events and route them to drivers, consolidating duplicated driver code - Fix rare race condition crashes in mlx5 ODP flows ---------------------------------------------------------------- Advait Dhamorikar (1): RDMA/erdma: Fix opcode conditional check Anumula Murali Mohan Reddy (1): RDMA/cxgb4: Notify rdma stack for IB_EVENT_QP_LAST_WQE_REACHED event Boshi Yu (12): RDMA/erdma: Probe the erdma RoCEv2 device RDMA/erdma: Add GID table management interfaces RDMA/erdma: Add the erdma_query_pkey() interface RDMA/erdma: Add address handle implementation RDMA/erdma: Add erdma_modify_qp_rocev2() interface RDMA/erdma: Refactor the code of the modify_qp interface RDMA/erdma: Add the query_qp command to the cmdq RDMA/erdma: Support UD QPs and UD WRs RDMA/erdma: Add missing fields to the erdma_device_ops_rocev2 RDMA/erdma: Fix incorrect response returned from query_qp RDMA/erdma: Support non-sleeping erdma_post_cmd_wait() RDMA/erdma: Support create_ah/destroy_ah in non-sleepable contexts Chiara Meiohas (1): RDMA/mlx5: Extend ODP statistics with operation count Dan Carpenter (1): rdma/cxgb4: Prevent potential integer overflow on 32bit Dr. David Alan Gilbert (6): IB/hfi1: Remove unused hfi1_format_hwerrors RDMA/irdma: Remove unused irdma_cqp_*_fpm_val_cmd functions RDMA/core: Remove unused ib_ud_header_unpack RDMA/core: Remove unused ib_find_exact_cached_pkey RDMA/core: Remove unused ibdev_printk RDMA/core: Remove unused ib_copy_path_rec_from_user Junxian Huang (1): RDMA/hns: Clean up the legacy CONFIG_INFINIBAND_HNS Kalesh AP (11): RDMA/bnxt_re: Remove extra new line in bnxt_re_netdev_event RDMA/bnxt_re: Remove unnecessary goto in bnxt_re_netdev_event RDMA/bnxt_re: Optimize error handling in bnxt_re_probe RDMA/bnxt_re: Eliminate need for some forward declarations RDMA/bnxt_re: Remove unnecessary header file inclusion RDMA/bnxt_re: Fix to drop reference to the mmap entry in case of error RDMA/bnxt_re: Add Async event handling support RDMA/bnxt_re: Query firmware defaults of CC params during probe RDMA/bnxt_re: Add support to handle DCB_CONFIG_CHANGE event RDMA/bnxt_re: Pass the context for ulp_irq_stop RDMA/bnxt_re: Allocate dev_attr information dynamically Leon Romanovsky (3): RDMA/mlx4: Avoid false error about access to uninitialized gids array RDMA/mlx4: Use ib_umem_find_best_pgsz() to calculate MTT size RDMA/mlx4: Use DMA iterator to write MTT Li Zhijian (1): RDMA/rtrs: Add missing deinit() call Ma Ke (1): RDMA/srp: Fix error handling in srp_add_port Michael Chan (1): bnxt_en: Add ULP call to notify async events Michael Guralnik (1): RDMA/mlx5: Fix indirect mkey ODP page count Michael Margolin (1): RDMA/efa: Reset device on probe failure Patrisious Haddad (2): RDMA/mlx5: Fix link status down event for MPV RDMA/mlx5: Fix implicit ODP use after free Selvin Xavier (1): MAINTAINERS: Update the bnxt_re maintainers Thomas Weißschuh (2): RDMA/hfi1: Constify 'struct bin_attribute' RDMA/qib: Constify 'struct bin_attribute' Yishai Hadas (1): RDMA/mlx5: Fix a race for an ODP MR which leads to CQE with error Yonatan Nachum (1): RDMA/efa: Align interrupt related fields to same type Yuyu Li (12): RDMA/core: Add ib_query_netdev_port() to query netdev port by IB device. RDMA/core: Support link status events dispatching RDMA/bnxt_re: Remove deliver net device event RDMA/erdma: Remove deliver net device event RDMA/irdma: Remove deliver net device event RDMA/rxe: Remove deliver net device event RDMA/siw: Remove deliver net device event RDMA/usnic: Support report_port_event() ops RDMA/mlx4: Support report_port_event() ops RDMA/pvrdma: Support report_port_event() ops RDMA/mlx5: Handle link status event only for LAG device RDMA/hns: Support fast path for link-down events dispatching Zhu Yanjun (1): RDMA/rxe: Fix the warning "__rxe_cleanup+0x12c/0x170 [rdma_rxe]" zhenwei pi (1): RDMA/rxe: Fix mismatched max_msg_sz MAINTAINERS | 1 + drivers/infiniband/core/cache.c | 35 -- drivers/infiniband/core/device.c | 116 +++-- drivers/infiniband/core/ud_header.c | 83 ---- drivers/infiniband/core/uverbs_marshall.c | 42 -- drivers/infiniband/hw/Makefile | 2 +- drivers/infiniband/hw/bnxt_re/bnxt_re.h | 5 +- drivers/infiniband/hw/bnxt_re/hw_counters.c | 11 +- drivers/infiniband/hw/bnxt_re/ib_verbs.c | 47 +- drivers/infiniband/hw/bnxt_re/main.c | 339 +++++++++------ drivers/infiniband/hw/bnxt_re/qplib_fp.h | 1 + drivers/infiniband/hw/bnxt_re/qplib_res.c | 7 +- drivers/infiniband/hw/bnxt_re/qplib_res.h | 4 +- drivers/infiniband/hw/bnxt_re/qplib_sp.c | 117 ++++- drivers/infiniband/hw/bnxt_re/qplib_sp.h | 6 +- drivers/infiniband/hw/cxgb4/device.c | 6 +- drivers/infiniband/hw/cxgb4/qp.c | 8 + drivers/infiniband/hw/efa/efa.h | 8 +- drivers/infiniband/hw/efa/efa_com.h | 6 +- drivers/infiniband/hw/efa/efa_main.c | 28 +- drivers/infiniband/hw/erdma/Kconfig | 2 +- drivers/infiniband/hw/erdma/erdma.h | 14 +- drivers/infiniband/hw/erdma/erdma_cm.c | 71 ++-- drivers/infiniband/hw/erdma/erdma_cmdq.c | 26 +- drivers/infiniband/hw/erdma/erdma_cq.c | 65 +++ drivers/infiniband/hw/erdma/erdma_eq.c | 6 +- drivers/infiniband/hw/erdma/erdma_hw.h | 135 +++++- drivers/infiniband/hw/erdma/erdma_main.c | 62 ++- drivers/infiniband/hw/erdma/erdma_qp.c | 301 ++++++++++--- drivers/infiniband/hw/erdma/erdma_verbs.c | 568 +++++++++++++++++++++---- drivers/infiniband/hw/erdma/erdma_verbs.h | 166 ++++++-- drivers/infiniband/hw/hfi1/hfi.h | 14 - drivers/infiniband/hw/hfi1/intr.c | 31 -- drivers/infiniband/hw/hfi1/sysfs.c | 14 +- drivers/infiniband/hw/hns/Kconfig | 20 +- drivers/infiniband/hw/hns/Makefile | 9 +- drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 13 + drivers/infiniband/hw/irdma/osdep.h | 4 - drivers/infiniband/hw/irdma/protos.h | 4 - drivers/infiniband/hw/irdma/utils.c | 71 ---- drivers/infiniband/hw/mlx4/cq.c | 6 +- drivers/infiniband/hw/mlx4/main.c | 60 +-- drivers/infiniband/hw/mlx4/mlx4_ib.h | 18 +- drivers/infiniband/hw/mlx4/mr.c | 286 +------------ drivers/infiniband/hw/mlx4/qp.c | 12 +- drivers/infiniband/hw/mlx5/main.c | 4 + drivers/infiniband/hw/mlx5/mlx5_ib.h | 6 + drivers/infiniband/hw/mlx5/mr.c | 17 +- drivers/infiniband/hw/mlx5/odp.c | 70 +-- drivers/infiniband/hw/mlx5/restrack.c | 9 + drivers/infiniband/hw/qib/qib_sysfs.c | 16 +- drivers/infiniband/hw/usnic/usnic_ib_main.c | 73 ++-- drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c | 66 +-- drivers/infiniband/sw/rxe/rxe_net.c | 22 +- drivers/infiniband/sw/rxe/rxe_param.h | 2 +- drivers/infiniband/sw/rxe/rxe_pool.c | 11 +- drivers/infiniband/sw/rxe/rxe_verbs.c | 6 +- drivers/infiniband/sw/siw/siw_main.c | 8 - drivers/infiniband/sw/siw/siw_verbs.c | 5 +- drivers/infiniband/ulp/rtrs/rtrs.c | 3 + drivers/infiniband/ulp/srp/ib_srp.c | 1 - drivers/net/ethernet/broadcom/bnxt/bnxt.c | 1 + drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c | 39 +- drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.h | 8 +- include/rdma/ib_cache.h | 16 - include/rdma/ib_marshall.h | 3 - include/rdma/ib_pack.h | 3 - include/rdma/ib_verbs.h | 24 +- 68 files changed, 2009 insertions(+), 1254 deletions(-) (diffstat from tag for-linus-merged)
Attachment:
signature.asc
Description: PGP signature