diff options
author | Robert Jarzmik | 2016-07-10 23:50:49 +0200 |
---|---|---|
committer | Vinod Koul | 2016-07-23 12:37:29 +0200 |
commit | 7d604663255ac757ab4b0e17f533cba136486551 (patch) | |
tree | 593d64dd9bb2a23a7e53ae2a0a51f35ccc0b7af0 /tools/perf/builtin-kmem.c | |
parent | dmaengine: imx-sdma: remove assignment never used (diff) | |
download | kernel-qcow2-linux-7d604663255ac757ab4b0e17f533cba136486551.tar.gz kernel-qcow2-linux-7d604663255ac757ab4b0e17f533cba136486551.tar.xz kernel-qcow2-linux-7d604663255ac757ab4b0e17f533cba136486551.zip |
dmaengine: pxa_dma: implement device_synchronize
Implement the function which wait until a dma channel is stopped to have
a synchronization point.
This also protects the pxad_remove() from races, such as spurious
interrupts while removing the driver, because :
- as long as there is one dma channel requested, ie. dma_chan_get() but
no dma_chan_put(), the try_module_get() of dma_chan_get() prevents
the remove() routine from running
- when the last channel is released, ie. the last dma_chan_put() is
called, if there is a running DMA, pxad_synchronize() is called
- pxad_synchronize() waits for the channel to stop, which in turn
ensures on pxa architecture that the interrupt cannot be fired anymore
Reported-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'tools/perf/builtin-kmem.c')
0 files changed, 0 insertions, 0 deletions