rcu: Additional information on RCU-tasks stall-warning messages
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Mon, 11 Aug 2014 02:47:12 +0000 (19:47 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sun, 7 Sep 2014 23:27:33 +0000 (16:27 -0700)
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcu/update.c

index f86d1ae50005e2223a3a70936cc96b541c1a5091..9487b4898e5166f3ba4e0e64704b33146f73e90d 100644 (file)
@@ -48,6 +48,7 @@
 #include <linux/delay.h>
 #include <linux/module.h>
 #include <linux/kthread.h>
+#include <linux/tick.h>
 
 #define CREATE_TRACE_POINTS
 
@@ -461,6 +462,8 @@ EXPORT_SYMBOL_GPL(rcu_barrier_tasks);
 static void check_holdout_task(struct task_struct *t,
                               bool needreport, bool *firstreport)
 {
+       int cpu;
+
        if (!ACCESS_ONCE(t->rcu_tasks_holdout) ||
            t->rcu_tasks_nvcsw != ACCESS_ONCE(t->nvcsw) ||
            !ACCESS_ONCE(t->on_rq) ||
@@ -477,6 +480,12 @@ static void check_holdout_task(struct task_struct *t,
                pr_err("INFO: rcu_tasks detected stalls on tasks:\n");
                *firstreport = false;
        }
+       cpu = task_cpu(t);
+       pr_alert("%p: %c%c nvcsw: %lu/%lu holdout: %d idle_cpu: %d/%d\n",
+                t, ".I"[is_idle_task(t)],
+                "N."[cpu < 0 || !tick_nohz_full_cpu(cpu)],
+                t->rcu_tasks_nvcsw, t->nvcsw, t->rcu_tasks_holdout,
+                t->rcu_tasks_idle_cpu, cpu);
        sched_show_task(t);
 }