From: Kunwu Chan <[email protected]>

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 <[email protected]>
Co-developed-by: Wang Lian <[email protected]>
Signed-off-by: Wang Lian <[email protected]>
Signed-off-by: Kunwu Chan <[email protected]>
---
 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


Reply via email to