vdpa/mlx5: workaround queue stop with traffic
Checks
Commit Message
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>
---
drivers/vdpa/mlx5/mlx5_vdpa.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Comments
On 11/22/21 14:12, Matan Azrad wrote:
> 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>
> ---
> drivers/vdpa/mlx5/mlx5_vdpa.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/vdpa/mlx5/mlx5_vdpa.c b/drivers/vdpa/mlx5/mlx5_vdpa.c
> index b9e84dd9bf..8dfaba791d 100644
> --- a/drivers/vdpa/mlx5/mlx5_vdpa.c
> +++ b/drivers/vdpa/mlx5/mlx5_vdpa.c
> @@ -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);
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Thanks,
Maxime
> -----Original Message-----
> From: Matan Azrad <matan@nvidia.com>
> Sent: Monday, November 22, 2021 9:13 PM
> To: Maxime Coquelin <maxime.coquelin@redhat.com>
> Cc: dev@dpdk.org; stable@dpdk.org; Xueming Li <xuemingl@nvidia.com>
> Subject: [PATCH] vdpa/mlx5: workaround queue stop with traffic
>
> 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>
> ---
> --
> 2.25.1
Applied to next-virtio/main, thanks
@@ -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);