From: "Zqiang" <qiang.zhang@linux.dev>
To: paulmck@kernel.org
Cc: frederic@kernel.org, neeraj.upadhyay@kernel.org,
joelagnelf@nvidia.com, urezki@gmail.com, boqun@kernel.org,
rcu@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] rcu-tasks: Remove unused struct rcu_tasks's->n_ipis_fails variables
Date: Thu, 09 Jul 2026 12:04:10 +0000 [thread overview]
Message-ID: <fb82b46f08cb59000db994fcc2f05d1ad531c342@linux.dev> (raw)
In-Reply-To: <dd2f3c67-915c-426b-905d-d457f4245530@paulmck-laptop>
>
> On Tue, Jul 07, 2026 at 01:09:21PM +0000, Zqiang wrote:
>
> >
> > On Mon, Jul 06, 2026 at 06:03:09PM +0800, Zqiang wrote:
> >
> > >
> > > The RCU tasks trace has been reimplemented by 'commit c27cea4416a3
> > > ("rcu: Re-implement RCU Tasks Trace in terms of SRCU-fast")', the
> > > rcu_tasks structure's->n_ipis_fails is no longer used, this commit
> > > therefore remove it.
> > >
> > > Signed-off-by: Zqiang <qiang.zhang@linux.dev>
> > >
> > I have queued both for review and testing, thank you!
> >
> > This patch produced the expected result in my initial tests. However,
> > for the second patch, I used this command to force a stall:
> >
> > tools/testing/selftests/rcutorture/bin/kvm.sh --allcpus --duration 15 --configs "TASKS01 TASKS02 TASKS03 RUDE01" --bootargs "rcutorture.stall_cpu=660" --trust-make
> >
> > Except I got vanilla RCU CPU stall warnings, but not RCU Tasks nor
> > RCU Tasks Rude stall warnings. And not even the "grace period number"
> > pre-stall message. Probably because I am forgetting something. But what
> > did you do to test your change?
> >
> > Hello, Paul
> >
> > The rcutorture module use module_init() to load, however the
> > rcu_tasks_initiate_self_tests() is called in core_initcall(),
> > the core_initcall() have a higher priority than module_init().
> >
> > This is possible, the RCU tasks test may have already completed,
> > but the rcutorture may have only just started.
> >
> > so I use the following modifications to verify:
> >
> > diff --git a/kernel/rcu/tasks.h b/kernel/rcu/tasks.h
> > index d9e1e53f4ccf..7e5ff5108cdd 100644
> > --- a/kernel/rcu/tasks.h
> > +++ b/kernel/rcu/tasks.h
> > @@ -1489,7 +1489,6 @@ static void rcu_tasks_initiate_self_tests(void)
> > pr_info("Running RCU Tasks wait API self tests\n");
> > tests[0].runstart = jiffies;
> > synchronize_rcu_tasks();
> > - call_rcu_tasks(&tests[0].rh, test_rcu_tasks_callback);
> > #endif
> >
> > #ifdef CONFIG_TASKS_RUDE_RCU
> > @@ -1555,6 +1554,7 @@ static void rcu_tasks_verify_work_fn(struct work_struct *work __maybe_unused)
> > static int rcu_tasks_verify_schedule_work(void)
> > {
> > INIT_DELAYED_WORK(&rcu_tasks_verify_work, rcu_tasks_verify_work_fn);
> > + call_rcu_tasks(&tests[0].rh, test_rcu_tasks_callback);
> > rcu_tasks_verify_work_fn(NULL);
> > return 0;
> > }
> >
> Or I can just comment out the call_rcu_tasks() entirely, correct
>
> >
> > Run qemu with bootparams="rcutorture.torture_type=srcu
> > rcutorture.stall_cpu=800 rcutorture.stall_cpu_block=1
> > rcutorture.stall_no_softlockup=1 rcupdate.rcu_tasks_lazy_ms=120000"
> >
> OK, one of my problems was that I was forgetting stall_cpu_block=1,
> which was causing all sorts of other stalls to confuse things. So thank
> you for that!
>
> >
> > [ 30.826022] call_rcu_tasks() has failed boot-time tests.
> > [ 30.826790] rcu_tasks: RTGS_WAIT_CBS(11) since 7596 g:4 i:0 kCuU l:30000
> > [ 30.827424] ------------[ cut here ]------------
> > [ 30.827862] WARNING: kernel/rcu/tasks.h:1533 at rcu_tasks_verify_self_tests+0xa7/0xc0, CPU#1: kworker/1:1/79
> > [ 30.828717] Modules linked in:
> > [ 30.829144] CPU: 1 UID: 0 PID: 79 Comm: kworker/1:1 Tainted: G W 7.1.0-rc4+ #25 PREEMPT(lazy) e641c8af833b714510f82b4c2bc5dbbb1ef1e911
> > [ 30.830176] Tainted: [W]=WARN
> > [ 30.830468] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
> > [ 30.831326] Workqueue: events rcu_tasks_verify_work_fn
> > ....
> > [ 722.218096] INFO: rcu_tasks detected stalls on tasks:
> > [ 722.218689] 0000000095041800: .. nvcsw: 2/2 holdout: 1 idle_cpu: -1/7
> > [ 722.219308] task:rcu_torture_sta state:R running task stack:0 pid:122 tgid:122 ppid:2 task_flags:0x208040 flags:0x00080000
> > [ 722.220442] Call Trace:
> > [ 722.220744] <TASK>
> > [ 722.221035] __schedule+0x2e9/0x1460
> > [ 722.221449] ? preempt_schedule+0x30/0x40
> > [ 722.221895] preempt_schedule_common+0x24/0x90
> > [ 722.222432] preempt_schedule+0x30/0x40
> > [ 722.222842] rcu_torture_stall+0x266/0x430
> > [ 722.223286] ? __kthread_parkme+0x8f/0xe0
> > [ 722.223735] ? __pfx_rcu_torture_stall+0x10/0x10
> > [ 722.224226] kthread+0x13d/0x180
> > [ 722.224600] ? __pfx_kthread+0x10/0x10
> > [ 722.224996] ret_from_fork+0x29d/0x3b0
> > [ 722.225669] ? __pfx_kthread+0x10/0x10
> > [ 722.226131] ret_from_fork_asm+0x1a/0x30
> > [ 722.226668] </TASK>
> >
> But if I comment out that call_rcu_tasks() entirely, then I don't need
> rcutorture to explictly generate a stall. Which means that this:
This is more simpler than my test :) .
>
> tools/testing/selftests/rcutorture/bin/kvm.sh --allcpus --duration 3 --configs "TASKS01" --trust-make
>
> Gets me this:
>
> [ 30.734277] call_rcu_tasks() has failed boot-time tests.
> [ 30.735048] rcu_tasks: RTGS_INVOKE_CBS(10) since 4 g:524 i:0 kCuU l:250
> [ 30.736032] ------------[ cut here ]------------
> [ 30.736668] WARNING: kernel/rcu/tasks.h:1534 at rcu_tasks_verify_work_fn+0x86/0xc0, CPU#0: kworker/0:2/59
> [ 30.737929] Modules linked in:
> [ 30.738467] CPU: 0 UID: 0 PID: 59 Comm: kworker/0:2 Not tainted 7.1.0-rc4-00077-ge5ee2ea2d00a-dirty #1508 PREEMPT(full)
> [ 30.739873] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.15.0-1 04/01/2014
> [ 30.740910] Workqueue: events rcu_tasks_verify_work_fn
> [ 30.741631] RIP: 0010:rcu_tasks_verify_work_fn+0x86/0xc0
> [ 30.742298] Code: 74 27 41 83 fc 01 75 25 48 8b 35 35 0a 9f 01 5b b9 e8 03 00 00 48 c7 c2 60 14 58 ae 5d bf 04 00 00 00 41 5c e9 2b 89 f6 ff 90 <0f> 0b 90 5b 5d 41 5c c3 cc cc cc cc 48 8b 73 10 48 c7 c7 e8 e9 9e
> [ 30.744382] RSP: 0018:ffffa0cf00207e28 EFLAGS: 00010246
> [ 30.744977] RAX: 000000000000003c RBX: ffffffffacf5f100 RCX: 3fffffffffffdfff
> [ 30.745816] RDX: 0000000000000000 RSI: ffffffffffffffff RDI: 0000000000000001
> [ 30.746657] RBP: 0000000000007530 R08: ffffffffacf5ccc8 R09: 3fffffffffffdfff
> [ 30.747494] R10: fffffffface7cce0 R11: 0000000000000784 R12: 00000000ffffffff
> [ 30.748238] R13: ffffffffae581460 R14: ffff980001055605 R15: ffff980001b30600
> [ 30.749058] FS: 0000000000000000(0000) GS:ffff98007198a000(0000) knlGS:0000000000000000
> [ 30.749955] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 30.750653] CR2: 0000000000402007 CR3: 00000000022fa000 CR4: 00000000000006f0
> [ 30.751483] Call Trace:
> [ 30.751777] <TASK>
> [ 30.752032] process_one_work+0x20d/0x6a0
> [ 30.752546] ? lock_is_held_type+0x9e/0x120
> [ 30.753025] worker_thread+0x195/0x350
> [ 30.753511] ? __pfx_worker_thread+0x10/0x10
> [ 30.754003] kthread+0xe8/0x120
> [ 30.754412] ? __pfx_kthread+0x10/0x10
> [ 30.754865] ret_from_fork+0x2a7/0x310
> [ 30.755306] ? __pfx_kthread+0x10/0x10
> [ 30.755767] ret_from_fork_asm+0x1a/0x30
> [ 30.756297] </TASK>
> [ 30.756608] irq event stamp: 2747
> [ 30.756988] hardirqs last enabled at (2755): [<ffffffffab13cfbd>] __up_console_sem+0x4d/0x60
> [ 30.757977] hardirqs last disabled at (2766): [<ffffffffab13cfa2>] __up_console_sem+0x32/0x60
> [ 30.758961] softirqs last enabled at (2430): [<ffffffffab0c357d>] process_one_work+0x20d/0x6a0
> [ 30.759943] softirqs last disabled at (2426): [<ffffffffabdf6b2c>] neigh_periodic_work+0x2c/0x380
> [ 30.760970] ---[ end trace 0000000000000000 ]---
>
> Which has the additional information from your patch.
>
> Thank you for bearing with me!
Thanks you very much!
>
> Thanx, Paul
>
prev parent reply other threads:[~2026-07-09 12:04 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-06 10:03 [PATCH] rcu-tasks: Remove unused struct rcu_tasks's->n_ipis_fails variables Zqiang
2026-07-06 10:03 ` [PATCH] rcu-tasks: Dump rcu tasks status when the boot-test failed Zqiang
2026-07-06 18:44 ` [PATCH] rcu-tasks: Remove unused struct rcu_tasks's->n_ipis_fails variables Paul E. McKenney
2026-07-07 13:09 ` Zqiang
2026-07-08 17:44 ` Paul E. McKenney
2026-07-09 12:04 ` Zqiang [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=fb82b46f08cb59000db994fcc2f05d1ad531c342@linux.dev \
--to=qiang.zhang@linux.dev \
--cc=boqun@kernel.org \
--cc=frederic@kernel.org \
--cc=joelagnelf@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=neeraj.upadhyay@kernel.org \
--cc=paulmck@kernel.org \
--cc=rcu@vger.kernel.org \
--cc=urezki@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox