aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcu/tree.c
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2015-01-22 17:32:06 -0500
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2015-03-11 16:22:38 -0400
commit237a0f2193c6daf9b1edd7fd15d55e680f268952 (patch)
tree7f7c0b994878808a47842138a3026620fc2c6edf /kernel/rcu/tree.c
parent18c629eaebf1814ca7f0c27327f75aa93aa4a5de (diff)
rcu: Detect stalls caused by failure to propagate up rcu_node tree
If all CPUs have passed through quiescent states, then stalls might be due to starvation of the grace-period kthread or to failure to propagate the quiescent states up the rcu_node combining tree. The current stall warning messages do not differentiate, so this commit adds a printout of the root rcu_node structure's ->qsmask field. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcu/tree.c')
-rw-r--r--kernel/rcu/tree.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 98da632d1d49..3b7e4133ca99 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -1196,9 +1196,10 @@ static void print_other_cpu_stall(struct rcu_state *rsp, unsigned long gpnum)
1196 } else { 1196 } else {
1197 j = jiffies; 1197 j = jiffies;
1198 gpa = ACCESS_ONCE(rsp->gp_activity); 1198 gpa = ACCESS_ONCE(rsp->gp_activity);
1199 pr_err("All QSes seen, last %s kthread activity %ld (%ld-%ld), jiffies_till_next_fqs=%ld\n", 1199 pr_err("All QSes seen, last %s kthread activity %ld (%ld-%ld), jiffies_till_next_fqs=%ld, root ->qsmask %#lx\n",
1200 rsp->name, j - gpa, j, gpa, 1200 rsp->name, j - gpa, j, gpa,
1201 jiffies_till_next_fqs); 1201 jiffies_till_next_fqs,
1202 rcu_get_root(rsp)->qsmask);
1202 /* In this case, the current CPU might be at fault. */ 1203 /* In this case, the current CPU might be at fault. */
1203 sched_show_task(current); 1204 sched_show_task(current);
1204 } 1205 }