Skip to content

Commit

Permalink
vdpa/mlx5: fix interrupt trash that leads to crash
Browse files Browse the repository at this point in the history
[ upstream commit 66a439c ]

Disable interrupt unregister timeout to avoid invalid FD caused
interrupt thread segment fault.

Fixes: 62c8137 ("vdpa/mlx5: map doorbell")

Signed-off-by: Xueming Li <xuemingl@nvidia.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
  • Loading branch information
steevenlee authored and kevintraynor committed May 24, 2022
1 parent 78414da commit 879fb64
Showing 1 changed file with 8 additions and 12 deletions.
20 changes: 8 additions & 12 deletions drivers/vdpa/mlx5/mlx5_vdpa_virtq.c
Expand Up @@ -17,7 +17,7 @@


static void
mlx5_vdpa_virtq_handler(void *cb_arg)
mlx5_vdpa_virtq_kick_handler(void *cb_arg)
{
struct mlx5_vdpa_virtq *virtq = cb_arg;
struct mlx5_vdpa_priv *priv = virtq->priv;
Expand Down Expand Up @@ -59,20 +59,16 @@ static int
mlx5_vdpa_virtq_unset(struct mlx5_vdpa_virtq *virtq)
{
unsigned int i;
int retries = MLX5_VDPA_INTR_RETRIES;
int ret = -EAGAIN;

if (rte_intr_fd_get(virtq->intr_handle) != -1) {
while (retries-- && ret == -EAGAIN) {
if (rte_intr_fd_get(virtq->intr_handle) >= 0) {
while (ret == -EAGAIN) {
ret = rte_intr_callback_unregister(virtq->intr_handle,
mlx5_vdpa_virtq_handler,
virtq);
mlx5_vdpa_virtq_kick_handler, virtq);
if (ret == -EAGAIN) {
DRV_LOG(DEBUG, "Try again to unregister fd %d "
"of virtq %d interrupt, retries = %d.",
rte_intr_fd_get(virtq->intr_handle),
(int)virtq->index, retries);

DRV_LOG(DEBUG, "Try again to unregister fd %d of virtq %hu interrupt",
rte_intr_fd_get(virtq->intr_handle),
virtq->index);
usleep(MLX5_VDPA_INTR_RETRIES_USEC);
}
}
Expand Down Expand Up @@ -360,7 +356,7 @@ mlx5_vdpa_virtq_setup(struct mlx5_vdpa_priv *priv, int index)
goto error;

if (rte_intr_callback_register(virtq->intr_handle,
mlx5_vdpa_virtq_handler,
mlx5_vdpa_virtq_kick_handler,
virtq)) {
rte_intr_fd_set(virtq->intr_handle, -1);
DRV_LOG(ERR, "Failed to register virtq %d interrupt.",
Expand Down

0 comments on commit 879fb64

Please sign in to comment.