From: Donglin Peng <dolinux.peng@gmail.com>
To: paulmck@kernel.org
Cc: frederic@kernel.org, neeraj.upadhyay@kernel.org,
joelagnelf@nvidia.com, qiang.zhang@linux.dev,
rostedt@goodmis.org, rcu@vger.kernel.org,
linux-kernel@vger.kernel.org,
Donglin Peng <pengdonglin@xiaomi.com>
Subject: [PATCH v2] rcu: Align stall warning 'idle=' output with documentation
Date: Mon, 5 Jan 2026 11:21:12 +0800 [thread overview]
Message-ID: <20260105032112.1156359-1-dolinux.peng@gmail.com> (raw)
From: Donglin Peng <pengdonglin@xiaomi.com>
The RCU stall warning message includes an "idle=" field to indicate
the dyntick-idle state of a CPU. According to Documentation/RCU/stallwarn.rst,
the hexadecimal number before the first '/' represents the low-order 16
bits of the dynticks counter. An even value denotes that the CPU is in
dyntick-idle mode, while an odd value indicates otherwise.
This was valid until commit 171476775d32 ("context_tracking: Convert state to atomic_t"),
which merged the context-tracking state and dynticks counter into a
single atomic variable. In the new layout, the dynticks counter occupies
the higher bits starting from CT_RCU_WATCHING_START.
However, the current stall warning code prints the value from
`ct_rcu_watching_cpu()`, which returns `atomic_read(&ct->state) &
CT_RCU_WATCHING_MASK`. This masks out (clears) the lower state bits,
resulting in a value that is always even. This obscures the CPU's true
idle state and makes the output inconsistent with the documentation.
To restore consistency between the code's output and the documentation,
shift the atomic value right by CT_RCU_WATCHING_START bits before printing.
This extracts and displays only the relevant dynticks counter portion,
allowing the parity (even/odd) to correctly reflect the CPU's dyntick-idle
state.
Fixes: 171476775d32 ("context_tracking: Convert state to atomic_t")
Signed-off-by: Donglin Peng <pengdonglin@xiaomi.com>
Reviewed-by: Joel Fernandes <joelagnelf@nvidia.com>
---
v2:
- Use CT_RCU_WATCHING_START to replace ilog2(CT_RCU_WATCHING) to clean
up the code, thanks to Zqiang.
- Clarify the commit message.
---
kernel/rcu/tree_stall.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h
index b67532cb8770..fd9d7fd6e17c 100644
--- a/kernel/rcu/tree_stall.h
+++ b/kernel/rcu/tree_stall.h
@@ -555,7 +555,7 @@ static void print_cpu_stall_info(int cpu)
rdp->rcu_iw_pending ? (int)min(delta, 9UL) + '0' :
"!."[!delta],
ticks_value, ticks_title,
- ct_rcu_watching_cpu(cpu) & 0xffff,
+ (ct_rcu_watching_cpu(cpu) >> CT_RCU_WATCHING_START) & 0xffff,
ct_nesting_cpu(cpu), ct_nmi_nesting_cpu(cpu),
rdp->softirq_snap, kstat_softirqs_cpu(RCU_SOFTIRQ, cpu),
data_race(rcu_state.n_force_qs) - rcu_state.n_force_qs_gpstart,
--
2.34.1
next reply other threads:[~2026-01-05 3:21 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-05 3:21 Donglin Peng [this message]
2026-09-04 12:24 ` Peng Donglin
2026-09-11 16:05 ` Paul E. McKenney
2026-09-16 13:37 ` Donglin Peng
2026-09-16 14:36 ` Paul E. McKenney
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=20260105032112.1156359-1-dolinux.peng@gmail.com \
--to=dolinux.peng@gmail.com \
--cc=frederic@kernel.org \
--cc=joelagnelf@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=neeraj.upadhyay@kernel.org \
--cc=paulmck@kernel.org \
--cc=pengdonglin@xiaomi.com \
--cc=qiang.zhang@linux.dev \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®