* [PATCH rcu 0/5] smp_call_function() torture-test updates for v5.16
@ 2021-09-15 23:41 Paul E. McKenney
2021-09-15 23:41 ` [PATCH rcu 1/5] scftorture: Allow zero weight to exclude an smp_call_function*() category Paul E. McKenney
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Paul E. McKenney @ 2021-09-15 23:41 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel
Hello!
This series contains in-kernel torture-test updates for smp_call_function()
and friends, AKA scftorture.
1. Allow zero weight to exclude an smp_call_function*() category.
2. Shut down if nonsensical arguments given.
3. Account for weight_resched when checking for all zeroes.
4. Count reschedule IPIs.
5. Warn on individual scf_torture_init() error conditions.
Thanx, Paul
------------------------------------------------------------------------
b/kernel/scftorture.c | 24 ++++++++++++------------
kernel/scftorture.c | 19 ++++++++++++-------
2 files changed, 24 insertions(+), 19 deletions(-)
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH rcu 1/5] scftorture: Allow zero weight to exclude an smp_call_function*() category
2021-09-15 23:41 [PATCH rcu 0/5] smp_call_function() torture-test updates for v5.16 Paul E. McKenney
@ 2021-09-15 23:41 ` Paul E. McKenney
2021-09-15 23:41 ` [PATCH rcu 2/5] scftorture: Shut down if nonsensical arguments given Paul E. McKenney
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Paul E. McKenney @ 2021-09-15 23:41 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Paul E. McKenney
This commit reworks the weighting calculations to allow zero to
be specified to diable a given weight. For example, specifying the
scftorture.weight_resched=0 kernel boot parameter without specifying a
non-zero value for any of the other scftorture.weight_* parameters would
provide the default weights for the others, but would refrain from doing
any resched-based IPIs.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/scftorture.c | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/kernel/scftorture.c b/kernel/scftorture.c
index 64a08288b1a6..bc3f8e26345c 100644
--- a/kernel/scftorture.c
+++ b/kernel/scftorture.c
@@ -553,18 +553,18 @@ static int __init scf_torture_init(void)
scftorture_print_module_parms("Start of test");
- if (weight_resched == -1 &&
- weight_single == -1 && weight_single_rpc == -1 && weight_single_wait == -1 &&
- weight_many == -1 && weight_many_wait == -1 &&
- weight_all == -1 && weight_all_wait == -1) {
- weight_resched1 = 2 * nr_cpu_ids;
- weight_single1 = 2 * nr_cpu_ids;
- weight_single_rpc1 = 2 * nr_cpu_ids;
- weight_single_wait1 = 2 * nr_cpu_ids;
- weight_many1 = 2;
- weight_many_wait1 = 2;
- weight_all1 = 1;
- weight_all_wait1 = 1;
+ if (weight_resched <= 0 &&
+ weight_single <= 0 && weight_single_rpc <= 0 && weight_single_wait <= 0 &&
+ weight_many <= 0 && weight_many_wait <= 0 &&
+ weight_all <= 0 && weight_all_wait <= 0) {
+ weight_resched1 = weight_resched == 0 ? 0 : 2 * nr_cpu_ids;
+ weight_single1 = weight_single == 0 ? 0 : 2 * nr_cpu_ids;
+ weight_single_rpc1 = weight_single_rpc == 0 ? 0 : 2 * nr_cpu_ids;
+ weight_single_wait1 = weight_single_wait == 0 ? 0 : 2 * nr_cpu_ids;
+ weight_many1 = weight_many == 0 ? 0 : 2;
+ weight_many_wait1 = weight_many_wait == 0 ? 0 : 2;
+ weight_all1 = weight_all == 0 ? 0 : 1;
+ weight_all_wait1 = weight_all_wait == 0 ? 0 : 1;
} else {
if (weight_resched == -1)
weight_resched1 = 0;
--
2.31.1.189.g2e36527f23
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH rcu 2/5] scftorture: Shut down if nonsensical arguments given
2021-09-15 23:41 [PATCH rcu 0/5] smp_call_function() torture-test updates for v5.16 Paul E. McKenney
2021-09-15 23:41 ` [PATCH rcu 1/5] scftorture: Allow zero weight to exclude an smp_call_function*() category Paul E. McKenney
@ 2021-09-15 23:41 ` Paul E. McKenney
2021-09-15 23:41 ` [PATCH rcu 3/5] scftorture: Account for weight_resched when checking for all zeroes Paul E. McKenney
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Paul E. McKenney @ 2021-09-15 23:41 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Paul E. McKenney
If (say) a 10-hour scftorture run is started, but the module parameters
are so nonsensical that the run doesn't even start, then scftorture will
wait the full ten hours when run built into a guest OS. This commit
therefore shuts down the system in this case so that the error is reported
immediately instead of ten hours hence.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/scftorture.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/kernel/scftorture.c b/kernel/scftorture.c
index bc3f8e26345c..31b458b3b113 100644
--- a/kernel/scftorture.c
+++ b/kernel/scftorture.c
@@ -651,6 +651,10 @@ static int __init scf_torture_init(void)
unwind:
torture_init_end();
scf_torture_cleanup();
+ if (shutdown_secs) {
+ WARN_ON(!IS_MODULE(CONFIG_SCF_TORTURE_TEST));
+ kernel_power_off();
+ }
return firsterr;
}
--
2.31.1.189.g2e36527f23
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH rcu 3/5] scftorture: Account for weight_resched when checking for all zeroes
2021-09-15 23:41 [PATCH rcu 0/5] smp_call_function() torture-test updates for v5.16 Paul E. McKenney
2021-09-15 23:41 ` [PATCH rcu 1/5] scftorture: Allow zero weight to exclude an smp_call_function*() category Paul E. McKenney
2021-09-15 23:41 ` [PATCH rcu 2/5] scftorture: Shut down if nonsensical arguments given Paul E. McKenney
@ 2021-09-15 23:41 ` Paul E. McKenney
2021-09-15 23:41 ` [PATCH rcu 4/5] scftorture: Count reschedule IPIs Paul E. McKenney
2021-09-15 23:41 ` [PATCH rcu 5/5] scftorture: Warn on individual scf_torture_init() error conditions Paul E. McKenney
4 siblings, 0 replies; 6+ messages in thread
From: Paul E. McKenney @ 2021-09-15 23:41 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Paul E. McKenney
The "all zero weights makes no sense" error is emitted even when
scftorture.weight_resched is non-zero because it was left out of
the enclosing "if" condition. This commit adds it in.
Fixes: 1ac78b49d61d4 ("scftorture: Add an alternative IPI vector")
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/scftorture.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/scftorture.c b/kernel/scftorture.c
index 31b458b3b113..74348abc792b 100644
--- a/kernel/scftorture.c
+++ b/kernel/scftorture.c
@@ -583,8 +583,8 @@ static int __init scf_torture_init(void)
if (weight_all_wait == -1)
weight_all_wait1 = 0;
}
- if (weight_single1 == 0 && weight_single_rpc1 == 0 && weight_single_wait1 == 0 &&
- weight_many1 == 0 && weight_many_wait1 == 0 &&
+ if (weight_resched1 == 0 && weight_single1 == 0 && weight_single_rpc1 == 0 &&
+ weight_single_wait1 == 0 && weight_many1 == 0 && weight_many_wait1 == 0 &&
weight_all1 == 0 && weight_all_wait1 == 0) {
VERBOSE_SCFTORTOUT_ERRSTRING("all zero weights makes no sense");
firsterr = -EINVAL;
--
2.31.1.189.g2e36527f23
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH rcu 4/5] scftorture: Count reschedule IPIs
2021-09-15 23:41 [PATCH rcu 0/5] smp_call_function() torture-test updates for v5.16 Paul E. McKenney
` (2 preceding siblings ...)
2021-09-15 23:41 ` [PATCH rcu 3/5] scftorture: Account for weight_resched when checking for all zeroes Paul E. McKenney
@ 2021-09-15 23:41 ` Paul E. McKenney
2021-09-15 23:41 ` [PATCH rcu 5/5] scftorture: Warn on individual scf_torture_init() error conditions Paul E. McKenney
4 siblings, 0 replies; 6+ messages in thread
From: Paul E. McKenney @ 2021-09-15 23:41 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Paul E. McKenney
Currently, only those IPIs that invoke scftorture's scf_handler()
IPI handler function are counted. This means that runs exercising
only scftorture.weight_resched will look like they have made no forward
progress, resulting in "GP HANG" complaints from the rcutorture scripting.
This commit therefore increments the scf_invoked_count per-CPU counter
immediately after calling resched_cpu().
Fixes: 1ac78b49d61d4 ("scftorture: Add an alternative IPI vector")
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/scftorture.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/kernel/scftorture.c b/kernel/scftorture.c
index 74348abc792b..00bba2bdd4d1 100644
--- a/kernel/scftorture.c
+++ b/kernel/scftorture.c
@@ -341,6 +341,7 @@ static void scftorture_invoke_one(struct scf_statistics *scfp, struct torture_ra
cpu = torture_random(trsp) % nr_cpu_ids;
scfp->n_resched++;
resched_cpu(cpu);
+ this_cpu_inc(scf_invoked_count);
}
break;
case SCF_PRIM_SINGLE:
--
2.31.1.189.g2e36527f23
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH rcu 5/5] scftorture: Warn on individual scf_torture_init() error conditions
2021-09-15 23:41 [PATCH rcu 0/5] smp_call_function() torture-test updates for v5.16 Paul E. McKenney
` (3 preceding siblings ...)
2021-09-15 23:41 ` [PATCH rcu 4/5] scftorture: Count reschedule IPIs Paul E. McKenney
@ 2021-09-15 23:41 ` Paul E. McKenney
4 siblings, 0 replies; 6+ messages in thread
From: Paul E. McKenney @ 2021-09-15 23:41 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Paul E. McKenney
When running scftorture as a module, any scf_torture_init() issues will be
reflected in the error code from modprobe or insmod, as the case may be.
However, these error codes are not available when running scftorture
built-in, for example, when using the kvm.sh script. This commit
therefore adds WARN_ON_ONCE() to allow distinguishing scf_torture_init()
errors when running scftorture built-in.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/scftorture.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/kernel/scftorture.c b/kernel/scftorture.c
index 00bba2bdd4d1..5d42f44e3e1a 100644
--- a/kernel/scftorture.c
+++ b/kernel/scftorture.c
@@ -606,17 +606,17 @@ static int __init scf_torture_init(void)
if (onoff_interval > 0) {
firsterr = torture_onoff_init(onoff_holdoff * HZ, onoff_interval, NULL);
- if (firsterr)
+ if (torture_init_error(firsterr))
goto unwind;
}
if (shutdown_secs > 0) {
firsterr = torture_shutdown_init(shutdown_secs, scf_torture_cleanup);
- if (firsterr)
+ if (torture_init_error(firsterr))
goto unwind;
}
if (stutter > 0) {
firsterr = torture_stutter_init(stutter, stutter);
- if (firsterr)
+ if (torture_init_error(firsterr))
goto unwind;
}
@@ -637,12 +637,12 @@ static int __init scf_torture_init(void)
scf_stats_p[i].cpu = i;
firsterr = torture_create_kthread(scftorture_invoker, (void *)&scf_stats_p[i],
scf_stats_p[i].task);
- if (firsterr)
+ if (torture_init_error(firsterr))
goto unwind;
}
if (stat_interval > 0) {
firsterr = torture_create_kthread(scf_torture_stats, NULL, scf_torture_stats_task);
- if (firsterr)
+ if (torture_init_error(firsterr))
goto unwind;
}
--
2.31.1.189.g2e36527f23
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-09-15 23:41 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-15 23:41 [PATCH rcu 0/5] smp_call_function() torture-test updates for v5.16 Paul E. McKenney
2021-09-15 23:41 ` [PATCH rcu 1/5] scftorture: Allow zero weight to exclude an smp_call_function*() category Paul E. McKenney
2021-09-15 23:41 ` [PATCH rcu 2/5] scftorture: Shut down if nonsensical arguments given Paul E. McKenney
2021-09-15 23:41 ` [PATCH rcu 3/5] scftorture: Account for weight_resched when checking for all zeroes Paul E. McKenney
2021-09-15 23:41 ` [PATCH rcu 4/5] scftorture: Count reschedule IPIs Paul E. McKenney
2021-09-15 23:41 ` [PATCH rcu 5/5] scftorture: Warn on individual scf_torture_init() error conditions Paul E. McKenney
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).