[PATCH net] octeontx2: use GFP_ATOMIC for QMEM dma_alloc_attrs

Ratheesh Kannoth posted 1 patch 1 month, 1 week ago
drivers/net/ethernet/marvell/octeontx2/af/common.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH net] octeontx2: use GFP_ATOMIC for QMEM dma_alloc_attrs
Posted by Ratheesh Kannoth 1 month, 1 week ago
From: Sunil Goutham <sgoutham@marvell.com>

Queue context memory for NIX/NPA and other qmem_alloc() users in the
AF and NIC drivers is allocated via dma_alloc_attrs() with
GFP_KERNEL. On platforms with CMA enabled, each attached interface can
consume a large contiguous allocation from the CMA pool, making CMA
sizing grow with the number of enabled interfaces.

Use GFP_ATOMIC for the DMA backing allocation in qmem_alloc() to reduce
pressure on the CMA pool when many interfaces are enabled.

Fixes: 73d33dbc0723 ("octeontx2-af: Use DMA_ATTR_FORCE_CONTIGUOUS attribute in DMA alloc")
Signed-off-by: Sunil Goutham <sgoutham@marvell.com>
Signed-off-by: Ratheesh Kannoth <rkannoth@marvell.com>
---
 drivers/net/ethernet/marvell/octeontx2/af/common.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/marvell/octeontx2/af/common.h b/drivers/net/ethernet/marvell/octeontx2/af/common.h
index 779413a383b7..ff5d66dd10f3 100644
--- a/drivers/net/ethernet/marvell/octeontx2/af/common.h
+++ b/drivers/net/ethernet/marvell/octeontx2/af/common.h
@@ -61,7 +61,7 @@ static inline int qmem_alloc(struct device *dev, struct qmem **q,
 	qmem->entry_sz = entry_sz;
 	qmem->alloc_sz = (qsize * entry_sz) + OTX2_ALIGN;
 	qmem->base = dma_alloc_attrs(dev, qmem->alloc_sz, &qmem->iova,
-				     GFP_KERNEL, DMA_ATTR_FORCE_CONTIGUOUS);
+				     GFP_ATOMIC, DMA_ATTR_FORCE_CONTIGUOUS);
 	if (!qmem->base)
 		return -ENOMEM;
 
-- 
2.43.0
Re: [PATCH net] octeontx2: use GFP_ATOMIC for QMEM dma_alloc_attrs
Posted by Ratheesh Kannoth 1 month ago
On 2026-08-20 at 14:23:47, Ratheesh Kannoth (rkannoth@marvell.com) wrote:
> From: Sunil Goutham <sgoutham@marvell.com>
>
> Queue context memory for NIX/NPA and other qmem_alloc() users in the
> AF and NIC drivers is allocated via dma_alloc_attrs() with
> GFP_KERNEL. On platforms with CMA enabled, each attached interface can
> consume a large contiguous allocation from the CMA pool, making CMA
> sizing grow with the number of enabled interfaces.
>
> Use GFP_ATOMIC for the DMA backing allocation in qmem_alloc() to reduce
> pressure on the CMA pool when many interfaces are enabled.
>
> Fixes: 73d33dbc0723 ("octeontx2-af: Use DMA_ATTR_FORCE_CONTIGUOUS attribute in DMA alloc")
> Signed-off-by: Sunil Goutham <sgoutham@marvell.com>
> Signed-off-by: Ratheesh Kannoth <rkannoth@marvell.com>
> ---
>  drivers/net/ethernet/marvell/octeontx2/af/common.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/marvell/octeontx2/af/common.h b/drivers/net/ethernet/marvell/octeontx2/af/common.h
> index 779413a383b7..ff5d66dd10f3 100644
> --- a/drivers/net/ethernet/marvell/octeontx2/af/common.h
> +++ b/drivers/net/ethernet/marvell/octeontx2/af/common.h
> @@ -61,7 +61,7 @@ static inline int qmem_alloc(struct device *dev, struct qmem **q,
>  	qmem->entry_sz = entry_sz;
>  	qmem->alloc_sz = (qsize * entry_sz) + OTX2_ALIGN;
>  	qmem->base = dma_alloc_attrs(dev, qmem->alloc_sz, &qmem->iova,
> -				     GFP_KERNEL, DMA_ATTR_FORCE_CONTIGUOUS);
> +				     GFP_ATOMIC, DMA_ATTR_FORCE_CONTIGUOUS);
>  	if (!qmem->base)
>  		return -ENOMEM;
>
> --
> 2.43.0
>

Will address sashiko comments in v2

pw-bot: changes-requested