]> git.baikalelectronics.ru Git - kernel.git/commit
fsldma: fix "DMA halt timeout!" errors
authorIra Snyder <iws@ovro.caltech.edu>
Tue, 19 May 2009 22:42:13 +0000 (15:42 -0700)
committerLi Yang <leoli@freescale.com>
Fri, 22 May 2009 08:49:17 +0000 (16:49 +0800)
commit8e086323c0553b2f5d7c98fd60194979e92c40c4
tree4a48ab1154b7533dcaac831ff2dad0e10865efa1
parent456efdca637697de51ccb03fae12a74c53271673
fsldma: fix "DMA halt timeout!" errors

When using the DMA controller from multiple threads at the same time, it is
possible to get lots of "DMA halt timeout!" errors printed to the kernel
log.

This occurs due to a race between fsl_dma_memcpy_issue_pending() and the
interrupt handler, fsl_dma_chan_do_interrupt(). Both call the
fsl_chan_xfer_ld_queue() function, which does not protect against
concurrent accesses to dma_halt() and dma_start().

The existing spinlock is moved to cover the dma_halt() and dma_start()
functions. Testing shows that the "DMA halt timeout!" errors disappear.

Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu>
Signed-off-by: Li Yang <leoli@freescale.com>
drivers/dma/fsldma.c