summaryrefslogtreecommitdiffstats
path: root/include/linux/dmaengine.h
diff options
context:
space:
mode:
authorRobert Jarzmik <robert.jarzmik@free.fr>2015-05-26 23:06:33 +0200
committerVinod Koul <vinod.koul@intel.com>2015-06-17 22:15:59 +0530
commitb9855f03d560d351e95301b9de0bc3cad3b31fe9 (patch)
treee13e2f35ed86239fdd3fbf882023daff6802ca5c /include/linux/dmaengine.h
parente1031dc1f7ba5c8724ba211062134076df292791 (diff)
downloadtalos-obmc-linux-b9855f03d560d351e95301b9de0bc3cad3b31fe9.tar.gz
talos-obmc-linux-b9855f03d560d351e95301b9de0bc3cad3b31fe9.zip
dmaengine: virt-dma: don't always free descriptor upon completion
This patch attempts to enhance the case of a transfer submitted multiple times, and where the cost of creating the descriptors chain is not negligible. This happens with big video buffers (several megabytes, ie. several thousands of linked descriptors in one scatter-gather list). In these cases, a video driver would want to do : - tx = dmaengine_prep_slave_sg() - dma_engine_submit(tx); - dma_async_issue_pending() - wait for video completion - read video data (or not, skipping a frame is also possible) - dma_engine_submit(tx) => here, the descriptors chain recalculation will take time => the dma coherent allocation over and over might create holes in the dma pool, which is counter-productive. - dma_async_issue_pending() - etc ... In order to cope with this case, virt-dma is modified to prevent freeing the descriptors upon completion if DMA_CTRL_ACK flag is set in the transfer. Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'include/linux/dmaengine.h')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud