* [PATCH 0/6] RCU torture for v6.13
@ 2024-11-06 16:02 Frederic Weisbecker
2024-11-06 16:02 ` [PATCH 1/6] torture: Add --no-affinity parameter to kvm.sh Frederic Weisbecker
` (6 more replies)
0 siblings, 7 replies; 11+ messages in thread
From: Frederic Weisbecker @ 2024-11-06 16:02 UTC (permalink / raw)
To: LKML
Cc: Frederic Weisbecker, Boqun Feng, Joel Fernandes, Josh Triplett,
Lai Jiangshan, Mathieu Desnoyers, Neeraj Upadhyay,
Paul E . McKenney, Steven Rostedt, Uladzislau Rezki, Zqiang, rcu
Hello,
Please find below the RCU NOCB patches targeted for the upcoming
merge window.
Paul E. McKenney (4):
torture: Add --no-affinity parameter to kvm.sh
refscale: Correct affinity check
rcuscale: Add guest_os_delay module parameter
rcutorture: Avoid printing cpu=-1 for no-fault RCU boost failure
Uladzislau Rezki (Sony) (2):
rcuscale: Do a proper cleanup if kfree_scale_init() fails
rcuscale: Remove redundant WARN_ON_ONCE() splat
kernel/rcu/rcuscale.c | 6 +--
kernel/rcu/rcutorture.c | 9 +++-
kernel/rcu/refscale.c | 19 +++++++-
.../rcutorture/bin/kvm-test-1-run-batch.sh | 43 ++++++++++---------
tools/testing/selftests/rcutorture/bin/kvm.sh | 6 +++
5 files changed, 56 insertions(+), 27 deletions(-)
Thanks.
--
2.46.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/6] torture: Add --no-affinity parameter to kvm.sh
2024-11-06 16:02 [PATCH 0/6] RCU torture for v6.13 Frederic Weisbecker
@ 2024-11-06 16:02 ` Frederic Weisbecker
2024-11-06 16:02 ` [PATCH 2/6] refscale: Correct affinity check Frederic Weisbecker
` (5 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Frederic Weisbecker @ 2024-11-06 16:02 UTC (permalink / raw)
To: LKML
Cc: Paul E. McKenney, Boqun Feng, Joel Fernandes, Josh Triplett,
Lai Jiangshan, Mathieu Desnoyers, Neeraj Upadhyay, Steven Rostedt,
Uladzislau Rezki, Zqiang, rcu, Frederic Weisbecker
From: "Paul E. McKenney" <paulmck@kernel.org>
In performance tests, it can be counter-productive to spread torture-test
guest OSes across sockets. Plus the experimenter might have ideas about
what CPUs individual guest OSes are to run on. This commit therefore
adds a --no-affinity parameter to kvm.sh to prevent it from running
taskset on its guest OSes.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
---
.../rcutorture/bin/kvm-test-1-run-batch.sh | 43 ++++++++++---------
tools/testing/selftests/rcutorture/bin/kvm.sh | 6 +++
2 files changed, 29 insertions(+), 20 deletions(-)
diff --git a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run-batch.sh b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run-batch.sh
index c3808c490d92..f87046b702d8 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run-batch.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run-batch.sh
@@ -56,27 +56,30 @@ do
echo > $i/kvm-test-1-run-qemu.sh.out
export TORTURE_AFFINITY=
kvm-get-cpus-script.sh $T/cpuarray.awk $T/cpubatches.awk $T/cpustate
- cat << ' ___EOF___' >> $T/cpubatches.awk
- END {
- affinitylist = "";
- if (!gotcpus()) {
- print "echo No CPU-affinity information, so no taskset command.";
- } else if (cpu_count !~ /^[0-9][0-9]*$/) {
- print "echo " scenario ": Bogus number of CPUs (old qemu-cmd?), so no taskset command.";
- } else {
- affinitylist = nextcpus(cpu_count);
- if (!(affinitylist ~ /^[0-9,-][0-9,-]*$/))
- print "echo " scenario ": Bogus CPU-affinity information, so no taskset command.";
- else if (!dumpcpustate())
- print "echo " scenario ": Could not dump state, so no taskset command.";
- else
- print "export TORTURE_AFFINITY=" affinitylist;
+ if test -z "${TORTURE_NO_AFFINITY}"
+ then
+ cat << ' ___EOF___' >> $T/cpubatches.awk
+ END {
+ affinitylist = "";
+ if (!gotcpus()) {
+ print "echo No CPU-affinity information, so no taskset command.";
+ } else if (cpu_count !~ /^[0-9][0-9]*$/) {
+ print "echo " scenario ": Bogus number of CPUs (old qemu-cmd?), so no taskset command.";
+ } else {
+ affinitylist = nextcpus(cpu_count);
+ if (!(affinitylist ~ /^[0-9,-][0-9,-]*$/))
+ print "echo " scenario ": Bogus CPU-affinity information, so no taskset command.";
+ else if (!dumpcpustate())
+ print "echo " scenario ": Could not dump state, so no taskset command.";
+ else
+ print "export TORTURE_AFFINITY=" affinitylist;
+ }
}
- }
- ___EOF___
- cpu_count="`grep '# TORTURE_CPU_COUNT=' $i/qemu-cmd | sed -e 's/^.*=//'`"
- affinity_export="`awk -f $T/cpubatches.awk -v cpu_count="$cpu_count" -v scenario=$i < /dev/null`"
- $affinity_export
+ ___EOF___
+ cpu_count="`grep '# TORTURE_CPU_COUNT=' $i/qemu-cmd | sed -e 's/^.*=//'`"
+ affinity_export="`awk -f $T/cpubatches.awk -v cpu_count="$cpu_count" -v scenario=$i < /dev/null`"
+ $affinity_export
+ fi
kvm-test-1-run-qemu.sh $i >> $i/kvm-test-1-run-qemu.sh.out 2>&1 &
done
for i in $runfiles
diff --git a/tools/testing/selftests/rcutorture/bin/kvm.sh b/tools/testing/selftests/rcutorture/bin/kvm.sh
index 7af73ddc148d..42e5e8597a1a 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm.sh
@@ -42,6 +42,7 @@ TORTURE_JITTER_STOP=""
TORTURE_KCONFIG_KASAN_ARG=""
TORTURE_KCONFIG_KCSAN_ARG=""
TORTURE_KMAKE_ARG=""
+TORTURE_NO_AFFINITY=""
TORTURE_QEMU_MEM=512
torture_qemu_mem_default=1
TORTURE_REMOTE=
@@ -82,6 +83,7 @@ usage () {
echo " --kmake-arg kernel-make-arguments"
echo " --mac nn:nn:nn:nn:nn:nn"
echo " --memory megabytes|nnnG"
+ echo " --no-affinity"
echo " --no-initrd"
echo " --qemu-args qemu-arguments"
echo " --qemu-cmd qemu-system-..."
@@ -220,6 +222,9 @@ do
torture_qemu_mem_default=
shift
;;
+ --no-affinity)
+ TORTURE_NO_AFFINITY="no-affinity"
+ ;;
--no-initrd)
TORTURE_INITRD=""; export TORTURE_INITRD
;;
@@ -417,6 +422,7 @@ TORTURE_KCONFIG_KASAN_ARG="$TORTURE_KCONFIG_KASAN_ARG"; export TORTURE_KCONFIG_K
TORTURE_KCONFIG_KCSAN_ARG="$TORTURE_KCONFIG_KCSAN_ARG"; export TORTURE_KCONFIG_KCSAN_ARG
TORTURE_KMAKE_ARG="$TORTURE_KMAKE_ARG"; export TORTURE_KMAKE_ARG
TORTURE_MOD="$TORTURE_MOD"; export TORTURE_MOD
+TORTURE_NO_AFFINITY="$TORTURE_NO_AFFINITY"; export TORTURE_NO_AFFINITY
TORTURE_QEMU_CMD="$TORTURE_QEMU_CMD"; export TORTURE_QEMU_CMD
TORTURE_QEMU_INTERACTIVE="$TORTURE_QEMU_INTERACTIVE"; export TORTURE_QEMU_INTERACTIVE
TORTURE_QEMU_MAC="$TORTURE_QEMU_MAC"; export TORTURE_QEMU_MAC
--
2.46.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/6] refscale: Correct affinity check
2024-11-06 16:02 [PATCH 0/6] RCU torture for v6.13 Frederic Weisbecker
2024-11-06 16:02 ` [PATCH 1/6] torture: Add --no-affinity parameter to kvm.sh Frederic Weisbecker
@ 2024-11-06 16:02 ` Frederic Weisbecker
2024-11-06 16:02 ` [PATCH 3/6] rcuscale: Add guest_os_delay module parameter Frederic Weisbecker
` (4 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Frederic Weisbecker @ 2024-11-06 16:02 UTC (permalink / raw)
To: LKML
Cc: Paul E. McKenney, Boqun Feng, Joel Fernandes, Josh Triplett,
Lai Jiangshan, Mathieu Desnoyers, Neeraj Upadhyay, Steven Rostedt,
Uladzislau Rezki, Zqiang, rcu, Frederic Weisbecker
From: "Paul E. McKenney" <paulmck@kernel.org>
The current affinity check works fine until there are more reader
processes than CPUs, at which point the affinity check is looking for
non-existent CPUs. This commit therefore applies the same modulus to
the check as is present in the set_cpus_allowed_ptr() call.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
---
kernel/rcu/refscale.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/rcu/refscale.c b/kernel/rcu/refscale.c
index 0db9db73f57f..25910ebe95c0 100644
--- a/kernel/rcu/refscale.c
+++ b/kernel/rcu/refscale.c
@@ -829,7 +829,7 @@ ref_scale_reader(void *arg)
goto end;
// Make sure that the CPU is affinitized appropriately during testing.
- WARN_ON_ONCE(raw_smp_processor_id() != me);
+ WARN_ON_ONCE(raw_smp_processor_id() != me % nr_cpu_ids);
WRITE_ONCE(rt->start_reader, 0);
if (!atomic_dec_return(&n_started))
--
2.46.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/6] rcuscale: Add guest_os_delay module parameter
2024-11-06 16:02 [PATCH 0/6] RCU torture for v6.13 Frederic Weisbecker
2024-11-06 16:02 ` [PATCH 1/6] torture: Add --no-affinity parameter to kvm.sh Frederic Weisbecker
2024-11-06 16:02 ` [PATCH 2/6] refscale: Correct affinity check Frederic Weisbecker
@ 2024-11-06 16:02 ` Frederic Weisbecker
2024-11-06 16:02 ` [PATCH 4/6] rcutorture: Avoid printing cpu=-1 for no-fault RCU boost failure Frederic Weisbecker
` (3 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Frederic Weisbecker @ 2024-11-06 16:02 UTC (permalink / raw)
To: LKML
Cc: Paul E. McKenney, Boqun Feng, Joel Fernandes, Josh Triplett,
Lai Jiangshan, Mathieu Desnoyers, Neeraj Upadhyay, Steven Rostedt,
Uladzislau Rezki, Zqiang, rcu, Frederic Weisbecker
From: "Paul E. McKenney" <paulmck@kernel.org>
This commit adds a guest_os_delay module parameter that extends warm-up
and cool-down the specified number of seconds before and after the series
of test runs. This allows the data-collection intervals from any given
rcuscale guest OSes to line up with active periods in the other rcuscale
guest OSes, and also allows the thermal warm-up period required to obtain
consistent results from one test to the next.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
---
kernel/rcu/refscale.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/kernel/rcu/refscale.c b/kernel/rcu/refscale.c
index 25910ebe95c0..c8374760e003 100644
--- a/kernel/rcu/refscale.c
+++ b/kernel/rcu/refscale.c
@@ -75,6 +75,9 @@ MODULE_PARM_DESC(scale_type, "Type of test (rcu, srcu, refcnt, rwsem, rwlock.");
torture_param(int, verbose, 0, "Enable verbose debugging printk()s");
torture_param(int, verbose_batched, 0, "Batch verbose debugging printk()s");
+// Number of seconds to extend warm-up and cool-down for multiple guest OSes
+torture_param(long, guest_os_delay, 0,
+ "Number of seconds to extend warm-up/cool-down for multiple guest OSes.");
// Wait until there are multiple CPUs before starting test.
torture_param(int, holdoff, IS_BUILTIN(CONFIG_RCU_REF_SCALE_TEST) ? 10 : 0,
"Holdoff time before test start (s)");
@@ -801,6 +804,18 @@ static void rcu_scale_one_reader(void)
cur_ops->delaysection(loops, readdelay / 1000, readdelay % 1000);
}
+// Warm up cache, or, if needed run a series of rcu_scale_one_reader()
+// to allow multiple rcuscale guest OSes to collect mutually valid data.
+static void rcu_scale_warm_cool(void)
+{
+ unsigned long jdone = jiffies + (guest_os_delay > 0 ? guest_os_delay * HZ : -1);
+
+ do {
+ rcu_scale_one_reader();
+ cond_resched();
+ } while (time_before(jiffies, jdone));
+}
+
// Reader kthread. Repeatedly does empty RCU read-side
// critical section, minimizing update-side interference.
static int
@@ -957,6 +972,7 @@ static int main_func(void *arg)
schedule_timeout_uninterruptible(1);
// Start exp readers up per experiment
+ rcu_scale_warm_cool();
for (exp = 0; exp < nruns && !torture_must_stop(); exp++) {
if (torture_must_stop())
goto end;
@@ -987,6 +1003,7 @@ static int main_func(void *arg)
result_avg[exp] = div_u64(1000 * process_durations(nreaders), nreaders * loops);
}
+ rcu_scale_warm_cool();
// Print the average of all experiments
SCALEOUT("END OF TEST. Calculating average duration per loop (nanoseconds)...\n");
--
2.46.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/6] rcutorture: Avoid printing cpu=-1 for no-fault RCU boost failure
2024-11-06 16:02 [PATCH 0/6] RCU torture for v6.13 Frederic Weisbecker
` (2 preceding siblings ...)
2024-11-06 16:02 ` [PATCH 3/6] rcuscale: Add guest_os_delay module parameter Frederic Weisbecker
@ 2024-11-06 16:02 ` Frederic Weisbecker
2024-11-06 16:02 ` [PATCH 5/6] rcuscale: Do a proper cleanup if kfree_scale_init() fails Frederic Weisbecker
` (2 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Frederic Weisbecker @ 2024-11-06 16:02 UTC (permalink / raw)
To: LKML
Cc: Paul E. McKenney, Boqun Feng, Joel Fernandes, Josh Triplett,
Lai Jiangshan, Mathieu Desnoyers, Neeraj Upadhyay, Steven Rostedt,
Uladzislau Rezki, Zqiang, rcu, Frederic Weisbecker
From: "Paul E. McKenney" <paulmck@kernel.org>
If a CPU runs throughout the stalled grace period without passing
through a quiescent state, RCU priority boosting cannot help.
The rcu_torture_boost_failed() function therefore prints a message
flagging the first such CPU. However, if the stall was instead due to
(for example) RCU's grace-period kthread being starved of CPU, there will
be no such CPU, causing rcu_check_boost_fail() to instead pass back -1
through its cpup CPU-pointer parameter.
Therefore, the current message complains about a mythical CPU -1.
This commit therefore checks for this situation, and notes that all CPUs
have passed through a quiescent state.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
---
kernel/rcu/rcutorture.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index bb75dbf5c800..e92fa97fc76f 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -1059,8 +1059,13 @@ static bool rcu_torture_boost_failed(unsigned long gp_state, unsigned long *star
// At most one persisted message per boost test.
j = jiffies;
lp = READ_ONCE(last_persist);
- if (time_after(j, lp + mininterval) && cmpxchg(&last_persist, lp, j) == lp)
- pr_info("Boost inversion persisted: No QS from CPU %d\n", cpu);
+ if (time_after(j, lp + mininterval) &&
+ cmpxchg(&last_persist, lp, j) == lp) {
+ if (cpu < 0)
+ pr_info("Boost inversion persisted: QS from all CPUs\n");
+ else
+ pr_info("Boost inversion persisted: No QS from CPU %d\n", cpu);
+ }
return false; // passed on a technicality
}
VERBOSE_TOROUT_STRING("rcu_torture_boost boosting failed");
--
2.46.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 5/6] rcuscale: Do a proper cleanup if kfree_scale_init() fails
2024-11-06 16:02 [PATCH 0/6] RCU torture for v6.13 Frederic Weisbecker
` (3 preceding siblings ...)
2024-11-06 16:02 ` [PATCH 4/6] rcutorture: Avoid printing cpu=-1 for no-fault RCU boost failure Frederic Weisbecker
@ 2024-11-06 16:02 ` Frederic Weisbecker
2024-11-11 9:54 ` Neeraj Upadhyay
2024-11-06 16:02 ` [PATCH 6/6] rcuscale: Remove redundant WARN_ON_ONCE() splat Frederic Weisbecker
2024-11-11 17:35 ` [PATCH 0/6] RCU torture for v6.13 Neeraj Upadhyay
6 siblings, 1 reply; 11+ messages in thread
From: Frederic Weisbecker @ 2024-11-06 16:02 UTC (permalink / raw)
To: LKML
Cc: Uladzislau Rezki (Sony), Boqun Feng, Joel Fernandes,
Josh Triplett, Lai Jiangshan, Mathieu Desnoyers, Neeraj Upadhyay,
Paul E . McKenney, Steven Rostedt, Zqiang, rcu, Dan Carpenter,
Frederic Weisbecker
From: "Uladzislau Rezki (Sony)" <urezki@gmail.com>
A static analyzer for C, Smatch, reports and triggers below
warnings:
kernel/rcu/rcuscale.c:1215 rcu_scale_init()
warn: inconsistent returns 'global &fullstop_mutex'.
The checker complains about, we do not unlock the "fullstop_mutex"
mutex, in case of hitting below error path:
<snip>
...
if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start < 2 * HZ)) {
pr_alert("ERROR: call_rcu() CBs are not being lazy as expected!\n");
WARN_ON_ONCE(1);
return -1;
^^^^^^^^^^
...
<snip>
it happens because "-1" is returned right away instead of
doing a proper unwinding.
Fix it by jumping to "unwind" label instead of returning -1.
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/rcu/ZxfTrHuEGtgnOYWp@pc636/T/
Fixes: 084e04fff160 ("rcuscale: Add laziness and kfree tests")
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
Reviewed-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
---
kernel/rcu/rcuscale.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/rcu/rcuscale.c b/kernel/rcu/rcuscale.c
index 6d37596deb1f..de7d511e6be4 100644
--- a/kernel/rcu/rcuscale.c
+++ b/kernel/rcu/rcuscale.c
@@ -890,13 +890,13 @@ kfree_scale_init(void)
if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start < 2 * HZ)) {
pr_alert("ERROR: call_rcu() CBs are not being lazy as expected!\n");
WARN_ON_ONCE(1);
- return -1;
+ goto unwind;
}
if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start > 3 * HZ)) {
pr_alert("ERROR: call_rcu() CBs are being too lazy!\n");
WARN_ON_ONCE(1);
- return -1;
+ goto unwind;
}
}
--
2.46.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 6/6] rcuscale: Remove redundant WARN_ON_ONCE() splat
2024-11-06 16:02 [PATCH 0/6] RCU torture for v6.13 Frederic Weisbecker
` (4 preceding siblings ...)
2024-11-06 16:02 ` [PATCH 5/6] rcuscale: Do a proper cleanup if kfree_scale_init() fails Frederic Weisbecker
@ 2024-11-06 16:02 ` Frederic Weisbecker
2024-11-11 17:35 ` [PATCH 0/6] RCU torture for v6.13 Neeraj Upadhyay
6 siblings, 0 replies; 11+ messages in thread
From: Frederic Weisbecker @ 2024-11-06 16:02 UTC (permalink / raw)
To: LKML
Cc: Uladzislau Rezki (Sony), Boqun Feng, Joel Fernandes,
Josh Triplett, Lai Jiangshan, Mathieu Desnoyers, Neeraj Upadhyay,
Paul E . McKenney, Steven Rostedt, Zqiang, rcu,
Frederic Weisbecker
From: "Uladzislau Rezki (Sony)" <urezki@gmail.com>
There are two places where WARN_ON_ONCE() is called two times
in the error paths. One which is encapsulated into if() condition
and another one, which is unnecessary, is placed in the brackets.
Remove an extra WARN_ON_ONCE() splat which is in brackets.
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
Reviewed-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
---
kernel/rcu/rcuscale.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/kernel/rcu/rcuscale.c b/kernel/rcu/rcuscale.c
index de7d511e6be4..1d8bb603c289 100644
--- a/kernel/rcu/rcuscale.c
+++ b/kernel/rcu/rcuscale.c
@@ -889,13 +889,11 @@ kfree_scale_init(void)
if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start < 2 * HZ)) {
pr_alert("ERROR: call_rcu() CBs are not being lazy as expected!\n");
- WARN_ON_ONCE(1);
goto unwind;
}
if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start > 3 * HZ)) {
pr_alert("ERROR: call_rcu() CBs are being too lazy!\n");
- WARN_ON_ONCE(1);
goto unwind;
}
}
--
2.46.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 5/6] rcuscale: Do a proper cleanup if kfree_scale_init() fails
2024-11-06 16:02 ` [PATCH 5/6] rcuscale: Do a proper cleanup if kfree_scale_init() fails Frederic Weisbecker
@ 2024-11-11 9:54 ` Neeraj Upadhyay
2024-11-11 10:53 ` Uladzislau Rezki
0 siblings, 1 reply; 11+ messages in thread
From: Neeraj Upadhyay @ 2024-11-11 9:54 UTC (permalink / raw)
To: Frederic Weisbecker, LKML
Cc: Uladzislau Rezki (Sony), Boqun Feng, Joel Fernandes,
Josh Triplett, Lai Jiangshan, Mathieu Desnoyers,
Paul E . McKenney, Steven Rostedt, Zqiang, rcu, Dan Carpenter
> diff --git a/kernel/rcu/rcuscale.c b/kernel/rcu/rcuscale.c
> index 6d37596deb1f..de7d511e6be4 100644
> --- a/kernel/rcu/rcuscale.c
> +++ b/kernel/rcu/rcuscale.c
> @@ -890,13 +890,13 @@ kfree_scale_init(void)
> if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start < 2 * HZ)) {
> pr_alert("ERROR: call_rcu() CBs are not being lazy as expected!\n");
> WARN_ON_ONCE(1);
> - return -1;
> + goto unwind;
Do we need to set firsterr = -1 here before "goto unwind"? Otherwise, 0
is returned from kfree_scale_init().
> }
>
> if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start > 3 * HZ)) {
> pr_alert("ERROR: call_rcu() CBs are being too lazy!\n");
> WARN_ON_ONCE(1);
> - return -1;
> + goto unwind;
Ditto
- Neeraj
> }
> }
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 5/6] rcuscale: Do a proper cleanup if kfree_scale_init() fails
2024-11-11 9:54 ` Neeraj Upadhyay
@ 2024-11-11 10:53 ` Uladzislau Rezki
2024-11-11 11:22 ` Uladzislau Rezki
0 siblings, 1 reply; 11+ messages in thread
From: Uladzislau Rezki @ 2024-11-11 10:53 UTC (permalink / raw)
To: Neeraj Upadhyay
Cc: Frederic Weisbecker, LKML, Uladzislau Rezki (Sony), Boqun Feng,
Joel Fernandes, Josh Triplett, Lai Jiangshan, Mathieu Desnoyers,
Paul E . McKenney, Steven Rostedt, Zqiang, rcu, Dan Carpenter
On Mon, Nov 11, 2024 at 03:24:38PM +0530, Neeraj Upadhyay wrote:
>
> > diff --git a/kernel/rcu/rcuscale.c b/kernel/rcu/rcuscale.c
> > index 6d37596deb1f..de7d511e6be4 100644
> > --- a/kernel/rcu/rcuscale.c
> > +++ b/kernel/rcu/rcuscale.c
> > @@ -890,13 +890,13 @@ kfree_scale_init(void)
> > if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start < 2 * HZ)) {
> > pr_alert("ERROR: call_rcu() CBs are not being lazy as expected!\n");
> > WARN_ON_ONCE(1);
> > - return -1;
> > + goto unwind;
>
> Do we need to set firsterr = -1 here before "goto unwind"? Otherwise, 0
> is returned from kfree_scale_init().
>
> > }
> >
> > if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start > 3 * HZ)) {
> > pr_alert("ERROR: call_rcu() CBs are being too lazy!\n");
> > WARN_ON_ONCE(1);
> > - return -1;
> > + goto unwind;
>
> Ditto
>
Let me check it!
--
Uladzislau Rezki
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 5/6] rcuscale: Do a proper cleanup if kfree_scale_init() fails
2024-11-11 10:53 ` Uladzislau Rezki
@ 2024-11-11 11:22 ` Uladzislau Rezki
0 siblings, 0 replies; 11+ messages in thread
From: Uladzislau Rezki @ 2024-11-11 11:22 UTC (permalink / raw)
To: Neeraj Upadhyay
Cc: Neeraj Upadhyay, Frederic Weisbecker, LKML, Boqun Feng,
Joel Fernandes, Josh Triplett, Lai Jiangshan, Mathieu Desnoyers,
Paul E . McKenney, Steven Rostedt, Zqiang, rcu, Dan Carpenter
On Mon, Nov 11, 2024 at 11:53:45AM +0100, Uladzislau Rezki wrote:
> On Mon, Nov 11, 2024 at 03:24:38PM +0530, Neeraj Upadhyay wrote:
> >
> > > diff --git a/kernel/rcu/rcuscale.c b/kernel/rcu/rcuscale.c
> > > index 6d37596deb1f..de7d511e6be4 100644
> > > --- a/kernel/rcu/rcuscale.c
> > > +++ b/kernel/rcu/rcuscale.c
> > > @@ -890,13 +890,13 @@ kfree_scale_init(void)
> > > if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start < 2 * HZ)) {
> > > pr_alert("ERROR: call_rcu() CBs are not being lazy as expected!\n");
> > > WARN_ON_ONCE(1);
> > > - return -1;
> > > + goto unwind;
> >
> > Do we need to set firsterr = -1 here before "goto unwind"? Otherwise, 0
> > is returned from kfree_scale_init().
> >
> > > }
> > >
> > > if (WARN_ON_ONCE(jiffies_at_lazy_cb - jif_start > 3 * HZ)) {
> > > pr_alert("ERROR: call_rcu() CBs are being too lazy!\n");
> > > WARN_ON_ONCE(1);
> > > - return -1;
> > > + goto unwind;
> >
> > Ditto
> >
> Let me check it!
>
Right you are. I will repost the patch to be align with a previous behaviour.
Thanks!
--
Uladzislau Rezki
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/6] RCU torture for v6.13
2024-11-06 16:02 [PATCH 0/6] RCU torture for v6.13 Frederic Weisbecker
` (5 preceding siblings ...)
2024-11-06 16:02 ` [PATCH 6/6] rcuscale: Remove redundant WARN_ON_ONCE() splat Frederic Weisbecker
@ 2024-11-11 17:35 ` Neeraj Upadhyay
6 siblings, 0 replies; 11+ messages in thread
From: Neeraj Upadhyay @ 2024-11-11 17:35 UTC (permalink / raw)
To: Frederic Weisbecker, LKML
Cc: Boqun Feng, Joel Fernandes, Josh Triplett, Lai Jiangshan,
Mathieu Desnoyers, Paul E . McKenney, Steven Rostedt,
Uladzislau Rezki, Zqiang, rcu
On 11/6/2024 9:32 PM, Frederic Weisbecker wrote:
> Hello,
>
> Please find below the RCU NOCB patches targeted for the upcoming
> merge window.
>
> Paul E. McKenney (4):
> torture: Add --no-affinity parameter to kvm.sh
> refscale: Correct affinity check
> rcuscale: Add guest_os_delay module parameter
> rcutorture: Avoid printing cpu=-1 for no-fault RCU boost failure
>
> Uladzislau Rezki (Sony) (2):
> rcuscale: Do a proper cleanup if kfree_scale_init() fails
> rcuscale: Remove redundant WARN_ON_ONCE() splat
>
> kernel/rcu/rcuscale.c | 6 +--
> kernel/rcu/rcutorture.c | 9 +++-
> kernel/rcu/refscale.c | 19 +++++++-
> .../rcutorture/bin/kvm-test-1-run-batch.sh | 43 ++++++++++---------
> tools/testing/selftests/rcutorture/bin/kvm.sh | 6 +++
> 5 files changed, 56 insertions(+), 27 deletions(-)
>
> Thanks.
Reviewed-by: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
- Neeraj
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2024-11-11 17:35 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-06 16:02 [PATCH 0/6] RCU torture for v6.13 Frederic Weisbecker
2024-11-06 16:02 ` [PATCH 1/6] torture: Add --no-affinity parameter to kvm.sh Frederic Weisbecker
2024-11-06 16:02 ` [PATCH 2/6] refscale: Correct affinity check Frederic Weisbecker
2024-11-06 16:02 ` [PATCH 3/6] rcuscale: Add guest_os_delay module parameter Frederic Weisbecker
2024-11-06 16:02 ` [PATCH 4/6] rcutorture: Avoid printing cpu=-1 for no-fault RCU boost failure Frederic Weisbecker
2024-11-06 16:02 ` [PATCH 5/6] rcuscale: Do a proper cleanup if kfree_scale_init() fails Frederic Weisbecker
2024-11-11 9:54 ` Neeraj Upadhyay
2024-11-11 10:53 ` Uladzislau Rezki
2024-11-11 11:22 ` Uladzislau Rezki
2024-11-06 16:02 ` [PATCH 6/6] rcuscale: Remove redundant WARN_ON_ONCE() splat Frederic Weisbecker
2024-11-11 17:35 ` [PATCH 0/6] RCU torture for v6.13 Neeraj Upadhyay
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).