Commit e3b9c347316fe243bea6abd08681050c43ca22ee
1 parent
be9fa5a436
Exists in
smarc-imx_3.14.28_1.0.0_ga
and in
1 other branch
dmatest: add support for skipping verification and random data setup
Towards enabling dmatest to checkout performance add a 'noverify' mode. Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Showing 1 changed file with 33 additions and 11 deletions Side-by-side Diff
drivers/dma/dmatest.c
... | ... | @@ -66,6 +66,10 @@ |
66 | 66 | MODULE_PARM_DESC(timeout, "Transfer Timeout in msec (default: 3000), " |
67 | 67 | "Pass -1 for infinite timeout"); |
68 | 68 | |
69 | +static bool noverify; | |
70 | +module_param(noverify, bool, S_IRUGO | S_IWUSR); | |
71 | +MODULE_PARM_DESC(noverify, "Disable random data setup and verification"); | |
72 | + | |
69 | 73 | /** |
70 | 74 | * struct dmatest_params - test parameters. |
71 | 75 | * @buf_size: size of the memcpy test buffer |
... | ... | @@ -88,6 +92,7 @@ |
88 | 92 | unsigned int xor_sources; |
89 | 93 | unsigned int pq_sources; |
90 | 94 | int timeout; |
95 | + bool noverify; | |
91 | 96 | }; |
92 | 97 | |
93 | 98 | /** |
94 | 99 | |
95 | 100 | |
... | ... | @@ -435,19 +440,31 @@ |
435 | 440 | break; |
436 | 441 | } |
437 | 442 | |
438 | - len = dmatest_random() % params->buf_size + 1; | |
443 | + if (params->noverify) { | |
444 | + len = params->buf_size; | |
445 | + src_off = 0; | |
446 | + dst_off = 0; | |
447 | + } else { | |
448 | + len = dmatest_random() % params->buf_size + 1; | |
449 | + len = (len >> align) << align; | |
450 | + if (!len) | |
451 | + len = 1 << align; | |
452 | + src_off = dmatest_random() % (params->buf_size - len + 1); | |
453 | + dst_off = dmatest_random() % (params->buf_size - len + 1); | |
454 | + | |
455 | + src_off = (src_off >> align) << align; | |
456 | + dst_off = (dst_off >> align) << align; | |
457 | + | |
458 | + dmatest_init_srcs(thread->srcs, src_off, len, | |
459 | + params->buf_size); | |
460 | + dmatest_init_dsts(thread->dsts, dst_off, len, | |
461 | + params->buf_size); | |
462 | + } | |
463 | + | |
439 | 464 | len = (len >> align) << align; |
440 | 465 | if (!len) |
441 | 466 | len = 1 << align; |
442 | - src_off = dmatest_random() % (params->buf_size - len + 1); | |
443 | - dst_off = dmatest_random() % (params->buf_size - len + 1); | |
444 | 467 | |
445 | - src_off = (src_off >> align) << align; | |
446 | - dst_off = (dst_off >> align) << align; | |
447 | - | |
448 | - dmatest_init_srcs(thread->srcs, src_off, len, params->buf_size); | |
449 | - dmatest_init_dsts(thread->dsts, dst_off, len, params->buf_size); | |
450 | - | |
451 | 468 | for (i = 0; i < src_cnt; i++) { |
452 | 469 | u8 *buf = thread->srcs[i] + src_off; |
453 | 470 | |
454 | 471 | |
... | ... | @@ -555,10 +572,14 @@ |
555 | 572 | unmap_src(dev->dev, dma_srcs, len, src_cnt); |
556 | 573 | unmap_dst(dev->dev, dma_dsts, params->buf_size, dst_cnt); |
557 | 574 | |
558 | - error_count = 0; | |
575 | + if (params->noverify) { | |
576 | + dbg_result("test passed", total_tests, src_off, dst_off, | |
577 | + len, 0); | |
578 | + continue; | |
579 | + } | |
559 | 580 | |
560 | 581 | pr_debug("%s: verifying source buffer...\n", current->comm); |
561 | - error_count += dmatest_verify(thread->srcs, 0, src_off, | |
582 | + error_count = dmatest_verify(thread->srcs, 0, src_off, | |
562 | 583 | 0, PATTERN_SRC, true); |
563 | 584 | error_count += dmatest_verify(thread->srcs, src_off, |
564 | 585 | src_off + len, src_off, |
... | ... | @@ -773,6 +794,7 @@ |
773 | 794 | params->xor_sources = xor_sources; |
774 | 795 | params->pq_sources = pq_sources; |
775 | 796 | params->timeout = timeout; |
797 | + params->noverify = noverify; | |
776 | 798 | |
777 | 799 | request_channels(info, DMA_MEMCPY); |
778 | 800 | request_channels(info, DMA_XOR); |