linux/drivers/dma/ioat
Dan Williams 21e96c7313 ioatdma: fix selection of 16 vs 8 source path
When performing continuations there are implied sources that need to be
added to the source count. Quoting dma_set_maxpq:

/* dma_maxpq - reduce maxpq in the face of continued operations
 * @dma - dma device with PQ capability
 * @flags - to check if DMA_PREP_CONTINUE and DMA_PREP_PQ_DISABLE_P are set
 *
 * When an engine does not support native continuation we need 3 extra
 * source slots to reuse P and Q with the following coefficients:
 * 1/ {00} * P : remove P from Q', but use it as a source for P'
 * 2/ {01} * Q : use Q to continue Q' calculation
 * 3/ {00} * Q : subtract Q from P' to cancel (2)
 *
 * In the case where P is disabled we only need 1 extra source:
 * 1/ {01} * Q : use Q to continue Q' calculation
 */

...fix the selection of the 16 source path to take these implied sources
into account.

Note this also kills the BUG_ON(src_cnt < 9) check in
__ioat3_prep_pq16_lock().  Besides not accounting for implied sources
the check is redundant given we already made the path selection.

Cc: <stable@vger.kernel.org>
Cc: Dave Jiang <dave.jiang@intel.com>
Acked-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2013-11-14 11:04:41 -08:00
..
dca.c ioat/dca: Update DCA BIOS workarounds to use TAINT_FIRMWARE_WORKAROUND 2013-03-22 12:55:38 -04:00
dma_v2.c dmaengine: remove DMA unmap from drivers 2013-11-14 11:04:38 -08:00
dma_v2.h drivers/dma: remove unused support for MEMSET operations 2013-07-03 16:07:42 -07:00
dma_v3.c ioatdma: fix selection of 16 vs 8 source path 2013-11-14 11:04:41 -08:00
dma.c dmaengine: remove DMA unmap flags 2013-11-14 11:04:38 -08:00
dma.h dmaengine: remove DMA unmap from drivers 2013-11-14 11:04:38 -08:00
hw.h drivers/dma: remove unused support for MEMSET operations 2013-07-03 16:07:42 -07:00
Makefile drivers/dma/ioat: Use the ccflag-y instead of EXTRA_CFLAGS 2010-12-04 15:03:06 -08:00
pci.c ioatdma: Adding support for 16 src PQ ops and super extended descriptors 2013-04-15 22:46:15 +05:30
registers.h ioatdma: Adding write back descriptor error status support for ioatdma 3.3 2013-04-15 22:46:15 +05:30