aboutsummaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2013-11-13 10:37:36 -0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-12-04 10:56:45 -0800
commit36dabd38dc3432fdb0c922357a60f9331c9334f4 (patch)
tree220592220e801fe9e464c5424d52fa2fea08758e /block
parentb8e15d48cdbbac38b5815b95dd99ac85a0b05edb (diff)
downloadlinux-linaro-stable-36dabd38dc3432fdb0c922357a60f9331c9334f4.tar.gz
ioatdma: fix selection of 16 vs 8 source path
commit 21e96c7313486390c694919522a76dfea0a86c59 upstream. 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: Dave Jiang <dave.jiang@intel.com> Acked-by: Dave Jiang <dave.jiang@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'block')
0 files changed, 0 insertions, 0 deletions