• M
    net/mlx5: Use devl_ API in mlx5e_devlink_port_register · 7b19119f
    Moshe Shemesh 提交于
    As part of the flows invoked by mlx5_devlink_eswitch_mode_set() get to
    mlx5_rescan_drivers_locked() which can call mlx5e_probe()/mlx5e_remove
    and register/unregister mlx5e driver ports accordingly. This can lead to
    deadlock once mlx5_devlink_eswitch_mode_set() will use devlink lock.
    Use devl_port_register/unregister() instead of
    devlink_port_register/unregister() and add devlink instance locks in the
    driver paths to this function to have it locked while calling devl_ API
    function.
    
    If remove or probe were called by module init or module cleanup flows,
    need to lock devlink just before calling devl_port_register(), otherwise
    it is called by attach/detach or register/unregister flow and we can
    have the flow locked. Added flag to distinguish between these cases.
    
    This will be used by the downstream patch to invoke
    mlx5_devlink_eswitch_mode_set() with devlink locked.
    Signed-off-by: NMoshe Shemesh <moshe@nvidia.com>
    Signed-off-by: NSaeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
    7b19119f
driver.h 33.9 KB