Skip to content
  • Huy Nguyen's avatar
    net/mlx5: No command allowed when command interface is not ready · 4cab346b
    Huy Nguyen authored
    When EEH is injected and PCI bus stalls, mlx5's pci error detect
    function is called to deactivate the command interface and tear down
    the device. The issue is that there can be a thread that already
    passed MLX5_DEVICE_STATE_INTERNAL_ERROR check, it will send the command
    and stuck in the wait_func.
    
    Solution:
    Add function mlx5_cmd_flush to disable command interface and clear all
    the pending commands. When device state is set to
    MLX5_DEVICE_STATE_INTERNAL_ERROR, call mlx5_cmd_flush to ensure all
    pending threads waiting for firmware commands completion are terminated.
    
    Fixes: c1d4d2e9
    
     ("net/mlx5: Avoid calling sleeping function by the health poll thread")
    Signed-off-by: default avatarHuy Nguyen <huyn@mellanox.com>
    Reviewed-by: default avatarDaniel Jurgens <danielj@mellanox.com>
    Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
    4cab346b