All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] rcu: Improve task-state reporting readability
@ 2026-06-12  2:34 Kunwu Chan
  2026-06-12  2:34 ` [PATCH v2 1/3] rcu: Use task_state_to_char() in stall-warning prints Kunwu Chan
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Kunwu Chan @ 2026-06-12  2:34 UTC (permalink / raw)
  To: paulmck, frederic, neeraj.upadhyay, joelagnelf, josh, boqun,
	urezki, rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang,
	dave
  Cc: rcu, linux-kernel, Kunwu Chan

From: Kunwu Chan <kunwu.chan@gmail.com>

This series replaces raw hexadecimal task-state values with
task_state_to_char() output in RCU-related diagnostic messages.

---
Changes in v2:
- Split the original patch into three commits, one per file.
- No code changes.

v1:
https://lore.kernel.org/rcu/442e80e0-4f91-421c-ab68-d26e0a031472@paulmck-laptop/

Based on: linux-rcu repo (dev branch)
URL: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
base-commit: 85bf11e84 ("smp: Make CSD lock acquisition atomic for debug mode")

Kunwu Chan (3):
  rcu: Use task_state_to_char() in stall-warning prints
  rcutorture: Use task_state_to_char() for task-state reporting
  hazptrtorture: Use task_state_to_char() for task-state reporting

 kernel/rcu/hazptrtorture.c |  4 ++--
 kernel/rcu/rcutorture.c    |  4 ++--
 kernel/rcu/tree_stall.h    | 12 ++++++------
 3 files changed, 10 insertions(+), 10 deletions(-)

-- 
2.43.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v2 1/3] rcu: Use task_state_to_char() in stall-warning prints
  2026-06-12  2:34 [PATCH v2 0/3] rcu: Improve task-state reporting readability Kunwu Chan
@ 2026-06-12  2:34 ` Kunwu Chan
  2026-06-12  2:34 ` [PATCH v2 2/3] rcutorture: Use task_state_to_char() for task-state reporting Kunwu Chan
  2026-06-12  2:34 ` [PATCH v2 3/3] hazptrtorture: " Kunwu Chan
  2 siblings, 0 replies; 4+ messages in thread
From: Kunwu Chan @ 2026-06-12  2:34 UTC (permalink / raw)
  To: paulmck, frederic, neeraj.upadhyay, joelagnelf, josh, boqun,
	urezki, rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang,
	dave
  Cc: rcu, linux-kernel, Kunwu Chan, Wang Lian

From: Kunwu Chan <kunwu.chan@gmail.com>

RCU stall warnings currently print task states as raw hexadecimal
values, requiring developers to manually decode them.

Use task_state_to_char() so that stall warnings show the same symbolic
task-state representation used elsewhere in the kernel.

For example:
	->state=0x402  becomes  ->state=I
	->state=0x0    becomes  ->state=R
	->state=0x2    becomes  ->state=D

This improves readability while preserving the underlying diagnostic
information.

Suggested-by: Zqiang <qiang.zhang@linux.dev>
Co-developed-by: Wang Lian <lianux.mm@gmail.com>
Signed-off-by: Wang Lian <lianux.mm@gmail.com>
Signed-off-by: Kunwu Chan <kunwu.chan@gmail.com>
---
 kernel/rcu/tree_stall.h | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h
index 317ef91b1..7ca434b08 100644
--- a/kernel/rcu/tree_stall.h
+++ b/kernel/rcu/tree_stall.h
@@ -596,13 +596,13 @@ static void rcu_check_gp_kthread_starvation(void)
 
 	if (rcu_is_gp_kthread_starving(&j)) {
 		cpu = gpk ? task_cpu(gpk) : -1;
-		pr_err("%s kthread starved for %ld jiffies! g%ld f%#x %s(%d) ->state=%#x ->cpu=%d\n",
+		pr_err("%s kthread starved for %ld jiffies! g%ld f%#x %s(%d) ->state=%c ->cpu=%d\n",
 		       rcu_state.name, j,
 		       (long)rcu_seq_current(&rcu_state.gp_seq),
 		       data_race(READ_ONCE(rcu_state.gp_flags)),
 		       gp_state_getname(rcu_state.gp_state),
 		       data_race(READ_ONCE(rcu_state.gp_state)),
-		       gpk ? data_race(READ_ONCE(gpk->__state)) : ~0, cpu);
+		       gpk ? task_state_to_char(gpk) : '?', cpu);
 		if (gpk) {
 			struct rcu_data *rdp = per_cpu_ptr(&rcu_data, cpu);
 
@@ -639,12 +639,12 @@ static void rcu_check_gp_kthread_expired_fqs_timer(void)
 	    time_after(jiffies, jiffies_fqs + RCU_STALL_MIGHT_MIN) &&
 	    gpk && !READ_ONCE(gpk->on_rq)) {
 		cpu = task_cpu(gpk);
-		pr_err("%s kthread timer wakeup didn't happen for %ld jiffies! g%ld f%#x %s(%d) ->state=%#x\n",
+		pr_err("%s kthread timer wakeup didn't happen for %ld jiffies! g%ld f%#x %s(%d) ->state=%c\n",
 		       rcu_state.name, (jiffies - jiffies_fqs),
 		       (long)rcu_seq_current(&rcu_state.gp_seq),
 		       data_race(READ_ONCE(rcu_state.gp_flags)), // Diagnostic read
 		       gp_state_getname(RCU_GP_WAIT_FQS), RCU_GP_WAIT_FQS,
-		       data_race(READ_ONCE(gpk->__state)));
+		       task_state_to_char(gpk));
 		pr_err("\tPossible timer handling issue on cpu=%d timer-softirq=%u\n",
 		       cpu, kstat_softirqs_cpu(TIMER_SOFTIRQ, cpu));
 	}
@@ -971,10 +971,10 @@ void show_rcu_gp_kthreads(void)
 	jr = j - data_race(READ_ONCE(rcu_state.gp_req_activity));
 	js = j - data_race(READ_ONCE(rcu_state.gp_start));
 	jw = j - data_race(READ_ONCE(rcu_state.gp_wake_time));
-	pr_info("%s: wait state: %s(%d) ->state: %#x ->rt_priority %u delta ->gp_start %lu ->gp_activity %lu ->gp_req_activity %lu ->gp_wake_time %lu ->gp_wake_seq %ld ->gp_seq %ld ->gp_seq_needed %ld ->gp_max %lu ->gp_flags %#x\n",
+	pr_info("%s: wait state: %s(%d) ->state: %c ->rt_priority %u delta ->gp_start %lu ->gp_activity %lu ->gp_req_activity %lu ->gp_wake_time %lu ->gp_wake_seq %ld ->gp_seq %ld ->gp_seq_needed %ld ->gp_max %lu ->gp_flags %#x\n",
 		rcu_state.name, gp_state_getname(rcu_state.gp_state),
 		data_race(READ_ONCE(rcu_state.gp_state)),
-		t ? data_race(READ_ONCE(t->__state)) : 0x1ffff, t ? t->rt_priority : 0xffU,
+		t ? task_state_to_char(t) : '?', t ? t->rt_priority : 0xffU,
 		js, ja, jr, jw, (long)data_race(READ_ONCE(rcu_state.gp_wake_seq)),
 		(long)data_race(READ_ONCE(rcu_state.gp_seq)),
 		(long)data_race(READ_ONCE(rcu_get_root()->gp_seq_needed)),
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v2 2/3] rcutorture: Use task_state_to_char() for task-state reporting
  2026-06-12  2:34 [PATCH v2 0/3] rcu: Improve task-state reporting readability Kunwu Chan
  2026-06-12  2:34 ` [PATCH v2 1/3] rcu: Use task_state_to_char() in stall-warning prints Kunwu Chan
@ 2026-06-12  2:34 ` Kunwu Chan
  2026-06-12  2:34 ` [PATCH v2 3/3] hazptrtorture: " Kunwu Chan
  2 siblings, 0 replies; 4+ messages in thread
From: Kunwu Chan @ 2026-06-12  2:34 UTC (permalink / raw)
  To: paulmck, frederic, neeraj.upadhyay, joelagnelf, josh, boqun,
	urezki, rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang,
	dave
  Cc: rcu, linux-kernel, Kunwu Chan, Wang Lian

From: Kunwu Chan <kunwu.chan@gmail.com>

Use the kernel's standard symbolic task-state representation instead of
printing raw hexadecimal task-state values.

Suggested-by: Zqiang <qiang.zhang@linux.dev>
Co-developed-by: Wang Lian <lianux.mm@gmail.com>
Signed-off-by: Wang Lian <lianux.mm@gmail.com>
Signed-off-by: Kunwu Chan <kunwu.chan@gmail.com>
---
 kernel/rcu/rcutorture.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index fcb421ced..4d4ebeeea 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -3074,10 +3074,10 @@ rcu_torture_stats_print(void)
 		if (cur_ops->get_gp_data)
 			cur_ops->get_gp_data(&flags, &gp_seq);
 		wtp = READ_ONCE(writer_task);
-		pr_alert("??? Writer stall state %s(%d) g%lu f%#x ->state %#x cpu %d\n",
+		pr_alert("??? Writer stall state %s(%d) g%lu f%#x ->state %c cpu %d\n",
 			 rcu_torture_writer_state_getname(),
 			 rcu_torture_writer_state, gp_seq, flags,
-			 wtp == NULL ? ~0U : wtp->__state,
+			 wtp == NULL ? '?' : task_state_to_char(wtp),
 			 wtp == NULL ? -1 : (int)task_cpu(wtp));
 		if (!splatted && wtp) {
 			sched_show_task(wtp);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v2 3/3] hazptrtorture: Use task_state_to_char() for task-state reporting
  2026-06-12  2:34 [PATCH v2 0/3] rcu: Improve task-state reporting readability Kunwu Chan
  2026-06-12  2:34 ` [PATCH v2 1/3] rcu: Use task_state_to_char() in stall-warning prints Kunwu Chan
  2026-06-12  2:34 ` [PATCH v2 2/3] rcutorture: Use task_state_to_char() for task-state reporting Kunwu Chan
@ 2026-06-12  2:34 ` Kunwu Chan
  2 siblings, 0 replies; 4+ messages in thread
From: Kunwu Chan @ 2026-06-12  2:34 UTC (permalink / raw)
  To: paulmck, frederic, neeraj.upadhyay, joelagnelf, josh, boqun,
	urezki, rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang,
	dave
  Cc: rcu, linux-kernel, Kunwu Chan, Wang Lian

From: Kunwu Chan <kunwu.chan@gmail.com>

Use the kernel's standard symbolic task-state representation instead of
printing raw hexadecimal task-state values.

Suggested-by: Zqiang <qiang.zhang@linux.dev>
Co-developed-by: Wang Lian <lianux.mm@gmail.com>
Signed-off-by: Wang Lian <lianux.mm@gmail.com>
Signed-off-by: Kunwu Chan <kunwu.chan@gmail.com>
---
 kernel/rcu/hazptrtorture.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/rcu/hazptrtorture.c b/kernel/rcu/hazptrtorture.c
index 0da0a4606..19ea479c9 100644
--- a/kernel/rcu/hazptrtorture.c
+++ b/kernel/rcu/hazptrtorture.c
@@ -497,10 +497,10 @@ hazptr_torture_stats_print(void)
 		unsigned long __maybe_unused gp_seq = 0;
 
 		wtp = READ_ONCE(writer_task);
-		pr_alert("??? Writer stall state %s(%d) g%lu f%#x ->state %#x cpu %d\n",
+		pr_alert("??? Writer stall state %s(%d) g%lu f%#x ->state %c cpu %d\n",
 			 hazptr_torture_writer_state_getname(),
 			 hazptr_torture_writer_state, gp_seq, flags,
-			 wtp == NULL ? ~0U : wtp->__state,
+			 wtp == NULL ? '?' : task_state_to_char(wtp),
 			 wtp == NULL ? -1 : (int)task_cpu(wtp));
 		if (!splatted && wtp) {
 			sched_show_task(wtp);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-06-12  2:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-12  2:34 [PATCH v2 0/3] rcu: Improve task-state reporting readability Kunwu Chan
2026-06-12  2:34 ` [PATCH v2 1/3] rcu: Use task_state_to_char() in stall-warning prints Kunwu Chan
2026-06-12  2:34 ` [PATCH v2 2/3] rcutorture: Use task_state_to_char() for task-state reporting Kunwu Chan
2026-06-12  2:34 ` [PATCH v2 3/3] hazptrtorture: " Kunwu Chan

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.