• I
    fsldma: fix "DMA halt timeout!" errors · 138ef018
    Ira Snyder 提交于
    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: NIra W. Snyder <iws@ovro.caltech.edu>
    Signed-off-by: NLi Yang <leoli@freescale.com>
    138ef018
fsldma.c 27.4 KB