rcu.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@kernel.org>
To: rcu@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com,
	rostedt@goodmis.org, "Paul E. McKenney" <paulmck@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>
Subject: [PATCH rcu 07/18] torture: Add RCU Tasks individual-flavor build tests
Date: Mon, 17 Jul 2023 11:23:26 -0700	[thread overview]
Message-ID: <20230717182337.1098991-7-paulmck@kernel.org> (raw)
In-Reply-To: <d03c7482-acde-4f33-a7fb-fa7c58fdc9a2@paulmck-laptop>

This commit adds build tests of the individual RCU Tasks flavors in
order to detect inadvertent dependencies among the flavors.

Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
 .../selftests/rcutorture/bin/torture.sh       | 41 +++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/tools/testing/selftests/rcutorture/bin/torture.sh b/tools/testing/selftests/rcutorture/bin/torture.sh
index c3190ca9c96f..dd3bfadb0639 100755
--- a/tools/testing/selftests/rcutorture/bin/torture.sh
+++ b/tools/testing/selftests/rcutorture/bin/torture.sh
@@ -55,6 +55,7 @@ do_kasan=yes
 do_kcsan=no
 do_clocksourcewd=yes
 do_rt=yes
+do_rcutasksflavors=yes
 
 # doyesno - Helper function for yes/no arguments
 function doyesno () {
@@ -81,6 +82,7 @@ usage () {
 	echo "       --do-locktorture / --do-no-locktorture / --no-locktorture"
 	echo "       --do-none"
 	echo "       --do-rcuscale / --do-no-rcuscale / --no-rcuscale"
+	echo "       --do-rcutasksflavors / --do-no-rcutasksflavors / --no-rcutasksflavors"
 	echo "       --do-rcutorture / --do-no-rcutorture / --no-rcutorture"
 	echo "       --do-refscale / --do-no-refscale / --no-refscale"
 	echo "       --do-rt / --do-no-rt / --no-rt"
@@ -115,6 +117,7 @@ do
 		;;
 	--do-all|--doall)
 		do_allmodconfig=yes
+		do_rcutasksflavor=yes
 		do_rcutorture=yes
 		do_locktorture=yes
 		do_scftorture=yes
@@ -146,6 +149,7 @@ do
 		;;
 	--do-none|--donone)
 		do_allmodconfig=no
+		do_rcutasksflavors=no
 		do_rcutorture=no
 		do_locktorture=no
 		do_scftorture=no
@@ -160,6 +164,9 @@ do
 	--do-rcuscale|--do-no-rcuscale|--no-rcuscale)
 		do_rcuscale=`doyesno "$1" --do-rcuscale`
 		;;
+	--do-rcutasksflavors|--do-no-rcutasksflavors|--no-rcutasksflavors)
+		do_rcutasksflavors=`doyesno "$1" --do-rcutasksflavors`
+		;;
 	--do-rcutorture|--do-no-rcutorture|--no-rcutorture)
 		do_rcutorture=`doyesno "$1" --do-rcutorture`
 		;;
@@ -361,6 +368,40 @@ then
 	fi
 fi
 
+# Test building RCU Tasks flavors in isolation, both SMP and !SMP
+if test "$do_rcutasksflavors" = "yes"
+then
+	echo " --- rcutasksflavors:" Start `date` | tee -a $T/log
+	rtfdir="tools/testing/selftests/rcutorture/res/$ds/results-rcutasksflavors"
+	mkdir -p "$rtfdir"
+	cat > $T/rcutasksflavors << __EOF__
+#CHECK#CONFIG_TASKS_RCU=n
+#CHECK#CONFIG_TASKS_RUDE_RCU=n
+#CHECK#CONFIG_TASKS_TRACE_RCU=n
+__EOF__
+	for flavor in CONFIG_TASKS_RCU CONFIG_TASKS_RUDE_RCU CONFIG_TASKS_TRACE_RCU
+	do
+		forceflavor="`echo $flavor | sed -e 's/^CONFIG/CONFIG_FORCE/'`"
+		deselectedflavors="`grep -v $flavor $T/rcutasksflavors | tr '\012' ' ' | tr -s ' ' | sed -e 's/ *$//'`"
+		echo " --- Running RCU Tasks Trace flavor $flavor `date`" >> $rtfdir/log
+		tools/testing/selftests/rcutorture/bin/kvm.sh --datestamp "$ds/results-rcutasksflavors/$flavor" --buildonly --configs "TINY01 TREE04" --kconfig "CONFIG_RCU_EXPERT=y CONFIG_RCU_SCALE_TEST=y $forceflavor=y $deselectedflavors" --trust-make > $T/$flavor.out 2>&1
+		retcode=$?
+		if test "$retcode" -ne 0
+		then
+			break
+		fi
+	done
+	if test "$retcode" -eq 0
+	then
+		echo "rcutasksflavors($retcode)" $rtfdir >> $T/successes
+		echo Success >> $rtfdir/log
+	else
+		echo "rcutasksflavors($retcode)" $rtfdir >> $T/failures
+		echo " --- rcutasksflavors Test summary:" >> $rtfdir/log
+		echo " --- Summary: Exit code $retcode from $flavor, see Make.out" >> $rtfdir/log
+	fi
+fi
+
 # --torture rcu
 if test "$do_rcutorture" = "yes"
 then
-- 
2.40.1


  parent reply	other threads:[~2023-07-17 18:24 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-17 18:23 [PATCH rcu 0/18] Torture-test scripting updates for v6.6 Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 01/18] rcutorture: Remove obsolete BOOTPARAM_HOTPLUG_CPU0 Kconfig option Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 02/18] rcu: Remove formal-verification tests Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 03/18] torture: Add "--no-" as synonym for "--do-no-" in torture.sh Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 04/18] rcutorture: Remove contradictory Kconfig constraint Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 05/18] torture: Allow #CHECK# in --kconfig argument to kvm.sh Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 06/18] torture: Make kvm-recheck.sh report .config errors Paul E. McKenney
2023-07-17 18:23 ` Paul E. McKenney [this message]
2023-07-17 18:23 ` [PATCH rcu 08/18] torture: Make kvm-remote print diagnostics on initial ssh failure Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 09/18] rcutorture: Remove obsolete parameter check from mkinitrd.sh Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 10/18] torture: Place --bootargs parameters at end of -append list Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 11/18] torture: Make torture.sh summarize config and build errors Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 12/18] torture: Loosen .config checks for KCSAN kernels Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 13/18] torture: Add srcu_lockdep.sh to torture.sh Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 14/18] torture: Avoid torture-test reboot loops Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 15/18] torture: Add init-program support for loongarch Paul E. McKenney
2023-07-18  2:56   ` Feiyang Chen
2023-07-18 18:41     ` Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 16/18] torture: Switch qemu from -nographic to -display none Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 17/18] torture: Make init program dump command-line arguments Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 18/18] torture: Cause mkinitrd.sh to indicate failure on compile errors Paul E. McKenney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230717182337.1098991-7-paulmck@kernel.org \
    --to=paulmck@kernel.org \
    --cc=arnd@arndb.de \
    --cc=kernel-team@meta.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rcu@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).