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: Geetha sowjanya <gakula@marvell.com> Signed-off-by: Sunil Goutham <sgoutham@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
10df5a13ac
commit
73d33dbc07
1 changed files with 6 additions and 5 deletions
|
@ -64,8 +64,8 @@ static inline int qmem_alloc(struct device *dev, struct qmem **q,
|
||||||
|
|
||||||
qmem->entry_sz = entry_sz;
|
qmem->entry_sz = entry_sz;
|
||||||
qmem->alloc_sz = (qsize * entry_sz) + OTX2_ALIGN;
|
qmem->alloc_sz = (qsize * entry_sz) + OTX2_ALIGN;
|
||||||
qmem->base = dma_alloc_coherent(dev, qmem->alloc_sz,
|
qmem->base = dma_alloc_attrs(dev, qmem->alloc_sz, &qmem->iova,
|
||||||
&qmem->iova, GFP_KERNEL);
|
GFP_KERNEL, DMA_ATTR_FORCE_CONTIGUOUS);
|
||||||
if (!qmem->base)
|
if (!qmem->base)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
@ -84,9 +84,10 @@ static inline void qmem_free(struct device *dev, struct qmem *qmem)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (qmem->base)
|
if (qmem->base)
|
||||||
dma_free_coherent(dev, qmem->alloc_sz,
|
dma_free_attrs(dev, qmem->alloc_sz,
|
||||||
qmem->base - qmem->align,
|
qmem->base - qmem->align,
|
||||||
qmem->iova - qmem->align);
|
qmem->iova - qmem->align,
|
||||||
|
DMA_ATTR_FORCE_CONTIGUOUS);
|
||||||
devm_kfree(dev, qmem);
|
devm_kfree(dev, qmem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue