]> git.droids-corp.org - dpdk.git/commitdiff
vdpa/mlx5: workaround queue stop with traffic
authorMatan Azrad <matan@nvidia.com>
Mon, 22 Nov 2021 13:12:35 +0000 (15:12 +0200)
committerChenbo Xia <chenbo.xia@intel.com>
Thu, 27 Jan 2022 04:44:49 +0000 (05:44 +0100)
When the event thread polls traffic and a virtq is stopping, the FW loses
synchronization in the virtq indexes.

It causes LM failure on synchronization between the HOST indexes to
the GUEST indexes.

Unset the event thread before the queue stop in the LM process.

Fixes: 31b9c29c86af ("vdpa/mlx5: support close and config operations")
Cc: stable@dpdk.org
Signed-off-by: Matan Azrad <matan@nvidia.com>
Acked-by: Xueming Li <xuemingl@nvidia.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
drivers/vdpa/mlx5/mlx5_vdpa.c

index b9e84dd9bfc560443441976a497df876c93ea7c8..8dfaba791dc2605fa04af5cbb8b05fa62e7206e8 100644 (file)
@@ -250,10 +250,10 @@ mlx5_vdpa_dev_close(int vid)
                DRV_LOG(ERR, "Invalid vDPA device: %s.", vdev->device->name);
                return -1;
        }
-       if (priv->configured)
-               ret |= mlx5_vdpa_lm_log(priv);
        mlx5_vdpa_err_event_unset(priv);
        mlx5_vdpa_cqe_event_unset(priv);
+       if (priv->configured)
+               ret |= mlx5_vdpa_lm_log(priv);
        mlx5_vdpa_steer_unset(priv);
        mlx5_vdpa_virtqs_release(priv);
        mlx5_vdpa_event_qp_global_release(priv);