@@ -108,7 +108,7 @@ static int mlx5_devlink_reload_fw_activate(struct devlink *devlink, struct netli
108108 if (err )
109109 return err ;
110110
111- mlx5_unload_one (dev );
111+ mlx5_unload_one_devl_locked (dev );
112112 err = mlx5_health_wait_pci_up (dev );
113113 if (err )
114114 NL_SET_ERR_MSG_MOD (extack , "FW activate aborted, PCI reads fail after reset" );
@@ -143,6 +143,7 @@ static int mlx5_devlink_reload_down(struct devlink *devlink, bool netns_change,
143143 struct mlx5_core_dev * dev = devlink_priv (devlink );
144144 struct pci_dev * pdev = dev -> pdev ;
145145 bool sf_dev_allocated ;
146+ int ret = 0 ;
146147
147148 sf_dev_allocated = mlx5_sf_dev_allocated (dev );
148149 if (sf_dev_allocated ) {
@@ -163,44 +164,55 @@ static int mlx5_devlink_reload_down(struct devlink *devlink, bool netns_change,
163164 NL_SET_ERR_MSG_MOD (extack , "reload while VFs are present is unfavorable" );
164165 }
165166
167+ devl_lock (devlink );
166168 switch (action ) {
167169 case DEVLINK_RELOAD_ACTION_DRIVER_REINIT :
168- mlx5_unload_one (dev );
169- return 0 ;
170+ mlx5_unload_one_devl_locked (dev );
171+ break ;
170172 case DEVLINK_RELOAD_ACTION_FW_ACTIVATE :
171173 if (limit == DEVLINK_RELOAD_LIMIT_NO_RESET )
172- return mlx5_devlink_trigger_fw_live_patch (devlink , extack );
173- return mlx5_devlink_reload_fw_activate (devlink , extack );
174+ ret = mlx5_devlink_trigger_fw_live_patch (devlink , extack );
175+ else
176+ ret = mlx5_devlink_reload_fw_activate (devlink , extack );
177+ break ;
174178 default :
175179 /* Unsupported action should not get to this function */
176180 WARN_ON (1 );
177- return - EOPNOTSUPP ;
181+ ret = - EOPNOTSUPP ;
178182 }
183+
184+ devl_unlock (devlink );
185+ return ret ;
179186}
180187
181188static int mlx5_devlink_reload_up (struct devlink * devlink , enum devlink_reload_action action ,
182189 enum devlink_reload_limit limit , u32 * actions_performed ,
183190 struct netlink_ext_ack * extack )
184191{
185192 struct mlx5_core_dev * dev = devlink_priv (devlink );
193+ int ret = 0 ;
186194
195+ devl_lock (devlink );
187196 * actions_performed = BIT (action );
188197 switch (action ) {
189198 case DEVLINK_RELOAD_ACTION_DRIVER_REINIT :
190- return mlx5_load_one (dev , false);
199+ ret = mlx5_load_one_devl_locked (dev , false);
200+ break ;
191201 case DEVLINK_RELOAD_ACTION_FW_ACTIVATE :
192202 if (limit == DEVLINK_RELOAD_LIMIT_NO_RESET )
193203 break ;
194204 /* On fw_activate action, also driver is reloaded and reinit performed */
195205 * actions_performed |= BIT (DEVLINK_RELOAD_ACTION_DRIVER_REINIT );
196- return mlx5_load_one (dev , false);
206+ ret = mlx5_load_one_devl_locked (dev , false);
207+ break ;
197208 default :
198209 /* Unsupported action should not get to this function */
199210 WARN_ON (1 );
200- return - EOPNOTSUPP ;
211+ ret = - EOPNOTSUPP ;
201212 }
202213
203- return 0 ;
214+ devl_unlock (devlink );
215+ return ret ;
204216}
205217
206218static struct mlx5_devlink_trap * mlx5_find_trap_by_id (struct mlx5_core_dev * dev , int trap_id )
@@ -837,28 +849,28 @@ static int mlx5_devlink_traps_register(struct devlink *devlink)
837849 struct mlx5_core_dev * core_dev = devlink_priv (devlink );
838850 int err ;
839851
840- err = devlink_trap_groups_register (devlink , mlx5_trap_groups_arr ,
841- ARRAY_SIZE (mlx5_trap_groups_arr ));
852+ err = devl_trap_groups_register (devlink , mlx5_trap_groups_arr ,
853+ ARRAY_SIZE (mlx5_trap_groups_arr ));
842854 if (err )
843855 return err ;
844856
845- err = devlink_traps_register (devlink , mlx5_traps_arr , ARRAY_SIZE (mlx5_traps_arr ),
846- & core_dev -> priv );
857+ err = devl_traps_register (devlink , mlx5_traps_arr , ARRAY_SIZE (mlx5_traps_arr ),
858+ & core_dev -> priv );
847859 if (err )
848860 goto err_trap_group ;
849861 return 0 ;
850862
851863err_trap_group :
852- devlink_trap_groups_unregister (devlink , mlx5_trap_groups_arr ,
853- ARRAY_SIZE (mlx5_trap_groups_arr ));
864+ devl_trap_groups_unregister (devlink , mlx5_trap_groups_arr ,
865+ ARRAY_SIZE (mlx5_trap_groups_arr ));
854866 return err ;
855867}
856868
857869static void mlx5_devlink_traps_unregister (struct devlink * devlink )
858870{
859- devlink_traps_unregister (devlink , mlx5_traps_arr , ARRAY_SIZE (mlx5_traps_arr ));
860- devlink_trap_groups_unregister (devlink , mlx5_trap_groups_arr ,
861- ARRAY_SIZE (mlx5_trap_groups_arr ));
871+ devl_traps_unregister (devlink , mlx5_traps_arr , ARRAY_SIZE (mlx5_traps_arr ));
872+ devl_trap_groups_unregister (devlink , mlx5_trap_groups_arr ,
873+ ARRAY_SIZE (mlx5_trap_groups_arr ));
862874}
863875
864876int mlx5_devlink_register (struct devlink * devlink )
0 commit comments