@@ -66,6 +66,10 @@ module_param(timeout, uint, S_IRUGO | S_IWUSR);
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 @@ struct dmatest_params {
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
/**
@@ -435,18 +440,30 @@ static int dmatest_func(void *data)
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
-
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
467
451
468
for (i = 0 ; i < src_cnt ; i ++ ) {
452
469
u8 * buf = thread -> srcs [i ] + src_off ;
@@ -555,10 +572,14 @@ static int dmatest_func(void *data)
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 @@ static void run_threaded_test(struct dmatest_info *info)
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 );
0 commit comments