ACK/Cmnt: [SRU][J:linux-bluefield][PULL] Fix devlink deadlock issue

Tim Gardner tim.gardner at canonical.com
Fri Sep 8 12:23:04 UTC 2023


On 9/7/23 9:03 PM, Bodong Wang wrote:
> This pull request is addressing the devlink deadlock issue. System gets 
> stuck if try to switch to switchdev mode while toggling ns over BF kernel.
> 
> BugLink: https://bugs.launchpad.net/bugs/2032378 
> <https://bugs.launchpad.net/bugs/2032378>
> 
> ----------------------------------------------------------------
> 
> The following changes since commit e0359e9ebd0d9c01b12185b803eb30783c42937a:
> 
>    UBUNTU: Ubuntu-bluefield-5.15.0-1023.25 (2023-08-22 18:15:20 +0200)
> 
> are available in the Git repository at:
> 
> https://git.launchpad.net/~bodong-wang/ubuntu/+source/linux-bluefield/+git/jammy <https://git.launchpad.net/~bodong-wang/ubuntu/+source/linux-bluefield/+git/jammy> master-next
> 
> for you to fetch changes up to 521cbe592aa5eae81ca3833ba6b15ef9f5641ece:
> 
>    net: devlink: convert reload command to take implicit devlink->lock 
> (2023-09-07 12:13:13 -0500)
> 
> ----------------------------------------------------------------
> 
> Ammar Faizi (1):
> 
>        net: devlink: Fix missing mutex_unlock() call
> 
> Eric Dumazet (1):
> 
>        devlink: adopt u64_stats_t
> 
> Guo Zhengkui (1):
> 
>        devlink: fix flexible_array.cocci warning
> 
> Jacob Keller (1):
> 
>        devlink: report maximum number of snapshots with regions
> 
> Jakub Kicinski (12):
> 
>        devlink: make all symbols GPL-only
> 
>        devlink: expose get/put functions
> 
>        ethtool: push the rtnl_lock into dev_ethtool()
> 
>        ethtool: handle info/flash data copying outside rtnl_lock
> 
>        ethtool: don't drop the rtnl_lock half way thru the ioctl
> 
>        net: Don't include filter.h from net/sock.h
> 
>        devlink: expose instance locking and add locked port registering
> 
>        devlink: hold the instance lock in port_split / port_unsplit 
> callbacks
> 
>        devlink: pass devlink_port to port_split / port_unsplit callbacks
> 
>        devlink: add explicitly locked flavor of the rate node APIs
> 
>        devlink: hold the instance lock during eswitch_mode callbacks
> 
>        devlink: hold region lock when flushing snapshots
> 
> Jiri Pirko (12):
> 
>        devlink: add support to create line card and expose to user
> 
>        devlink: implement line card provisioning
> 
>        devlink: implement line card active state
> 
>        devlink: add port to line card relationship set
> 
>        devlink: introduce line card devices support
> 
>        devlink: introduce line card info get message
> 
>        devlink: introduce line card device info infrastructure
> 
>        net: devlink: fix unlocked vs locked functions descriptions
> 
>        net: devlink: use helpers to work with devlink->lock mutex
> 
>        net: devlink: remove region snapshot ID tracking dependency on 
> devlink->lock
> 
>       net: devlink: remove region snapshots list dependency on devlink->lock
> 
>        net: devlink: convert reload command to take implicit devlink->lock
> 
> Leon Romanovsky (18):
> 
>        devlink: Delete not-used single parameter notification APIs
> 
>        devlink: Delete not-used devlink APIs
> 
>        devlink: Make devlink_register to be void
> 
>        devlink: Delete not used port parameters APIs
> 
>        devlink: Remove single line function obfuscations
> 
>        devlink: Notify users when objects are accessible
> 
>        devlink: Add missed notifications iterators
> 
>        devlink: Reduce struct devlink exposure
> 
>        devlink: Move netdev_to_devlink helpers to devlink.c
> 
>        devlink: Annotate devlink API calls
> 
>        devlink: Allow control devlink ops behavior through feature mask
> 
>        devlink: Delete reload enable/disable interface
> 
>        devlink: Remove extra device_lock assert checks
> 
>        devlink: Delete obsolete parameters publish API
> 
>        devlink: Clean not-executed param notifications
> 
>        devlink: Simplify internal devlink params implementation
> 
>        devlink: Don't throw an error if flash notification sent before 
> devlink visible
> 
>        devlink: Simplify devlink resources unregister call
> 
> Moshe Shemesh (4):
> 
>        devlink: Remove unused function devlink_rate_nodes_destroy
> 
>        devlink: Remove unused functions devlink_rate_leaf_create/destroy
> 
>        devlink: Hold the instance lock in port_new / port_del callbacks
> 
>        devlink: Hold the instance lock in health callbacks
> 
> Shay Drory (2):
> 
>        devlink: Add new "io_eq_size" generic device param
> 
>        devlink: Add new "event_eq_size" generic device param
> 
> Shiraz Saleem (1):
> 
>        devlink: Add 'enable_iwarp' generic device param
> 
> William Tu (1):
> 
>        UBUNTU: [Config] bluefield: disable MLX5, and vendor drivers.
> 
> Documentation/networking/devlink/devlink-linecard.rst        |  126 ++++
> 
> Documentation/networking/devlink/devlink-params.rst          |    9 +
> 
> Documentation/networking/devlink/devlink-region.rst          |    4 +-
> 
> Documentation/networking/devlink/ice.rst                     |    4 +
> 
> Documentation/networking/devlink/index.rst                   |   17 +
> 
> debian.bluefield/abi/arm64/bluefield.modules                 |  869 
> ----------------------
> 
> debian.bluefield/abi/arm64/bluefield.modules.builtin         |   10 -
> 
> debian.bluefield/config/annotations                          | 1141 
> ++++++++++++++++++++++++++++-
> 
> drivers/bluetooth/btqca.c                                    |    1 +
> 
> drivers/infiniband/core/cache.c                              |    1 +
> 
> drivers/infiniband/hw/irdma/ctrl.c                           |    2 +
> 
> drivers/infiniband/hw/irdma/uda.c                            |    2 +
> 
> drivers/infiniband/hw/mlx5/doorbell.c                        |    1 +
> 
> drivers/infiniband/hw/mlx5/qp.c                              |    1 +
> 
> drivers/net/amt.c                                            | 3298 
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 
> drivers/net/appletalk/ipddp.c                                |    1 +
> 
> drivers/net/bonding/bond_main.c                              |    1 +
> 
> drivers/net/can/usb/peak_usb/pcan_usb.c                      |    1 +
> 
> drivers/net/dsa/microchip/ksz8795.c                          |    1 +
> 
> drivers/net/dsa/xrs700x/xrs700x.c                            |    1 +
> 
> drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c            |   12 +-
> 
> drivers/net/ethernet/broadcom/bnxt/bnxt_vfr.c                |   18 +-
> 
> drivers/net/ethernet/cavium/liquidio/lio_main.c              |    8 +-
> 
> drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-devlink.c     |   13 +-
> 
> drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_devlink.c   |   18 +-
> 
> drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_devlink.c |   18 +-
> 
> drivers/net/ethernet/huawei/hinic/hinic_devlink.c            |    4 +-
> 
> drivers/net/ethernet/huawei/hinic/hinic_devlink.h            |    2 +-
> 
> drivers/net/ethernet/huawei/hinic/hinic_hw_dev.c             |    8 +-
> 
> drivers/net/ethernet/huawei/hinic/hinic_tx.c                 |    1 +
> 
> drivers/net/ethernet/intel/ice/ice_devlink.c                 |   14 +-
> 
> drivers/net/ethernet/intel/ice/ice_devlink.h                 |    2 +-
> 
> drivers/net/ethernet/intel/ice/ice_main.c                    |    6 +-
> 
> drivers/net/ethernet/intel/ice/ice_txrx_lib.c                |    2 +
> 
> drivers/net/ethernet/intel/igc/igc_xdp.c                     |    1 +
> 
> drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c      |    8 +-
> 
> drivers/net/ethernet/marvell/octeontx2/nic/otx2_devlink.c    |    8 +-
> 
> drivers/net/ethernet/marvell/prestera/prestera_devlink.c     |    6 +-
> 
> drivers/net/ethernet/mellanox/mlx4/en_netdev.c               |    1 +
> 
> drivers/net/ethernet/mellanox/mlx4/main.c                    |    5 +-
> 
> drivers/net/ethernet/mellanox/mlx5/core/devlink.c            |    5 +-
> 
> drivers/net/ethernet/mellanox/mlx5/core/en/qos.c             |    1 +
> 
> drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c   |   54 +-
> 
> drivers/net/ethernet/mellanox/mlx5/core/sf/dev/driver.c      |    2 +-
> 
> drivers/net/ethernet/mellanox/mlxfw/mlxfw.h                  |    2 +-
> 
> drivers/net/ethernet/mellanox/mlxsw/core.c                   |   49 +-
> 
> drivers/net/ethernet/mellanox/mlxsw/spectrum.c               |    4 +-
> 
> drivers/net/ethernet/mscc/ocelot_vsc7514.c                   |    6 +-
> 
> drivers/net/ethernet/netronome/nfp/nfp_devlink.c             |   32 +-
> 
> drivers/net/ethernet/netronome/nfp/nfp_net_main.c            |    6 +-
> 
> drivers/net/ethernet/netronome/nfp/nfp_port.h                |    2 -
> 
> drivers/net/ethernet/pensando/ionic/ionic_devlink.c          |    7 +-
> 
> drivers/net/ethernet/qlogic/qed/qed_devlink.c                |    7 +-
> 
> drivers/net/ethernet/sfc/efx.c                               |    1 +
> 
> drivers/net/ethernet/sfc/efx_channels.c                      |    1 +
> 
> drivers/net/ethernet/sfc/efx_common.c                        |    1 +
> 
> drivers/net/ethernet/ti/am65-cpsw-nuss.c                     |    9 +-
> 
> drivers/net/ethernet/ti/cpsw_new.c                           |    8 +-
> 
> drivers/net/hamradio/hdlcdrv.c                               |    1 +
> 
> drivers/net/hamradio/scc.c                                   |    1 +
> 
> drivers/net/loopback.c                                       |    1 +
> 
> drivers/net/netdevsim/dev.c                                  |   29 +-
> 
> drivers/net/netdevsim/health.c                               |   32 -
> 
> drivers/net/vrf.c                                            |    1 +
> 
> drivers/net/wireless/ath/ath11k/debugfs.c                    |    2 +
> 
> drivers/net/wireless/realtek/rtw89/debug.c                   |    2 +
> 
> drivers/net/wwan/iosm/iosm_ipc_devlink.c                     |  357 
> +++++++++
> 
> drivers/ptp/ptp_ocp.c                                        |    7 +-
> 
> drivers/staging/qlge/qlge_main.c                             |    6 +-
> 
> fs/nfs/dir.c                                                 |    1 +
> 
> fs/nfs/fs_context.c                                          |    1 +
> 
> fs/select.c                                                  |    1 +
> 
> include/linux/bpf_local_storage.h                            |    1 +
> 
> include/linux/dsa/loop.h                                     |    1 +
> 
> include/net/devlink.h                                        |  252 +++----
> 
> include/net/ipv6.h                                           |    2 +
> 
> include/net/route.h                                          |    1 +
> 
> include/net/sock.h                                           |    2 +-
> 
> include/net/xdp_sock.h                                       |    1 +
> 
> include/trace/events/devlink.h                               |   72 +-
> 
> include/uapi/linux/devlink.h                                 |   30 +
> 
> kernel/sysctl.c                                              |    1 +
> 
> net/bluetooth/bnep/sock.c                                    |    1 +
> 
> net/bluetooth/eir.h                                          |   74 ++
> 
> net/bluetooth/hidp/sock.c                                    |    1 +
> 
> net/bluetooth/l2cap_sock.c                                   |    1 +
> 
> net/bridge/br_ioctl.c                                        |    1 +
> 
> net/caif/caif_socket.c                                       |    1 +
> 
> net/core/dev_ioctl.c                                         |    2 -
> 
> net/core/devlink.c                                           | 2733 
> ++++++++++++++++++++++++++++++++++++++++++++------------------------
> 
> net/core/flow_dissector.c                                    |    1 +
> 
> net/core/lwt_bpf.c                                           |    1 +
> 
> net/core/sock_diag.c                                         |    1 +
> 
> net/core/sysctl_net_core.c                                   |    1 +
> 
> net/decnet/dn_nsp_in.c                                       |    1 +
> 
> net/dsa/dsa.c                                                |    2 +-
> 
> net/dsa/dsa2.c                                               |    7 +-
> 
> net/dsa/dsa_priv.h                                           |    1 +
> 
> net/ethtool/ioctl.c                                          |  149 +++-
> 
> net/ipv4/nexthop.c                                           |    1 +
> 
> net/ipv6/ip6_fib.c                                           |    1 +
> 
> net/ipv6/seg6_local.c                                        |    1 +
> 
> net/iucv/af_iucv.c                                           |    1 +
> 
> net/kcm/kcmsock.c                                            |    1 +
> 
> net/netfilter/nfnetlink_hook.c                               |    1 +
> 
> net/netfilter/nft_reject_netdev.c                            |    1 +
> 
> net/netlink/af_netlink.c                                     |    2 +
> 
> net/packet/af_packet.c                                       |    1 +
> 
> net/rose/rose_in.c                                           |    1 +
> 
> net/sched/sch_frag.c                                         |    1 +
> 
> net/smc/smc_ib.c                                             |    2 +
> 
> net/smc/smc_ism.c                                            |    1 +
> 
> net/unix/af_unix.c                                           |    1 +
> 
> net/vmw_vsock/af_vsock.c                                     |    1 +
> 
> net/xdp/xskmap.c                                             |    1 +
> 
> net/xfrm/xfrm_state.c                                        |    1 +
> 
> net/xfrm/xfrm_user.c                                         |    1 +
> 
> 117 files changed, 7304 insertions(+), 2342 deletions(-)
> 
> create mode 100644 Documentation/networking/devlink/devlink-linecard.rst
> 
> create mode 100644 drivers/net/amt.c
> 
> create mode 100644 drivers/net/wwan/iosm/iosm_ipc_devlink.c
> 
> create mode 100644 net/bluetooth/eir.h
> 
> 
Acked-by: Tim Gardner <tim.gardner at canonical.com>

Most of your backport explanations are terse and unhelpful. Think about 
looking at this code months from now. You'll wonder what you were thinking.
-- 
-----------
Tim Gardner
Canonical, Inc




More information about the kernel-team mailing list