From: Sunil Goutham 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 Signed-off-by: Ratheesh Kannoth --- 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