summaryrefslogtreecommitdiff
path: root/ipc/syscall.c
diff options
context:
space:
mode:
authorRobert Jarzmik <robert.jarzmik@free.fr>2016-07-11 00:50:49 +0300
committerVinod Koul <vinod.koul@intel.com>2016-07-23 13:37:29 +0300
commit7d604663255ac757ab4b0e17f533cba136486551 (patch)
tree593d64dd9bb2a23a7e53ae2a0a51f35ccc0b7af0 /ipc/syscall.c
parent0d605ba0b8ce7f5963124853774cc9bd84589a99 (diff)
downloadlinux-7d604663255ac757ab4b0e17f533cba136486551.tar.xz
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 'ipc/syscall.c')
0 files changed, 0 insertions, 0 deletions