Skip to content

Move devlink_register to be near devlink_reload_enable

Leon Romanovsky lkml netdev 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest5 patches 8 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/5net: hns3: remove always exist devlink pointer checkdrivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_devlink.c drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_devlink.c+2 -140 replies
2/5net/mlx4: Move devlink_register to be the last initialization commanddrivers/net/ethernet/mellanox/mlx4/main.c+27 -110 replies
3/5mlxsw: core: Refactor code to publish devlink ops when device is readydrivers/net/ethernet/mellanox/mlxsw/core.c+13 -140 replies
4/5net/mlx5: Accept devlink user input after driver initialization completedrivers/net/ethernet/mellanox/mlx5/core/devlink.c drivers/net/ethernet/mellanox/mlx5/core/main.c drivers/net/ethernet/mellanox/mlx5/core/sf/dev/driver.c+24 -110 replies
5/5netdevsim: Delay user access till probe is finisheddrivers/net/netdevsim/dev.c+10 -90 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH net-next 0/5] Move devlink_register to be near devlink_reload_enable

From: Leon Romanovsky <[email protected]>

Hi Dave and Jakub,

This series prepares code to remove devlink_reload_enable/_disable API and in order to do, we move all devlink_register() calls to be right before devlink_reload_enable().

The best place for such a call should be right before exiting from the probe().

This is done because devlink_register() opens devlink netlink to the users and gives them a venue to issue commands before initialization is finished.

1. Some drivers were aware of such "functionality" and tried to protect themselves with extra locks, state machines and devlink_reload_enable(). Let's assume that it worked for them, but I'm personally skeptical about it.

2. Some drivers copied that pattern, but without locks and state machines. That protected them from reload flows, but not from any _set_ routines.

3. And all other drivers simply didn't understand the implications of early devlink_register() and can be seen as "broken".

In this series, we focus on items #1 and #2.

Please share your opinion if I should change ALL other drivers to make sure that devlink_register() is the last command or leave them in an as-is state.

Thanks

Leon Romanovsky (5):
net: hns3: remove always exist devlink pointer check net/mlx4: Move devlink_register to be the last initialization command
mlxsw: core: Refactor code to publish devlink ops when device is ready net/mlx5: Accept devlink user input after driver initialization
complete
netdevsim: Delay user access till probe is finished

 .../hisilicon/hns3/hns3pf/hclge_devlink.c     |  8 +---
 .../hisilicon/hns3/hns3vf/hclgevf_devlink.c   |  8 +---
 drivers/net/ethernet/mellanox/mlx4/main.c     | 38 +++++++++++++------
 .../net/ethernet/mellanox/mlx5/core/devlink.c | 10 +----
 .../net/ethernet/mellanox/mlx5/core/main.c    | 13 ++++++-
 .../mellanox/mlx5/core/sf/dev/driver.c        | 12 +++++-
 drivers/net/ethernet/mellanox/mlxsw/core.c    | 27 +++++++------
 drivers/net/netdevsim/dev.c                   | 19 +++++-----
 8 files changed, 76 insertions(+), 59 deletions(-)
Signature · 1 line
2.31.1