diff options
author | Steven Rostedt <rostedt@goodmis.org> | 2008-02-29 18:46:50 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-02-29 18:46:50 +0100 |
commit | 2232c2d8e0a6a31061dec311f3d1cf7624bc14f1 (patch) | |
tree | 1d90ec0b8bd4e3c154e386f005ef596ee25fa53f /kernel/time | |
parent | c0f4133b8f70769bc8dda977feb9a29109d6ccca (diff) | |
download | op-kernel-dev-2232c2d8e0a6a31061dec311f3d1cf7624bc14f1.zip op-kernel-dev-2232c2d8e0a6a31061dec311f3d1cf7624bc14f1.tar.gz |
rcu: add support for dynamic ticks and preempt rcu
The PREEMPT-RCU can get stuck if a CPU goes idle and NO_HZ is set. The
idle CPU will not progress the RCU through its grace period and a
synchronize_rcu my get stuck. Without this patch I have a box that will
not boot when PREEMPT_RCU and NO_HZ are set. That same box boots fine
with this patch.
This patch comes from the -rt kernel where it has been tested for
several months.
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/time')
-rw-r--r-- | kernel/time/tick-sched.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index fa9bb73..2968298 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -282,6 +282,7 @@ void tick_nohz_stop_sched_tick(void) ts->idle_tick = ts->sched_timer.expires; ts->tick_stopped = 1; ts->idle_jiffies = last_jiffies; + rcu_enter_nohz(); } /* @@ -375,6 +376,8 @@ void tick_nohz_restart_sched_tick(void) return; } + rcu_exit_nohz(); + /* Update jiffies first */ select_nohz_load_balancer(0); now = ktime_get(); |