[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