fsl_qdma_data_validation() runs on every completion. It is a
byte-by-byte software compare of the transferred data, which belongs to
debugging and not to the datapath, where it costs a read-back and a
compare of every descriptor that completes.

Gate it behind s_data_validation, which is off by default, so the
compare is skipped unless it is explicitly asked for.

Fixes: f1d30e2786b6 ("dma/dpaa: refactor driver")
Cc: [email protected]

Signed-off-by: Gagandeep Singh <[email protected]>
---
 drivers/dma/dpaa/dpaa_qdma.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/dma/dpaa/dpaa_qdma.c b/drivers/dma/dpaa/dpaa_qdma.c
index 0234042ded..4701432d09 100644
--- a/drivers/dma/dpaa/dpaa_qdma.c
+++ b/drivers/dma/dpaa/dpaa_qdma.c
@@ -11,6 +11,7 @@
 
 static uint32_t s_sg_max_entry_sz = 2000;
 static bool s_hw_err_check;
+static bool s_data_validation;
 
 #define DPAA_DMA_ERROR_CHECK "dpaa_dma_err_check"
 
@@ -392,6 +393,9 @@ fsl_qdma_data_validation(struct fsl_qdma_desc *desc[],
        char err_msg[512];
        int offset;
 
+       if (likely(!s_data_validation))
+               return;
+
 
        offset = sprintf(err_msg, "Fatal TC%d/queue%d: ",
                fsl_queue->block_id,
-- 
2.25.1

Reply via email to