linux/drivers/dma
Simon Guinot 97b0afba42 dmaengine: fix interrupt clearing for mv_xor
commit cc60f8878e upstream.

When using simultaneously the two DMA channels on a same engine, some
transfers are never completed. For example, an endless lock can occur
while writing heavily on a RAID5 array (with async-tx offload support
enabled).

Note that this issue can also be reproduced by using the DMA test
client.

On a same engine, the interrupt cause register is shared between two
DMA channels. This patch make sure that the cause bit is only cleared
for the requested channel.

Signed-off-by: Simon Guinot <sguinot@lacie.com>
Tested-by: Luc Saillard <luc@saillard.org>
Acked-by: saeed bishara <saeed.bishara@gmail.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-10-28 21:44:01 -07:00
..
ioat ioat: fix infinite timeout checking in ioat2_quiesce 2010-02-23 07:37:49 -08:00
ipu dma: fix ipu_idmac.c to not discard the last queued buffer 2009-05-12 14:41:48 -07:00
at_hdmac_regs.h at_hdmac: implement a private tx_list 2009-09-08 17:53:03 -07:00
at_hdmac.c dma: at_hdmac: correct incompatible type for argument 1 of 'spin_lock_bh' 2010-01-06 15:03:51 -08:00
dmaengine.c async_tx: build-time toggling of async_{syndrome,xor}_val dma support 2009-11-19 23:21:03 -07:00
dmatest.c Merge branch 'dmaengine' into async-tx-next 2009-09-08 17:55:21 -07:00
dw_dmac_regs.h dw_dmac: implement a private tx_list 2009-09-08 17:53:02 -07:00
dw_dmac.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx into for-linus 2009-09-23 18:31:11 +10:00
fsldma.c fsldma: Add DMA_SLAVE support 2009-09-08 17:53:04 -07:00
fsldma.h fsldma: split apart external pause and request count features 2009-09-08 17:53:04 -07:00
iop-adma.c Merge branch 'dmaengine' into async-tx-next 2009-09-08 17:55:21 -07:00
iovlock.c net_dma: poll for a descriptor after allocation failure 2009-09-08 17:38:54 -07:00
Kconfig async_tx: build-time toggling of async_{syndrome,xor}_val dma support 2009-11-19 23:21:03 -07:00
Makefile dmaengine: sh: Add Support SuperH DMA Engine driver 2009-09-08 17:56:02 -07:00
mv_xor.c dmaengine: fix interrupt clearing for mv_xor 2010-10-28 21:44:01 -07:00
mv_xor.h mv_xor: implement a private tx_list 2009-09-08 17:53:03 -07:00
shdma.c shdma: fix initialization error handling 2009-11-22 12:10:10 -07:00
shdma.h dmaengine: sh: Add Support SuperH DMA Engine driver 2009-09-08 17:56:02 -07:00
txx9dmac.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx into for-linus 2009-09-23 18:31:11 +10:00
txx9dmac.h txx9dmac: implement a private tx_list 2009-09-08 17:53:03 -07:00