Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-block.git] / kernel / rcu / tree_stall.h
index 065183391f75979e6bca59184f48e1126670eaad..c0b8c458d8a6ad267151f6cbffc791c217aeefdf 100644 (file)
@@ -163,7 +163,7 @@ static void rcu_iw_handler(struct irq_work *iwp)
 //
 // Printing RCU CPU stall warnings
 
-#ifdef CONFIG_PREEMPT
+#ifdef CONFIG_PREEMPTION
 
 /*
  * Dump detailed information for all tasks blocking the current RCU
@@ -215,7 +215,7 @@ static int rcu_print_task_stall(struct rcu_node *rnp)
        return ndetected;
 }
 
-#else /* #ifdef CONFIG_PREEMPT */
+#else /* #ifdef CONFIG_PREEMPTION */
 
 /*
  * Because preemptible RCU does not exist, we never have to check for
@@ -233,7 +233,7 @@ static int rcu_print_task_stall(struct rcu_node *rnp)
 {
        return 0;
 }
-#endif /* #else #ifdef CONFIG_PREEMPT */
+#endif /* #else #ifdef CONFIG_PREEMPTION */
 
 /*
  * Dump stacks of all tasks running on stalled CPUs.  First try using
@@ -527,6 +527,8 @@ static void check_cpu_stall(struct rcu_data *rdp)
 
                /* We haven't checked in, so go dump stack. */
                print_cpu_stall();
+               if (rcu_cpu_stall_ftrace_dump)
+                       rcu_ftrace_dump(DUMP_ALL);
 
        } else if (rcu_gp_in_progress() &&
                   ULONG_CMP_GE(j, js + RCU_STALL_RAT_DELAY) &&
@@ -534,6 +536,8 @@ static void check_cpu_stall(struct rcu_data *rdp)
 
                /* They had a few time units to dump stack, so complain. */
                print_other_cpu_stall(gs2);
+               if (rcu_cpu_stall_ftrace_dump)
+                       rcu_ftrace_dump(DUMP_ALL);
        }
 }
 
@@ -585,6 +589,11 @@ void show_rcu_gp_kthreads(void)
                                cpu, (long)rdp->gp_seq_needed);
                }
        }
+       for_each_possible_cpu(cpu) {
+               rdp = per_cpu_ptr(&rcu_data, cpu);
+               if (rcu_segcblist_is_offloaded(&rdp->cblist))
+                       show_rcu_nocb_state(rdp);
+       }
        /* sched_show_task(rcu_state.gp_kthread); */
 }
 EXPORT_SYMBOL_GPL(show_rcu_gp_kthreads);