Commit 73d33dbc authored by Geetha sowjanya's avatar Geetha sowjanya Committed by David S. Miller
Browse files

octeontx2-af: Use DMA_ATTR_FORCE_CONTIGUOUS attribute in DMA alloc



CN10K platform requires physically contiguous memory for LMTST
operations which goes beyond a single page. Not having physically
contiguous memory will result in HW fetching transmit descriptors from
a wrong memory location.

Hence use DMA_ATTR_FORCE_CONTIGUOUS attribute while allocating
LMTST regions.

Signed-off-by: default avatarGeetha sowjanya <gakula@marvell.com>
Signed-off-by: default avatarSunil Goutham <sgoutham@marvell.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 10df5a13
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -64,8 +64,8 @@ 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_coherent(dev, qmem->alloc_sz,
					 &qmem->iova, GFP_KERNEL);
	qmem->base = dma_alloc_attrs(dev, qmem->alloc_sz, &qmem->iova,
				     GFP_KERNEL, DMA_ATTR_FORCE_CONTIGUOUS);
	if (!qmem->base)
		return -ENOMEM;

@@ -84,9 +84,10 @@ static inline void qmem_free(struct device *dev, struct qmem *qmem)
		return;

	if (qmem->base)
		dma_free_coherent(dev, qmem->alloc_sz,
		dma_free_attrs(dev, qmem->alloc_sz,
			       qmem->base - qmem->align,
				  qmem->iova - qmem->align);
			       qmem->iova - qmem->align,
			       DMA_ATTR_FORCE_CONTIGUOUS);
	devm_kfree(dev, qmem);
}