Commit 502e82b9 authored by Aya Levin's avatar Aya Levin Committed by Saeed Mahameed

net/mlx5: Fix access to a non-supported register

Validate MRTC register is supported before triggering a delayed work
which accesses it.

Fixes: 5a1023de ("net/mlx5: Add periodic update of host time to firmware")
Signed-off-by: default avatarAya Levin <ayal@nvidia.com>
Reviewed-by: default avatarGal Pressman <gal@nvidia.com>
Reviewed-by: default avatarMoshe Shemesh <moshe@nvidia.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
parent 924cc463
...@@ -836,7 +836,7 @@ void mlx5_start_health_poll(struct mlx5_core_dev *dev) ...@@ -836,7 +836,7 @@ void mlx5_start_health_poll(struct mlx5_core_dev *dev)
health->timer.expires = jiffies + msecs_to_jiffies(poll_interval_ms); health->timer.expires = jiffies + msecs_to_jiffies(poll_interval_ms);
add_timer(&health->timer); add_timer(&health->timer);
if (mlx5_core_is_pf(dev)) if (mlx5_core_is_pf(dev) && MLX5_CAP_MCAM_REG(dev, mrtc))
queue_delayed_work(health->wq, &health->update_fw_log_ts_work, 0); queue_delayed_work(health->wq, &health->update_fw_log_ts_work, 0);
} }
......
...@@ -1071,18 +1071,16 @@ static int mlx5_function_setup(struct mlx5_core_dev *dev, bool boot) ...@@ -1071,18 +1071,16 @@ static int mlx5_function_setup(struct mlx5_core_dev *dev, bool boot)
mlx5_set_driver_version(dev); mlx5_set_driver_version(dev);
mlx5_start_health_poll(dev);
err = mlx5_query_hca_caps(dev); err = mlx5_query_hca_caps(dev);
if (err) { if (err) {
mlx5_core_err(dev, "query hca failed\n"); mlx5_core_err(dev, "query hca failed\n");
goto stop_health; goto reclaim_boot_pages;
} }
mlx5_start_health_poll(dev);
return 0; return 0;
stop_health:
mlx5_stop_health_poll(dev, boot);
reclaim_boot_pages: reclaim_boot_pages:
mlx5_reclaim_startup_pages(dev); mlx5_reclaim_startup_pages(dev);
err_disable_hca: err_disable_hca:
......
...@@ -9698,7 +9698,10 @@ struct mlx5_ifc_mcam_access_reg_bits { ...@@ -9698,7 +9698,10 @@ struct mlx5_ifc_mcam_access_reg_bits {
u8 regs_84_to_68[0x11]; u8 regs_84_to_68[0x11];
u8 tracer_registers[0x4]; u8 tracer_registers[0x4];
u8 regs_63_to_32[0x20]; u8 regs_63_to_46[0x12];
u8 mrtc[0x1];
u8 regs_44_to_32[0xd];
u8 regs_31_to_0[0x20]; u8 regs_31_to_0[0x20];
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment