public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/20] DMA: DMA unmap fixes
@ 2012-11-05 10:00 Bartlomiej Zolnierkiewicz
  2012-11-05 10:00 ` [PATCH 01/20] async_tx: add missing DMA unmap to async_memcpy() Bartlomiej Zolnierkiewicz
                   ` (22 more replies)
  0 siblings, 23 replies; 27+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2012-11-05 10:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: djbw, dwmw2, hskinnemoen, iws, vinod.koul, vipin.kumar, t.figa,
	kyungmin.park, Bartlomiej Zolnierkiewicz

Hi,

Currently DMA subsystem does DMA mapping in the core code and DMA
unmapping is done by device drivers.  This is counterintuitive,
causes code duplication and subtle errors (some drivers like PL330
one don't implement DMA unmapping code).  The following patchset
modifies DMA subsystem to do DMA unmapping in the core code.
It results in simpler code, less code duplication (more than 400
LOC is gone) and fixes the issue with missing DMA unmapping code
in some drivers.  Additionally many cases when DMA wasn't unmapped
on a failure are also fixed.


patches #1-3 add missing DMA unmap on failure to async_tx core
code (async_memcpy()), ioat and fsmc_nand drivers

patch #4 fixes DMA flags used by carma-fpga driver

patches #5-7 fix core code and dmatest driver to DMA unmap for
MEMCPY operations 

patch #8 adds missing DMA unmap on failure to ioat3 driver

patch #9 fixes build for async_memset.c

patch #10 adds missing DMA unmap on failure to async tx core
code (async_memset())

patches #11-18 fix async_tx core code and dmatest driver to do
DMA unmap for MEMSET, XOR, XOR_VAL, PQ and PQ_VAL operations

patches #19-20 remove no longer needed DMA unmap code from
device drivers and DMA unmap flags from code code


This patchset was tested on PL330 DMA controller using MEMCPY
operations.  It would be great if somebody could test it on
more advanced controller capable of MEMSET, XOR, XOR_VAL,
PQ and PQ_VAL operations (especially since the conversion of
XOR and PQ operations was not obvious).


Bartlomiej Zolnierkiewicz (20):
  async_tx: add missing DMA unmap to async_memcpy()
  ioat: add missing DMA unmap to ioat_dma_self_test()
  mtd: fsmc_nand: add missing DMA unmap to dma_xfer()
  carma-fpga: pass correct flags to ->device_prep_dma_memcpy()
  dmatest: do DMA unmap for MEMCPY operations
  DMA: do DMA unmap in core for MEMCPY operations
  async_tx: do DMA unmap in core for MEMCPY operations
  ioat3: add missing DMA unmap to ioat_xor_val_self_test()
  async_tx: fix build for async_memset
  async_tx: add missing DMA unmap to async_memset()
  async_tx: do DMA unmap in core for MEMSET operations
  dmatest: do DMA unmap for XOR operations
  async_tx: do DMA unmap in core for XOR operations
  async_tx: do DMA unmap in core for XOR_VAL operations
  dmatest: do DMA unmap for PQ operations
  async_tx: do DMA unmap in async_raid6_recov.c for PQ operations
  async_tx: do DMA unmap in core for PQ operations
  async_tx: do DMA unmap in core for PQ_VAL operations
  DMA: remove DMA unmap from drivers
  DMA: remove DMA unmap flags

 arch/arm/include/asm/hardware/iop3xx-adma.h |  30 ----
 arch/arm/mach-iop13xx/include/mach/adma.h   |  26 ---
 crypto/async_tx/async_memcpy.c              |  27 ++-
 crypto/async_tx/async_memset.c              |  23 ++-
 crypto/async_tx/async_pq.c                  | 129 +++++++++----
 crypto/async_tx/async_raid6_recov.c         |  42 ++++-
 crypto/async_tx/async_tx.c                  |  25 ++-
 crypto/async_tx/async_xor.c                 |  98 +++++++---
 drivers/ata/pata_arasan_cf.c                |   3 +-
 drivers/dma/amba-pl08x.c                    |  31 ----
 drivers/dma/at_hdmac.c                      |  25 ---
 drivers/dma/dmaengine.c                     |  59 +++++-
 drivers/dma/dmatest.c                       |  14 +-
 drivers/dma/dw_dmac.c                       |  20 ---
 drivers/dma/ep93xx_dma.c                    |  32 +---
 drivers/dma/fsldma.c                        |  16 --
 drivers/dma/ioat/dma.c                      |  28 +--
 drivers/dma/ioat/dma.h                      |  12 --
 drivers/dma/ioat/dma_v2.c                   |   1 -
 drivers/dma/ioat/dma_v3.c                   | 179 +++++-------------
 drivers/dma/iop-adma.c                      |  70 +-------
 drivers/dma/mv_xor.c                        |  45 +----
 drivers/dma/ppc4xx/adma.c                   | 270 ----------------------------
 drivers/dma/timb_dma.c                      |  36 ----
 drivers/dma/txx9dmac.c                      |  24 ---
 drivers/media/platform/m2m-deinterlace.c    |   3 +-
 drivers/media/platform/timblogiw.c          |   2 +-
 drivers/misc/carma/carma-fpga.c             |   3 +-
 drivers/mtd/nand/atmel_nand.c               |   3 +-
 drivers/mtd/nand/fsmc_nand.c                |  20 ++-
 drivers/net/ethernet/micrel/ks8842.c        |   6 +-
 drivers/spi/spi-dw-mid.c                    |   4 +-
 include/linux/async_tx.h                    |   4 +
 include/linux/dmaengine.h                   |  34 ++--
 34 files changed, 446 insertions(+), 898 deletions(-)

-- 
1.8.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2012-11-30 11:07 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-05 10:00 [PATCH 00/20] DMA: DMA unmap fixes Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 01/20] async_tx: add missing DMA unmap to async_memcpy() Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 02/20] ioat: add missing DMA unmap to ioat_dma_self_test() Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 03/20] mtd: fsmc_nand: add missing DMA unmap to dma_xfer() Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 04/20] carma-fpga: pass correct flags to ->device_prep_dma_memcpy() Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 05/20] dmatest: do DMA unmap for MEMCPY operations Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 06/20] DMA: do DMA unmap in core " Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 07/20] async_tx: " Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 08/20] ioat3: add missing DMA unmap to ioat_xor_val_self_test() Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 09/20] async_tx: fix build for async_memset Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 10/20] async_tx: add missing DMA unmap to async_memset() Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 11/20] async_tx: do DMA unmap in core for MEMSET operations Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 12/20] dmatest: do DMA unmap for XOR operations Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 13/20] async_tx: do DMA unmap in core " Bartlomiej Zolnierkiewicz
2012-11-07 20:56   ` Dan Williams
2012-11-19  9:52   ` Dan Williams
2012-11-05 10:00 ` [PATCH 14/20] async_tx: do DMA unmap in core for XOR_VAL operations Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 15/20] dmatest: do DMA unmap for PQ operations Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 16/20] async_tx: do DMA unmap in async_raid6_recov.c " Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 17/20] async_tx: do DMA unmap in core " Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 18/20] async_tx: do DMA unmap in core for PQ_VAL operations Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 19/20] DMA: remove DMA unmap from drivers Bartlomiej Zolnierkiewicz
2012-11-05 10:00 ` [PATCH 20/20] DMA: remove DMA unmap flags Bartlomiej Zolnierkiewicz
2012-11-05 19:34 ` [PATCH 00/20] DMA: DMA unmap fixes Ira W. Snyder
2012-11-06 10:12 ` Tomasz Figa
2012-11-07 20:40 ` Dan Williams
2012-11-30 10:57   ` Bartlomiej Zolnierkiewicz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox