[PATCH 0/7] fsl-dma: fixes for Freescale DMA driver

Ira W. Snyder iws at ovro.caltech.edu
Wed Aug 1 09:45:45 EST 2012


From: "Ira W. Snyder" <iws at ovro.caltech.edu>

Hello everyone,

This is my alternative (simpler) attempt at solving the problems reported
by Qiang Liu with the async_tx API and MD RAID hardware offload support
when using the Freescale DMA driver.

The bug is caused by this driver freeing descriptors before they have been
ACKed by software using the async_tx API.

I don't like Qiang Liu's code to check where the hardware is in the
processing of the descriptor chain, and try to free a partial list of
descriptors. This was a source of bugs in this driver before I fixed them
several years ago.

Instead, the DMA controller raises an interrupt every time it has completed
a descriptor chain. This means it is ready for new descriptors: no need to
try and figure out where it is in the middle of a descriptor chain.

Qiang Liu: I do not have a hardware setup capable of using MD RAID. Please
test these patches to see if they fix the bug you reported. You may use
these patches as-is, or build upon them.

I have tested this using the drivers/dma/dmatest.c driver, as well as the
CARMA drivers. There are no regressions that I can find.

[  355.069679] dma0chan3-copy0: terminating after 100000 tests, 0 failures (status 0)
[  355.192278] dma0chan2-copy0: terminating after 100000 tests, 0 failures (status 0)

Ira W. Snyder (5):
  fsl-dma: minimize locking overhead
  fsl-dma: add fsl_dma_free_descriptor() to reduce code duplication
  fsl-dma: move functions to avoid forward declarations
  fsl-dma: fix support for async_tx API
  carma: remove unnecessary DMA_INTERRUPT capability

Qiang Liu (2):
  fsl-dma: remove attribute DMA_INTERRUPT of dmaengine
  fsl-dma: fix a warning of unitialized cookie

 drivers/dma/fsldma.c                    |  318 +++++++++++++++----------------
 drivers/dma/fsldma.h                    |    1 +
 drivers/misc/carma/carma-fpga-program.c |    1 -
 drivers/misc/carma/carma-fpga.c         |    3 +-
 4 files changed, 159 insertions(+), 164 deletions(-)

-- 
1.7.8.6



More information about the Linuxppc-dev mailing list