@@ -277,6 +277,8 @@ function torture_one {
277277 then
278278 cat $T /$curflavor .out | tee -a $T /log
279279 echo retcode=$retcode | tee -a $T /log
280+ else
281+ echo $resdir > $T /last-resdir
280282 fi
281283 if test " $retcode " == 0
282284 then
@@ -302,10 +304,12 @@ function torture_set {
302304 shift
303305 curflavor=$flavor
304306 torture_one " $@ "
307+ mv $T /last-resdir $T /last-resdir-nodebug || :
305308 if test " $do_kasan " = " yes"
306309 then
307310 curflavor=${flavor} -kasan
308311 torture_one " $@ " --kasan
312+ mv $T /last-resdir $T /last-resdir-kasan || :
309313 fi
310314 if test " $do_kcsan " = " yes"
311315 then
@@ -316,6 +320,7 @@ function torture_set {
316320 cur_kcsan_kmake_args=" $kcsan_kmake_args "
317321 fi
318322 torture_one " $@ " --kconfig " CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=y" $kcsan_kmake_tag $cur_kcsan_kmake_args --kcsan
323+ mv $T /last-resdir $T /last-resdir-kcsan || :
319324 fi
320325}
321326
@@ -378,23 +383,97 @@ then
378383else
379384 primlist=
380385fi
386+ firsttime=1
387+ do_kasan_save=" $do_kasan "
388+ do_kcsan_save=" $do_kcsan "
381389for prim in $primlist
382390do
383- torture_bootargs=" refscale.scale_type=" $prim " refscale.nreaders=$HALF_ALLOTED_CPUS refscale.loops=10000 refscale.holdoff=20 torture.disable_onoff_at_boot"
384- torture_set " refscale-$prim " tools/testing/selftests/rcutorture/bin/kvm.sh --torture refscale --allcpus --duration 5 --kconfig " CONFIG_TASKS_TRACE_RCU=y CONFIG_NR_CPUS=$HALF_ALLOTED_CPUS " --bootargs " verbose_batched=$VERBOSE_BATCH_CPUS torture.verbose_sleep_frequency=8 torture.verbose_sleep_duration=$VERBOSE_BATCH_CPUS " --trust-make
391+ if test -n " $firsttime "
392+ then
393+ torture_bootargs=" refscale.scale_type=" $prim " refscale.nreaders=$HALF_ALLOTED_CPUS refscale.loops=10000 refscale.holdoff=20 torture.disable_onoff_at_boot"
394+ torture_set " refscale-$prim " tools/testing/selftests/rcutorture/bin/kvm.sh --torture refscale --allcpus --duration 5 --kconfig " CONFIG_TASKS_TRACE_RCU=y CONFIG_NR_CPUS=$HALF_ALLOTED_CPUS " --bootargs " verbose_batched=$VERBOSE_BATCH_CPUS torture.verbose_sleep_frequency=8 torture.verbose_sleep_duration=$VERBOSE_BATCH_CPUS " --trust-make
395+ mv $T /last-resdir-nodebug $T /first-resdir-nodebug || :
396+ if test -f " $T /last-resdir-kasan"
397+ then
398+ mv $T /last-resdir-kasan $T /first-resdir-kasan || :
399+ fi
400+ if test -f " $T /last-resdir-kcsan"
401+ then
402+ mv $T /last-resdir-kcsan $T /first-resdir-kcsan || :
403+ fi
404+ firsttime=
405+ do_kasan=
406+ do_kcsan=
407+ else
408+ torture_bootargs=
409+ for i in $T /first-resdir-*
410+ do
411+ case " $i " in
412+ * -nodebug)
413+ torture_suffix=
414+ ;;
415+ * -kasan)
416+ torture_suffix=" -kasan"
417+ ;;
418+ * -kcsan)
419+ torture_suffix=" -kcsan"
420+ ;;
421+ esac
422+ torture_set " refscale-$prim$torture_suffix " tools/testing/selftests/rcutorture/bin/kvm-again.sh " ` cat " $i " ` " --duration 5 --bootargs " refscale.scale_type=$prim "
423+ done
424+ fi
385425done
426+ do_kasan=" $do_kasan_save "
427+ do_kcsan=" $do_kcsan_save "
386428
387429if test " $do_rcuscale " = yes
388430then
389431 primlist=" ` grep ' \.name[ ]*=' kernel/rcu/rcuscale.c | sed -e ' s/^[^"]*"//' -e ' s/".*$//' ` "
390432else
391433 primlist=
392434fi
435+ firsttime=1
436+ do_kasan_save=" $do_kasan "
437+ do_kcsan_save=" $do_kcsan "
393438for prim in $primlist
394439do
395- torture_bootargs=" rcuscale.scale_type=" $prim " rcuscale.nwriters=$HALF_ALLOTED_CPUS rcuscale.holdoff=20 torture.disable_onoff_at_boot"
396- torture_set " rcuscale-$prim " tools/testing/selftests/rcutorture/bin/kvm.sh --torture rcuscale --allcpus --duration 5 --kconfig " CONFIG_TASKS_TRACE_RCU=y CONFIG_NR_CPUS=$HALF_ALLOTED_CPUS " --trust-make
440+ if test -n " $firsttime "
441+ then
442+ torture_bootargs=" rcuscale.scale_type=" $prim " rcuscale.nwriters=$HALF_ALLOTED_CPUS rcuscale.holdoff=20 torture.disable_onoff_at_boot"
443+ torture_set " rcuscale-$prim " tools/testing/selftests/rcutorture/bin/kvm.sh --torture rcuscale --allcpus --duration 5 --kconfig " CONFIG_TASKS_TRACE_RCU=y CONFIG_NR_CPUS=$HALF_ALLOTED_CPUS " --trust-make
444+ mv $T /last-resdir-nodebug $T /first-resdir-nodebug || :
445+ if test -f " $T /last-resdir-kasan"
446+ then
447+ mv $T /last-resdir-kasan $T /first-resdir-kasan || :
448+ fi
449+ if test -f " $T /last-resdir-kcsan"
450+ then
451+ mv $T /last-resdir-kcsan $T /first-resdir-kcsan || :
452+ fi
453+ firsttime=
454+ do_kasan=
455+ do_kcsan=
456+ else
457+ torture_bootargs=
458+ for i in $T /first-resdir-*
459+ do
460+ case " $i " in
461+ * -nodebug)
462+ torture_suffix=
463+ ;;
464+ * -kasan)
465+ torture_suffix=" -kasan"
466+ ;;
467+ * -kcsan)
468+ torture_suffix=" -kcsan"
469+ ;;
470+ esac
471+ torture_set " rcuscale-$prim$torture_suffix " tools/testing/selftests/rcutorture/bin/kvm-again.sh " ` cat " $i " ` " --duration 5 --bootargs " rcuscale.scale_type=$prim "
472+ done
473+ fi
397474done
475+ do_kasan=" $do_kasan_save "
476+ do_kcsan=" $do_kcsan_save "
398477
399478if test " $do_kvfree " = " yes"
400479then
0 commit comments