aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcu/tree.c
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2018-05-28 13:33:08 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2018-07-12 18:39:22 -0400
commit47199a0812535217c29933cecf468568bb37f933 (patch)
tree6392939a8b297527eb617f0ab8f54b427534ecd0 /kernel/rcu/tree.c
parentcd23ac8ddb7be993f88bee893b89a8b4971c3651 (diff)
rcu: Add diagnostics for rcutorture writer stall warning
This commit adds any in-the-future ->gp_seq_needed fields to the diagnostics for an rcutorture writer stall warning message. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcu/tree.c')
-rw-r--r--kernel/rcu/tree.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 7746fe1ee3fc..4915525559ac 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -606,11 +606,32 @@ EXPORT_SYMBOL_GPL(rcu_sched_force_quiescent_state);
606 */ 606 */
607void show_rcu_gp_kthreads(void) 607void show_rcu_gp_kthreads(void)
608{ 608{
609 int cpu;
610 struct rcu_data *rdp;
611 struct rcu_node *rnp;
609 struct rcu_state *rsp; 612 struct rcu_state *rsp;
610 613
611 for_each_rcu_flavor(rsp) { 614 for_each_rcu_flavor(rsp) {
612 pr_info("%s: wait state: %d ->state: %#lx\n", 615 pr_info("%s: wait state: %d ->state: %#lx\n",
613 rsp->name, rsp->gp_state, rsp->gp_kthread->state); 616 rsp->name, rsp->gp_state, rsp->gp_kthread->state);
617 rcu_for_each_node_breadth_first(rsp, rnp) {
618 if (ULONG_CMP_GE(rsp->gp_seq, rnp->gp_seq_needed))
619 continue;
620 pr_info("\trcu_node %d:%d ->gp_seq %lu ->gp_seq_needed %lu\n",
621 rnp->grplo, rnp->grphi, rnp->gp_seq,
622 rnp->gp_seq_needed);
623 if (!rcu_is_leaf_node(rnp))
624 continue;
625 for_each_leaf_node_possible_cpu(rnp, cpu) {
626 rdp = per_cpu_ptr(rsp->rda, cpu);
627 if (rdp->gpwrap ||
628 ULONG_CMP_GE(rsp->gp_seq,
629 rdp->gp_seq_needed))
630 continue;
631 pr_info("\tcpu %d ->gp_seq_needed %lu\n",
632 cpu, rdp->gp_seq_needed);
633 }
634 }
614 /* sched_show_task(rsp->gp_kthread); */ 635 /* sched_show_task(rsp->gp_kthread); */
615 } 636 }
616} 637}