mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-26 11:25:09 +07:00
net/mlx5: Wait for FW readiness before initializing command interface
Before attempting to initialize the command interface we must wait till
the fw_initializing bit is clear.
If we fail to meet this condition the hardware will drop our
configuration, specifically the descriptors page address. This scenario
can happen when the firmware is still executing an FLR flow and did not
finish yet so the driver needs to wait for that to finish.
Fixes: e3297246c2
('net/mlx5_core: Wait for FW readiness on startup')
Signed-off-by: Eli Cohen <eli@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
parent
3b1bbafbfd
commit
6c780a0267
@ -175,8 +175,9 @@ static struct mlx5_profile profile[] = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
#define FW_INIT_TIMEOUT_MILI 2000
|
#define FW_INIT_TIMEOUT_MILI 2000
|
||||||
#define FW_INIT_WAIT_MS 2
|
#define FW_INIT_WAIT_MS 2
|
||||||
|
#define FW_PRE_INIT_TIMEOUT_MILI 10000
|
||||||
|
|
||||||
static int wait_fw_init(struct mlx5_core_dev *dev, u32 max_wait_mili)
|
static int wait_fw_init(struct mlx5_core_dev *dev, u32 max_wait_mili)
|
||||||
{
|
{
|
||||||
@ -1013,6 +1014,15 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv,
|
|||||||
*/
|
*/
|
||||||
dev->state = MLX5_DEVICE_STATE_UP;
|
dev->state = MLX5_DEVICE_STATE_UP;
|
||||||
|
|
||||||
|
/* wait for firmware to accept initialization segments configurations
|
||||||
|
*/
|
||||||
|
err = wait_fw_init(dev, FW_PRE_INIT_TIMEOUT_MILI);
|
||||||
|
if (err) {
|
||||||
|
dev_err(&dev->pdev->dev, "Firmware over %d MS in pre-initializing state, aborting\n",
|
||||||
|
FW_PRE_INIT_TIMEOUT_MILI);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
err = mlx5_cmd_init(dev);
|
err = mlx5_cmd_init(dev);
|
||||||
if (err) {
|
if (err) {
|
||||||
dev_err(&pdev->dev, "Failed initializing command interface, aborting\n");
|
dev_err(&pdev->dev, "Failed initializing command interface, aborting\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user