linux-stable/drivers/dma/ioat
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
..
dca.c ioat: Do not enable DCA if tag map is invalid 2012-11-15 05:20:01 -08:00
dma.c ioat: add missing DMA unmap to ioat_dma_self_test() 2013-01-07 22:04:58 -08:00
dma.h ioatdma: fix race between updating ioat->head and IOAT_COMPLETION_PENDING 2013-02-12 08:27:21 -08:00
dma_v2.c ioatdma: fix race between updating ioat->head and IOAT_COMPLETION_PENDING 2013-02-12 08:27:21 -08:00
dma_v2.h ioat: ring size variables need to be 32bit to avoid overflow 2012-04-05 15:22:58 -07:00
dma_v3.c ioatdma: fix race between updating ioat->head and IOAT_COMPLETION_PENDING 2013-02-12 08:27:21 -08:00
hw.h ioat: Add alignment workaround for IVB platforms 2013-01-07 22:05:13 -08:00
Makefile drivers/dma/ioat: Use the ccflag-y instead of EXTRA_CFLAGS 2010-12-04 15:03:06 -08:00
pci.c ioat: Add alignment workaround for IVB platforms 2013-01-07 22:05:13 -08:00
registers.h