Message ID | 20230804150527.6117-1-petr.pavlu@suse.com (mailing list archive) |
---|---|
Headers | show |
Series | Convert mlx4 to use auxiliary bus | expand |
On Fri, Aug 04, 2023 at 05:05:17PM +0200, Petr Pavlu wrote: > This series converts the mlx4 drivers to use auxiliary bus, similarly to > how mlx5 was converted [1]. The first 6 patches are preparatory changes, > the remaining 4 are the final conversion. > > Initial motivation for this change was to address a problem related to > loading mlx4_en/mlx4_ib by mlx4_core using request_module_nowait(). When > doing such a load in initrd, the operation is asynchronous to any init > control and can get unexpectedly affected/interrupted by an eventual > root switch. Using an auxiliary bus leaves these module loads to udevd > which better integrates with systemd processing. [2] Neat, I didn't realize that was a pain point for distros. Jason
On 04/08/2023 18:05, Petr Pavlu wrote: > This series converts the mlx4 drivers to use auxiliary bus, similarly to > how mlx5 was converted [1]. The first 6 patches are preparatory changes, > the remaining 4 are the final conversion. > > Initial motivation for this change was to address a problem related to > loading mlx4_en/mlx4_ib by mlx4_core using request_module_nowait(). When > doing such a load in initrd, the operation is asynchronous to any init > control and can get unexpectedly affected/interrupted by an eventual > root switch. Using an auxiliary bus leaves these module loads to udevd > which better integrates with systemd processing. [2] > > General benefit is to get rid of custom interface logic and instead use > a common facility available for this task. An obvious risk is that some > new bug is introduced by the conversion. > > Leon Romanovsky was kind enough to check for me that the series passes > their verification tests. > > [1] https://lore.kernel.org/netdev/20201101201542.2027568-1-leon@kernel.org/ > [2] https://lore.kernel.org/netdev/0a361ac2-c6bd-2b18-4841-b1b991f0635e@suse.com/ > > Petr Pavlu (10): > mlx4: Get rid of the mlx4_interface.get_dev callback > mlx4: Rename member mlx4_en_dev.nb to netdev_nb > mlx4: Replace the mlx4_interface.event callback with a notifier > mlx4: Get rid of the mlx4_interface.activate callback > mlx4: Move the bond work to the core driver > mlx4: Avoid resetting MLX4_INTFF_BONDING per driver > mlx4: Register mlx4 devices to an auxiliary virtual bus > mlx4: Connect the ethernet part to the auxiliary bus > mlx4: Connect the infiniband part to the auxiliary bus > mlx4: Delete custom device management logic > > drivers/infiniband/hw/mlx4/main.c | 207 ++++++---- > drivers/infiniband/hw/mlx4/mlx4_ib.h | 2 + > drivers/net/ethernet/mellanox/mlx4/Kconfig | 1 + > drivers/net/ethernet/mellanox/mlx4/en_main.c | 141 ++++--- > .../net/ethernet/mellanox/mlx4/en_netdev.c | 64 +--- > drivers/net/ethernet/mellanox/mlx4/intf.c | 361 ++++++++++++------ > drivers/net/ethernet/mellanox/mlx4/main.c | 110 ++++-- > drivers/net/ethernet/mellanox/mlx4/mlx4.h | 16 +- > drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 4 +- > include/linux/mlx4/device.h | 20 + > include/linux/mlx4/driver.h | 42 +- > 11 files changed, 572 insertions(+), 396 deletions(-) > > > base-commit: 86b7e033d684a9d4ca20ad8e6f8b9300cf99668f For the series: Acked-by: Tariq Toukan <tariqt@nvidia.com>