Thread (74 messages) 74 messages, 7 authors, 2022-02-25

Re: [PATCH 22/22] mtd: rawnand: Use dma_alloc_noncoherent() for dma buffer

From: Christoph Hellwig <hch@lst.de>
Date: 2022-02-22 08:47:00
Also in: linux-crypto, linux-i2c, linux-mm, linux-s390, lkml

On Sat, Feb 19, 2022 at 11:18:24AM +0000, Hyeonggon Yoo wrote:
quoted
I think it would be better to still allocate the buffer at allocation
time and then just transfer ownership using dma_sync_single* in the I/O
path to avoid the GFP_ATOMIC allocation.
This driver allocates the buffer at initialization step and maps the buffer
for DMA_TO_DEVICE and DMA_FROM_DEVICE when processing IO.

But after making this driver to use dma_alloc_noncoherent(), remapping
dma_alloc_noncoherent()-ed buffer is strange So I just made it to allocate
the buffer in IO path.
You should not remap it.  Just use dma_sync_single* to transfer ownership.
Hmm.. for this specific case, What about allocating two buffers
for DMA_TO_DEVICE and DMA_FROM_DEVICE at initialization time?
That will work, but I don't see the benefit as you'd still need to call
dma_sync_single* before and after each data transfer.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help