1. 22 5月, 2009 4 次提交
    • I
      fsldma: fix infinite loop on multi-descriptor DMA chain completion · bcfb7465
      Ira Snyder 提交于
      When creating a DMA transaction with multiple descriptors, the async_tx
      cookie is set to 0 for each descriptor in the chain, excluding the last
      descriptor, whose cookie is set to -EBUSY.
      
      When fsl_dma_tx_submit() is run, it only assigns a cookie to the first
      descriptor. All of the remaining descriptors keep their original value,
      including the last descriptor, which is set to -EBUSY.
      
      After the DMA completes, the driver will update the last completed cookie
      to be -EBUSY, which is an error code instead of a valid cookie. This causes
      dma_async_is_complete() to always return DMA_IN_PROGRESS.
      
      This causes the fsldma driver to never cleanup the queue of link
      descriptors, and the driver will re-run the DMA transaction on the hardware
      each time it receives the End-of-Chain interrupt. This causes an infinite
      loop.
      
      With this patch, fsl_dma_tx_submit() is changed to assign a cookie to every
      descriptor in the chain. The rest of the code then works without problems.
      Signed-off-by: NIra W. Snyder <iws@ovro.caltech.edu>
      Signed-off-by: NLi Yang <leoli@freescale.com>
      bcfb7465
    • 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
    • R
      fsldma: fix check on potential fdev->chan[] overflow · f47edc6d
      Roel Kluin 提交于
      Fix the check of potential array overflow when using corrupted channel
      device tree nodes.
      Signed-off-by: NRoel Kluin <roel.kluin@gmail.com>
      Signed-off-by: NLi Yang <leoli@freescale.com>
      f47edc6d
    • L
      fsldma: update mailling list address in MAINTAINERS · 0899d634
      Li Yang 提交于
      linuxppc-embedded has been merged into linuxppc-dev.
      Signed-off-by: NLi Yang <leoli@freescale.com>
      0899d634
  2. 21 5月, 2009 9 次提交
  3. 20 5月, 2009 16 次提交
  4. 19 5月, 2009 11 次提交