On 9/14/2020 4:54 PM, Jiri Pirko wrote:
Mon, Sep 14, 2020 at 08:07:57AM CEST, mo...@mellanox.com wrote:

[..]

+static void mlx5_fw_reset_complete_reload(struct mlx5_core_dev *dev)
+{
+       struct mlx5_fw_reset *fw_reset = dev->priv.fw_reset;
+
+       /* if this is the driver that initiated the fw reset, devlink completed 
the reload */
+       if (test_bit(MLX5_FW_RESET_FLAGS_PENDING_COMP, &fw_reset->reset_flags)) 
{
+               complete(&fw_reset->done);
+       } else {
+               mlx5_load_one(dev, false);
+               devlink_reload_implicit_actions_performed(priv_to_devlink(dev),
+                                                         
DEVLINK_RELOAD_ACTION_LIMIT_LEVEL_NONE,
+                                                         
BIT(DEVLINK_RELOAD_ACTION_DRIVER_REINIT) |
+                                                         
BIT(DEVLINK_RELOAD_ACTION_FW_ACTIVATE));
Hmm, who originated the reset? Devlink_reload of the same devlink
instance?


Not the same devlink instance for sure. I defer it by the flag above MLX5_FW_RESET_FLAG_PENDING_COMP. If the flag set, I set complete to the reload_down() waiting for it.


[..]

Reply via email to