diff options
author | Dan Williams <dan.j.williams@intel.com> | 2013-11-13 22:37:36 +0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2013-11-14 23:04:41 +0400 |
commit | 21e96c7313486390c694919522a76dfea0a86c59 (patch) | |
tree | 211439af0431a256def810a915e37ee6519ae4a6 /fs | |
parent | 5d48b9b5d80e3aa38a5161565398b1e48a650573 (diff) | |
download | linux-21e96c7313486390c694919522a76dfea0a86c59.tar.xz |
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>
Diffstat (limited to 'fs')
0 files changed, 0 insertions, 0 deletions