[dpdk-dev] [PATCH 1/2] vdpa/mlx5: workaround FW first completion in start

Maxime Coquelin maxime.coquelin at redhat.com
Wed Oct 13 11:55:58 CEST 2021


Hi Xueming,

On 9/23/21 10:17, Xueming Li wrote:
> After a vDPA application restart, qemu restores VQ with used and
> available index, new incoming packet triggers virtio driver to
> handle buffers. Under heavy traffic, no available buffer for
> firmware to receive new packets, no Rx interrupts generated,
> driver is stuck on endless interrupt waiting.
> 
> As a firmware workaround, this patch sends a notification after
> VQ setup to ask driver handling buffers and filling new buffers.
> 
> Signed-off-by: Xueming Li <xuemingl at nvidia.com>
> Reviewed-by: Matan Azrad <matan at nvidia.com>
> ---
>   drivers/vdpa/mlx5/mlx5_vdpa_virtq.c | 4 ++++
>   1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c b/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c
> index f530646058..71470d23d9 100644
> --- a/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c
> +++ b/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c
> @@ -4,6 +4,7 @@
>   #include <string.h>
>   #include <unistd.h>
>   #include <sys/mman.h>
> +#include <sys/eventfd.h>
>   
>   #include <rte_malloc.h>
>   #include <rte_errno.h>
> @@ -367,6 +368,9 @@ mlx5_vdpa_virtq_setup(struct mlx5_vdpa_priv *priv, int index)
>   		goto error;
>   	}
>   	virtq->stopped = false;
> +	/* Initial notification to ask qemu handling completed buffers. */
> +	if (virtq->eqp.cq.callfd != -1)
> +		eventfd_write(virtq->eqp.cq.callfd, (eventfd_t)1);
>   	DRV_LOG(DEBUG, "vid %u virtq %u was created successfully.", priv->vid,
>   		index);
>   	return 0;
> 

Maybe this patch should be backported to stable branch?
If so, could you reply with the Fixes tag so that I can add it while
applying?

Thanks,
Maxime



More information about the dev mailing list