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, Joel Fernandes <joelagnelf@nvidia.com>,
"Paul E . McKenney" <paulmck@kernel.org>
Subject: [PATCH RFC 2/2] scftorture: Make invoker threads actually wait for all threads to start
Date: Thu, 30 Jul 2026 17:51:58 -0700 [thread overview]
Message-ID: <20260731005158.3530675-2-paulmck@kernel.org> (raw)
In-Reply-To: <d470e612-b88a-4916-a1b9-1a6e8e6f968b@paulmck-laptop>
From: Joel Fernandes <joelagnelf@nvidia.com>
Each scftorture_invoker() thread decrements n_started, which is
initialized to the number of threads, and is then supposed to wait
until all of its siblings have also checked in before starting the
test proper. However, the wait loop is guarded by
!atomic_dec_return(&n_started), which is true only for the final
thread to arrive, and by then n_started is already zero, so the
final thread does not wait either. The side-effect (possibly positive)
is that no thread ever waits and the start-synchronization barrier is
dead code, with early threads beginning to hammer smp_call_function*()
while later threads are still being spawned.
Invert the test so that every thread other than the last spins until
n_started reaches zero, making the threads start testing together as
intended. The existing torture_must_stop() check in the wait loop
continues to bound the wait during shutdown.
We can also drop the spinning entirely if the intent is to leave it as
dead code, however for the current intent, this patches fixes the code.
Signed-off-by: Joel Fernandes <joelagnelf@nvidia.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/scftorture.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/scftorture.c b/kernel/scftorture.c
index ffd6c83732ee74..392df1b4d4eda2 100644
--- a/kernel/scftorture.c
+++ b/kernel/scftorture.c
@@ -497,7 +497,7 @@ static int scftorture_invoker(void *arg)
"%s: Wanted CPU %d, running on %d, nr_cpu_ids = %d\n",
__func__, scfp->cpu, curcpu, nr_cpu_ids);
- if (!atomic_dec_return(&n_started))
+ if (atomic_dec_return(&n_started))
while (atomic_read_acquire(&n_started)) {
if (torture_must_stop()) {
VERBOSE_SCFTORTOUT("scftorture_invoker %d ended before starting", scfp->cpu);
--
2.40.1
prev parent reply other threads:[~2026-07-31 0:51 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-31 0:51 [PATCH 0/2] SCF torture-test updates for v7.3 Paul E. McKenney
2026-07-31 0:51 ` [PATCH RFC 1/2] scftorture: Count single_rpc offline failures in statistics output Paul E. McKenney
2026-07-31 0:51 ` Paul E. McKenney [this message]
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=20260731005158.3530675-2-paulmck@kernel.org \
--to=paulmck@kernel.org \
--cc=joelagnelf@nvidia.com \
--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 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.