Thread (28 messages) 28 messages, 5 authors, 2012-01-19

[PATCH 7/8] dmaengine/dw_dmac: Unmap all memory buffers after completion of slave transfers

From: Russell King - ARM Linux <hidden>
Date: 2012-01-16 10:55:17
Also in: lkml

On Mon, Jan 16, 2012 at 03:20:35PM +0530, Viresh Kumar wrote:
Currently, after completion of transfer, source address or destination address
of only the first LLI descriptor is unmapped. And length passed for unmap is
total length of all descriptors in the list. Which means unmapping code assumed
that the memory buffers pointed to by the descriptors will be physically
contiguous, which might not be the case. It is possible for other drivers to
pass sglist to slave_sg(), in which all buffers are scattered throughout the
memory.

This patch intends to fix this wrong expectation of dw_dmac. Now, first desc
will not contain total length of transfer. But individual descriptors will
contain their individual lengths. Finally, we will call unmap for all
descriptors.
Note that DMA engine drivers are not responsible for unmapping the buffers
when the transfer completes - that is the responsibility of the caller.

The automatic buffer unmapping is required for the async_tx APIs and
offload APIs.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help