The following commit has been merged into the core/rcu branch of tip:

Commit-ID:     80c9476e683ec37ba45fd8e6a5c5081bea207e1a
Gitweb:        
https://git.kernel.org/tip/80c9476e683ec37ba45fd8e6a5c5081bea207e1a
Author:        Paul E. McKenney <paul...@kernel.org>
AuthorDate:    Wed, 24 Jun 2020 17:57:07 -07:00
Committer:     Paul E. McKenney <paul...@kernel.org>
CommitterDate: Mon, 24 Aug 2020 18:38:32 -07:00

torture: Add scftorture to the rcutorture scripting

This commit updates the rcutorture scripting to include the new scftorture
torture-test module.

Signed-off-by: Paul E. McKenney <paul...@kernel.org>
---
 tools/testing/selftests/rcutorture/bin/kvm-recheck-scf.sh       | 38 
++++++++++++++++++++++++++++++++++++++
 tools/testing/selftests/rcutorture/bin/kvm.sh                   |  2 +-
 tools/testing/selftests/rcutorture/configs/scf/CFLIST           |  2 ++
 tools/testing/selftests/rcutorture/configs/scf/CFcommon         |  2 ++
 tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT        |  9 +++++++++
 tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT.boot   |  1 +
 tools/testing/selftests/rcutorture/configs/scf/PREEMPT          |  9 +++++++++
 tools/testing/selftests/rcutorture/configs/scf/ver_functions.sh | 30 
++++++++++++++++++++++++++++++
 8 files changed, 92 insertions(+), 1 deletion(-)
 create mode 100755 tools/testing/selftests/rcutorture/bin/kvm-recheck-scf.sh
 create mode 100644 tools/testing/selftests/rcutorture/configs/scf/CFLIST
 create mode 100644 tools/testing/selftests/rcutorture/configs/scf/CFcommon
 create mode 100644 tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT
 create mode 100644 
tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT.boot
 create mode 100644 tools/testing/selftests/rcutorture/configs/scf/PREEMPT
 create mode 100644 
tools/testing/selftests/rcutorture/configs/scf/ver_functions.sh

diff --git a/tools/testing/selftests/rcutorture/bin/kvm-recheck-scf.sh 
b/tools/testing/selftests/rcutorture/bin/kvm-recheck-scf.sh
new file mode 100755
index 0000000..671bfee
--- /dev/null
+++ b/tools/testing/selftests/rcutorture/bin/kvm-recheck-scf.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Analyze a given results directory for rcutorture progress.
+#
+# Usage: kvm-recheck-rcu.sh resdir
+#
+# Copyright (C) Facebook, 2020
+#
+# Authors: Paul E. McKenney <paul...@kernel.org>
+
+i="$1"
+if test -d "$i" -a -r "$i"
+then
+       :
+else
+       echo Unreadable results directory: $i
+       exit 1
+fi
+. functions.sh
+
+configfile=`echo $i | sed -e 's/^.*\///'`
+nscfs="`grep 'scf_invoked_count ver:' $i/console.log 2> /dev/null | tail -1 | 
sed -e 's/^.* scf_invoked_count ver: //' -e 's/ .*$//' | tr -d '\015'`"
+if test -z "$nscfs"
+then
+       echo "$configfile ------- "
+else
+       dur="`sed -e 's/^.* scftorture.shutdown_secs=//' -e 's/ .*$//' < 
$i/qemu-cmd 2> /dev/null`"
+       if test -z "$dur"
+       then
+               rate=""
+       else
+               nscfss=`awk -v nscfs=$nscfs -v dur=$dur '
+                       BEGIN { print nscfs / dur }' < /dev/null`
+               rate=" ($nscfss/s)"
+       fi
+       echo "${configfile} ------- ${nscfs} SCF handler invocations$rate"
+fi
diff --git a/tools/testing/selftests/rcutorture/bin/kvm.sh 
b/tools/testing/selftests/rcutorture/bin/kvm.sh
index e655983..44dfdd9 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm.sh
@@ -184,7 +184,7 @@ do
                shift
                ;;
        --torture)
-               checkarg --torture "(suite name)" "$#" "$2" 
'^\(lock\|rcu\|rcuperf\|refscale\)$' '^--'
+               checkarg --torture "(suite name)" "$#" "$2" 
'^\(lock\|rcu\|rcuperf\|refscale\|scf\)$' '^--'
                TORTURE_SUITE=$2
                shift
                if test "$TORTURE_SUITE" = rcuperf || test "$TORTURE_SUITE" = 
refscale
diff --git a/tools/testing/selftests/rcutorture/configs/scf/CFLIST 
b/tools/testing/selftests/rcutorture/configs/scf/CFLIST
new file mode 100644
index 0000000..4d62eb4
--- /dev/null
+++ b/tools/testing/selftests/rcutorture/configs/scf/CFLIST
@@ -0,0 +1,2 @@
+NOPREEMPT
+PREEMPT
diff --git a/tools/testing/selftests/rcutorture/configs/scf/CFcommon 
b/tools/testing/selftests/rcutorture/configs/scf/CFcommon
new file mode 100644
index 0000000..c11ab91
--- /dev/null
+++ b/tools/testing/selftests/rcutorture/configs/scf/CFcommon
@@ -0,0 +1,2 @@
+CONFIG_SCF_TORTURE_TEST=y
+CONFIG_PRINTK_TIME=y
diff --git a/tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT 
b/tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT
new file mode 100644
index 0000000..b8429d6
--- /dev/null
+++ b/tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT
@@ -0,0 +1,9 @@
+CONFIG_SMP=y
+CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_VOLUNTARY=n
+CONFIG_PREEMPT=n
+CONFIG_HZ_PERIODIC=n
+CONFIG_NO_HZ_IDLE=n
+CONFIG_NO_HZ_FULL=y
+CONFIG_DEBUG_LOCK_ALLOC=n
+CONFIG_PROVE_LOCKING=n
diff --git a/tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT.boot 
b/tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT.boot
new file mode 100644
index 0000000..d6a7fa0
--- /dev/null
+++ b/tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT.boot
@@ -0,0 +1 @@
+nohz_full=1
diff --git a/tools/testing/selftests/rcutorture/configs/scf/PREEMPT 
b/tools/testing/selftests/rcutorture/configs/scf/PREEMPT
new file mode 100644
index 0000000..ae4992b
--- /dev/null
+++ b/tools/testing/selftests/rcutorture/configs/scf/PREEMPT
@@ -0,0 +1,9 @@
+CONFIG_SMP=y
+CONFIG_PREEMPT_NONE=n
+CONFIG_PREEMPT_VOLUNTARY=n
+CONFIG_PREEMPT=y
+CONFIG_HZ_PERIODIC=n
+CONFIG_NO_HZ_IDLE=y
+CONFIG_NO_HZ_FULL=n
+CONFIG_DEBUG_LOCK_ALLOC=y
+CONFIG_PROVE_LOCKING=y
diff --git a/tools/testing/selftests/rcutorture/configs/scf/ver_functions.sh 
b/tools/testing/selftests/rcutorture/configs/scf/ver_functions.sh
new file mode 100644
index 0000000..d3d9e35
--- /dev/null
+++ b/tools/testing/selftests/rcutorture/configs/scf/ver_functions.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Torture-suite-dependent shell functions for the rest of the scripts.
+#
+# Copyright (C) Facebook, 2020
+#
+# Authors: Paul E. McKenney <paul...@kernel.org>
+
+# scftorture_param_onoff bootparam-string config-file
+#
+# Adds onoff scftorture module parameters to kernels having it.
+scftorture_param_onoff () {
+       if ! bootparam_hotplug_cpu "$1" && configfrag_hotplug_cpu "$2"
+       then
+               echo CPU-hotplug kernel, adding scftorture onoff. 1>&2
+               echo scftorture.onoff_interval=1000 scftorture.onoff_holdoff=30
+       fi
+}
+
+# per_version_boot_params bootparam-string config-file seconds
+#
+# Adds per-version torture-module parameters to kernels supporting them.
+per_version_boot_params () {
+       echo $1 `scftorture_param_onoff "$1" "$2"` \
+               scftorture.stat_interval=15 \
+               scftorture.shutdown_secs=$3 \
+               scftorture.verbose=1 \
+               scf
+}

Reply via email to