Commit e3b9c347316fe243bea6abd08681050c43ca22ee

Authored by Dan Williams
1 parent be9fa5a436

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);