[dpdk-stable] [PATCH 19.11] net/mlx5: free MR resource on device DMA unmap

Luca Boccassi bluca at debian.org
Tue Nov 24 12:06:00 CET 2020


On Mon, 2020-11-23 at 19:52 +0200, Jiawei Wang wrote:
> [ upstream commit 992e6df3dafebf0625a59a51136a5e07a361000f ]
> 
> mlx5 PMD created the MR (Memory Region) resource on the
> mlx5_dma_map call to make the memory available for DMA
> operations. On the mlx5_dma_unmap call the MR resource
> was not freed but inserted to MR Free list for further
> garbage collection.
> Actual MR resource destroying happened on device stop
> call. That caused the runtime out of memory in case of
> application performed multiple DMA map/unmap calls.
> 
> The fix immediately frees the MR resource on mlx5_dma_unmap
> call not engaging the list.
> 
> Fixes: 989e999d9305 ("net/mlx5: support PCI device DMA map and unmap")
> 
> Signed-off-by: Jiawei Wang <jiaweiw at nvidia.com>
> ---
>  drivers/net/mlx5/mlx5_mr.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/mlx5/mlx5_mr.c b/drivers/net/mlx5/mlx5_mr.c
> index 0d549b6..54a11bd 100644
> --- a/drivers/net/mlx5/mlx5_mr.c
> +++ b/drivers/net/mlx5/mlx5_mr.c
> @@ -1408,7 +1408,7 @@ struct mr_update_mp_data {
>  		return -1;
>  	}
>  	LIST_REMOVE(mr, mr);
> -	LIST_INSERT_HEAD(&sh->mr.mr_free_list, mr, mr);
> +	mr_free(mr);
>  	DEBUG("port %u remove MR(%p) from list", dev->data->port_id,
>  	      (void *)mr);
>  	mr_rebuild_dev_cache(sh);

Thanks, applied and pushed

-- 
Kind regards,
Luca Boccassi


More information about the stable mailing list