rcu: Add ->rt_priority and ->gp_start to show_rcu_gp_kthreads() output
authorPaul E. McKenney <paulmck@kernel.org>
Sat, 3 Apr 2021 04:51:50 +0000 (21:51 -0700)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 10 May 2021 23:22:54 +0000 (16:22 -0700)
This commit adds ->rt_priority and ->gp_start to show_rcu_gp_kthreads()
output in order to better diagnose RCU priority boosting failures.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tree_stall.h

index 59b95cc..fb47025 100644 (file)
@@ -726,6 +726,7 @@ void show_rcu_gp_kthreads(void)
        unsigned long j;
        unsigned long ja;
        unsigned long jr;
+       unsigned long js;
        unsigned long jw;
        struct rcu_data *rdp;
        struct rcu_node *rnp;
@@ -734,11 +735,12 @@ void show_rcu_gp_kthreads(void)
        j = jiffies;
        ja = j - data_race(rcu_state.gp_activity);
        jr = j - data_race(rcu_state.gp_req_activity);
+       js = j - data_race(rcu_state.gp_start);
        jw = j - data_race(rcu_state.gp_wake_time);
-       pr_info("%s: wait state: %s(%d) ->state: %#lx delta ->gp_activity %lu ->gp_req_activity %lu ->gp_wake_time %lu ->gp_wake_seq %ld ->gp_seq %ld ->gp_seq_needed %ld ->gp_flags %#x\n",
+       pr_info("%s: wait state: %s(%d) ->state: %#lx ->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_flags %#x\n",
                rcu_state.name, gp_state_getname(rcu_state.gp_state),
-               rcu_state.gp_state, t ? t->state : 0x1ffffL,
-               ja, jr, jw, (long)data_race(rcu_state.gp_wake_seq),
+               rcu_state.gp_state, t ? t->state : 0x1ffffL, t ? t->rt_priority : 0xffU,
+               js, ja, jr, jw, (long)data_race(rcu_state.gp_wake_seq),
                (long)data_race(rcu_state.gp_seq),
                (long)data_race(rcu_get_root()->gp_seq_needed),
                data_race(rcu_state.gp_flags));