aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorPaul E. McKenney <paul.mckenney@linaro.org>2012-04-23 10:06:39 -0700
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2012-04-26 08:49:05 -0700
commit79b9a75fb703b6a2670e46b9dc495af5bc7029b3 (patch)
tree30d7d74e4af8af8c8d8b7cb00cf54b292d12c68e /kernel
parentrcu: Make RCU_FAST_NO_HZ account for pauses out of idle (diff)
downloadlinux-dev-79b9a75fb703b6a2670e46b9dc495af5bc7029b3.tar.xz
linux-dev-79b9a75fb703b6a2670e46b9dc495af5bc7029b3.zip
rcu: Add warning for RCU_FAST_NO_HZ timer firing
RCU_FAST_NO_HZ uses a timer to limit the time that a CPU with callbacks can remain in dyntick-idle mode. This timer is cancelled when the CPU exits idle, and therefore should never fire. However, if the timer were migrated to some other CPU for whatever reason (1) the timer could actually fire and (2) firing on some other CPU would fail to wake up the CPU with callbacks, possibly resulting in sluggishness or a system hang. This commit therfore adds a WARN_ON_ONCE() to the timer handler in order to detect this condition. Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/rcutree_plugin.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
index 50c17975d4f4..ad61da79b311 100644
--- a/kernel/rcutree_plugin.h
+++ b/kernel/rcutree_plugin.h
@@ -2065,6 +2065,7 @@ static bool rcu_cpu_has_nonlazy_callbacks(int cpu)
*/
static void rcu_idle_gp_timer_func(unsigned long unused)
{
+ WARN_ON_ONCE(1); /* Getting here can hang the system... */
trace_rcu_prep_idle("Timer");
}