diff options
author | Dan Williams <dan.j.williams@intel.com> | 2009-11-19 19:10:37 -0500 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2009-11-20 01:21:03 -0500 |
commit | 7b3cc2b1fc2066391e498f3387204908c4eced21 (patch) | |
tree | 8a2bc28955710c580201046d04843773cb7d87a1 /drivers/dma/dmaengine.c | |
parent | 4499a24dec00e037da7d09caccad45e7594a9c19 (diff) |
async_tx: build-time toggling of async_{syndrome,xor}_val dma support
ioat3.2 does not support asynchronous error notifications which makes
the driver experience latencies when non-zero pq validate results are
expected. Provide a mechanism for turning off async_xor_val and
async_syndrome_val via Kconfig. This approach is generally useful for
any driver that specifies ASYNC_TX_DISABLE_CHANNEL_SWITCH and would like
to force the async_tx api to fall back to the synchronous path for
certain operations.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/dma/dmaengine.c')
-rw-r--r-- | drivers/dma/dmaengine.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c index b6442f09d0fe..8f99354082ce 100644 --- a/drivers/dma/dmaengine.c +++ b/drivers/dma/dmaengine.c | |||
@@ -632,16 +632,22 @@ static bool device_has_all_tx_types(struct dma_device *device) | |||
632 | #if defined(CONFIG_ASYNC_XOR) || defined(CONFIG_ASYNC_XOR_MODULE) | 632 | #if defined(CONFIG_ASYNC_XOR) || defined(CONFIG_ASYNC_XOR_MODULE) |
633 | if (!dma_has_cap(DMA_XOR, device->cap_mask)) | 633 | if (!dma_has_cap(DMA_XOR, device->cap_mask)) |
634 | return false; | 634 | return false; |
635 | |||
636 | #ifndef CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA | ||
635 | if (!dma_has_cap(DMA_XOR_VAL, device->cap_mask)) | 637 | if (!dma_has_cap(DMA_XOR_VAL, device->cap_mask)) |
636 | return false; | 638 | return false; |
637 | #endif | 639 | #endif |
640 | #endif | ||
638 | 641 | ||
639 | #if defined(CONFIG_ASYNC_PQ) || defined(CONFIG_ASYNC_PQ_MODULE) | 642 | #if defined(CONFIG_ASYNC_PQ) || defined(CONFIG_ASYNC_PQ_MODULE) |
640 | if (!dma_has_cap(DMA_PQ, device->cap_mask)) | 643 | if (!dma_has_cap(DMA_PQ, device->cap_mask)) |
641 | return false; | 644 | return false; |
645 | |||
646 | #ifndef CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA | ||
642 | if (!dma_has_cap(DMA_PQ_VAL, device->cap_mask)) | 647 | if (!dma_has_cap(DMA_PQ_VAL, device->cap_mask)) |
643 | return false; | 648 | return false; |
644 | #endif | 649 | #endif |
650 | #endif | ||
645 | 651 | ||
646 | return true; | 652 | return true; |
647 | } | 653 | } |