net/mlx5: Add a timeout to acquire the command queue semaphore
authorAkiva Goldberger <agoldberger@nvidia.com>
Thu, 9 May 2024 11:29:50 +0000 (14:29 +0300)
committerJakub Kicinski <kuba@kernel.org>
Sat, 11 May 2024 02:38:33 +0000 (19:38 -0700)
commit485d65e1357123a697c591a5aeb773994b247ad7
tree2a92cc3ee1e96d70c4be046ce67bf3d1a1a4b616
parent0f06228d4a2dcc1fca5b3ddb0eefa09c05b102c4
net/mlx5: Add a timeout to acquire the command queue semaphore

Prevent forced completion handling on an entry that has not yet been
assigned an index, causing an out of bounds access on idx = -22.
Instead of waiting indefinitely for the sem, blocking flow now waits for
index to be allocated or a sem acquisition timeout before beginning the
timer for FW completion.

Kernel log example:
mlx5_core 0000:06:00.0: wait_func_handle_exec_timeout:1128:(pid 185911): cmd[-22]: CREATE_UCTX(0xa04) No done completion

Fixes: 8e715cd613a1 ("net/mlx5: Set command entry semaphore up once got index free")
Signed-off-by: Akiva Goldberger <agoldberger@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://lore.kernel.org/r/20240509112951.590184-5-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/cmd.c
include/linux/mlx5/driver.h