torture: Add srcu_lockdep.sh to torture.sh
authorPaul E. McKenney <paulmck@kernel.org>
Tue, 11 Jul 2023 00:34:45 +0000 (17:34 -0700)
committerPaul E. McKenney <paulmck@kernel.org>
Fri, 21 Jul 2023 00:54:53 +0000 (17:54 -0700)
This commit adds srcu_lockdep.sh to torture.sh, thus exercizing the
extended SRCU-aware lockdep-RCU functionality on a regular basis.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
tools/testing/selftests/rcutorture/bin/torture.sh

index d36b839bf586c325a2df32ab2e404464434baa76..bc63344ce4cd8211fef7ef4018dbd9388e2b7001 100755 (executable)
@@ -56,6 +56,7 @@ do_kcsan=no
 do_clocksourcewd=yes
 do_rt=yes
 do_rcutasksflavors=yes
+do_srcu_lockdep=yes
 
 # doyesno - Helper function for yes/no arguments
 function doyesno () {
@@ -87,6 +88,7 @@ usage () {
        echo "       --do-refscale / --do-no-refscale / --no-refscale"
        echo "       --do-rt / --do-no-rt / --no-rt"
        echo "       --do-scftorture / --do-no-scftorture / --no-scftorture"
+       echo "       --do-srcu-lockdep / --do-no-srcu-lockdep / --no-srcu-lockdep"
        echo "       --duration [ <minutes> | <hours>h | <days>d ]"
        echo "       --kcsan-kmake-arg kernel-make-arguments"
        exit 1
@@ -128,6 +130,7 @@ do
                do_kasan=yes
                do_kcsan=yes
                do_clocksourcewd=yes
+               do_srcu_lockdep=yes
                ;;
        --do-allmodconfig|--do-no-allmodconfig|--no-allmodconfig)
                do_allmodconfig=`doyesno "$1" --do-allmodconfig`
@@ -160,6 +163,7 @@ do
                do_kasan=no
                do_kcsan=no
                do_clocksourcewd=no
+               do_srcu_lockdep=no
                ;;
        --do-rcuscale|--do-no-rcuscale|--no-rcuscale)
                do_rcuscale=`doyesno "$1" --do-rcuscale`
@@ -179,6 +183,9 @@ do
        --do-scftorture|--do-no-scftorture|--no-scftorture)
                do_scftorture=`doyesno "$1" --do-scftorture`
                ;;
+       --do-srcu-lockdep|--do-no-srcu-lockdep|--no-srcu-lockdep)
+               do_srcu_lockdep=`doyesno "$1" --do-srcu-lockdep`
+               ;;
        --duration)
                checkarg --duration "(minutes)" $# "$2" '^[0-9][0-9]*\(m\|h\|d\|\)$' '^error'
                mult=1
@@ -432,6 +439,23 @@ then
        torture_set "rcurttorture-exp" tools/testing/selftests/rcutorture/bin/kvm.sh --allcpus --duration "$duration_rcutorture" --configs "TREE03" --trust-make
 fi
 
+if test "$do_srcu_lockdep" = "yes"
+then
+       echo " --- do-srcu-lockdep:" Start `date` | tee -a $T/log
+       tools/testing/selftests/rcutorture/bin/srcu_lockdep.sh --datestamp "$ds/results-srcu-lockdep" > $T/srcu_lockdep.sh.out 2>&1
+       retcode=$?
+       cp $T/srcu_lockdep.sh.out "tools/testing/selftests/rcutorture/res/$ds/results-srcu-lockdep/log"
+       if test "$retcode" -eq 0
+       then
+               echo "srcu_lockdep($retcode)" "tools/testing/selftests/rcutorture/res/$ds/results-srcu-lockdep" >> $T/successes
+               echo Success >> "tools/testing/selftests/rcutorture/res/$ds/results-srcu-lockdep/log"
+       else
+               echo "srcu_lockdep($retcode)" "tools/testing/selftests/rcutorture/res/$ds/results-srcu-lockdep" >> $T/failures
+               echo " --- srcu_lockdep Test Summary:" >> "tools/testing/selftests/rcutorture/res/$ds/results-srcu-lockdep/log"
+               echo " --- Summary: Exit code $retcode from srcu_lockdep.sh, see ds/results-srcu-lockdep" >> "tools/testing/selftests/rcutorture/res/$ds/results-srcu-lockdep/log"
+       fi
+fi
+
 if test "$do_refscale" = yes
 then
        primlist="`grep '\.name[        ]*=' kernel/rcu/refscale.c | sed -e 's/^[^"]*"//' -e 's/".*$//'`"