Re: [PATCH 2/3] vdpa/mlx5: Only return vq ready if vq is initialized
From: Jason Wang <hidden>
Date: 2021-06-01 02:18:17
Also in:
lkml
在 2021/6/1 上午12:04, Eli Cohen 写道:
quoted hunk
Only return the value of the ready field if the VQ is initialized in which case the value of the field is valid. Failing to do so can result in virtio_vdpa failing to load if the device was previously used by vhost_vdpa and the old values are ready. virtio_vdpa expects to find VQs in "not ready" state. Fixes: 1a86b377aa21 ("vdpa/mlx5: Add VDPA driver for supported mlx5 devices") Signed-off-by: Eli Cohen <redacted> --- drivers/vdpa/mlx5/net/mlx5_vnet.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c b/drivers/vdpa/mlx5/net/mlx5_vnet.c index 02a05492204c..f6b680d2ab1c 100644 --- a/drivers/vdpa/mlx5/net/mlx5_vnet.c +++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c@@ -1407,7 +1407,7 @@ static bool mlx5_vdpa_get_vq_ready(struct vdpa_device *vdev, u16 idx) struct mlx5_vdpa_net *ndev = to_mlx5_vdpa_ndev(mvdev); struct mlx5_vdpa_virtqueue *mvq = &ndev->vqs[idx]; - return mvq->ready; + return mvq->initialized && mvq->ready;
I think the more suitable fix is to reset mvq->ready during reset. The vq_ready should follow the queue_enable semantic in virtio-pci: " The device MUST present a 0 in queue_enable on reset. " Thanks
} static int mlx5_vdpa_set_vq_state(struct vdpa_device *vdev, u16 idx,
_______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization