* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.