linux/drivers/dma
Dave Jiang 4dec23d771 ioatdma: fix race between updating ioat->head and IOAT_COMPLETION_PENDING
There is a race that can hit during __cleanup() when the ioat->head pointer is
incremented during descriptor submission. The __cleanup() can clear the
PENDING flag when it does not see any active descriptors. This causes new
submitted descriptors to be ignored because the COMPLETION_PENDING flag is
cleared. This was introduced when code was adapted from ioatdma v1 to ioatdma
v2. For v2 and v3, IOAT_COMPLETION_PENDING flag will be abandoned and a new
flag IOAT_CHAN_ACTIVE will be utilized. This flag will also be protected under
the prep_lock when being modified in order to avoid the race.

Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Dan Williams <djbw@fb.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2013-02-12 08:27:21 -08:00
..
ioat ioatdma: fix race between updating ioat->head and IOAT_COMPLETION_PENDING 2013-02-12 08:27:21 -08:00
ipu dma: ipu_idmac: reuse is_slave_direction helper 2013-01-12 05:07:22 -08:00
ppc4xx dma: remove use of __devinit 2012-11-28 12:42:36 -08:00
sh dma: sh/shdma-base.c: remove unnecessary null pointer check 2013-01-20 05:49:40 -08:00
amba-pl08x.c pl080.h: moved from arm/include/asm/hardware to include/linux/amba/ 2013-01-13 05:19:45 -08:00
at_hdmac_regs.h dma: Convert dev_printk(KERN_<LEVEL> to dev_<level>( 2013-01-07 22:04:56 -08:00
at_hdmac.c dma: at_hdmac: check direction properly for cyclic transfers 2013-01-12 05:07:21 -08:00
coh901318_lli.c dmaengine: Use sg_dma_address instead of sg_phys 2012-05-11 12:04:38 +05:30
coh901318_lli.h
coh901318.c dma: coh901318: use devm allocation 2012-06-14 08:42:26 +05:30
dmaengine.c dmaengine: add cpu_relax() to busy-loop in dma_sync_wait() 2013-01-07 22:05:11 -08:00
dmaengine.h
dmatest.c dmaengine/dmatest: terminate transfers only in case of errors 2013-01-07 22:05:07 -08:00
dw_dmac_regs.h dw_dmac: return proper residue value 2013-01-28 04:04:50 -08:00
dw_dmac.c dw_dmac: add support for Lynxpoint DMA controllers 2013-02-12 08:14:36 -08:00
edma.c dma: edma: fix slave config dependency on direction 2013-01-20 04:04:29 -08:00
ep93xx_dma.c dma: ep93xx_dma: reuse is_slave_direction helper 2013-01-12 05:07:22 -08:00
fsldma.c dma: remove use of __devinit 2012-11-28 12:42:36 -08:00
fsldma.h
imx-dma.c Merge branch 'arm-next' of git://git.xilinx.com/linux-xlnx into next/cleanup 2012-11-06 07:51:06 -08:00
imx-sdma.c dma: imx-sdma: remove unneeded mach/hardware.h inclusion 2012-10-15 10:03:13 +08:00
intel_mid_dma_regs.h dma: fix comments 2012-09-01 08:57:12 -07:00
intel_mid_dma.c dma: remove use of __devinit 2012-11-28 12:42:36 -08:00
iop-adma.c dma: Convert dev_printk(KERN_<LEVEL> to dev_<level>( 2013-01-07 22:04:56 -08:00
iovlock.c
Kconfig dmaengine: sirf: enable the driver support new SiRFmarco SoC 2013-01-07 22:05:03 -08:00
Makefile dmaengine: mmp-pdma support 2012-09-14 08:14:07 +05:30
mmp_pdma.c dma: remove unnecessary null pointer check in mmp_pdma.c 2013-01-20 05:49:40 -08:00
mmp_tdma.c dma: remove use of __devinit 2012-11-28 12:42:36 -08:00
mpc512x_dma.c dma: remove use of __devinit 2012-11-28 12:42:36 -08:00
mv_xor.c dma: Convert dev_printk(KERN_<LEVEL> to dev_<level>( 2013-01-07 22:04:56 -08:00
mv_xor.h dma: mv_xor: clear the window override control registers 2012-11-22 18:16:37 +01:00
mxs-dma.c dma: mxs-dma: Fix build warnings with W=1 2013-01-08 07:35:27 -08:00
omap-dma.c ARM: OMAP: Move plat-omap/dma-omap.h to include/linux/omap-dma.h 2012-11-30 08:41:50 -08:00
pch_dma.c pch_dma: use module_pci_driver to simplify the code 2013-01-06 20:57:46 -08:00
pl330.c DMA: PL330: Use devm_* functions 2013-01-07 22:05:04 -08:00
sa11x0-dma.c dma: remove use of __devinit 2012-11-28 12:42:36 -08:00
sirf-dma.c DMAEngine: sirf: lock the shared registers access in sirfsoc_dma_terminate_all 2013-01-28 01:44:46 -08:00
ste_dma40_ll.c dmaengine: ste_dma40: minor cosmetic fixes 2013-01-14 10:51:01 +01:00
ste_dma40_ll.h dmaengine: ste_dma40: support more than 128 event lines 2013-01-14 10:50:48 +01:00
ste_dma40.c Merge tag 'ux500-dma40' of //git.linaro.org/people/fabiobaltieri/linux.git 2013-01-21 07:09:34 -08:00
tegra20-apb-dma.c dma: tegra: add support for Tegra114 SoC 2013-01-08 02:53:29 -08:00
timb_dma.c dma: remove use of __devinit 2012-11-28 12:42:36 -08:00
TODO
txx9dmac.c dmaengine: add context parameter to prep_slave_sg and prep_dma_cyclic 2012-03-21 19:20:23 +05:30
txx9dmac.h
virt-dma.c dmaengine: virt-dma: add support for cyclic DMA periodic callbacks 2012-07-01 14:15:23 +01:00
virt-dma.h dmaengine: virt-dma: add support for cyclic DMA periodic callbacks 2012-07-01 14:15:23 +01:00