aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/timer.c
diff options
context:
space:
mode:
authorPeter Zijlstra <a.p.zijlstra@chello.nl>2008-01-25 15:08:31 -0500
committerIngo Molnar <mingo@elte.hu>2008-01-25 15:08:31 -0500
commitd3d74453c34f8fd87674a8cf5b8a327c68f22e99 (patch)
treecbbd46eb7b81f5c9d39a93604a206ac775084858 /kernel/timer.c
parent2d44ae4d7135b9aee26439b3523b43473381bc5f (diff)
hrtimer: fixup the HRTIMER_CB_IRQSAFE_NO_SOFTIRQ fallback
Currently all highres=off timers are run from softirq context, but HRTIMER_CB_IRQSAFE_NO_SOFTIRQ timers expect to run from irq context. Fix this up by splitting it similar to the highres=on case. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/timer.c')
-rw-r--r--kernel/timer.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/timer.c b/kernel/timer.c
index 2a00c22203f3..f739dfb539ce 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -896,7 +896,7 @@ static void run_timer_softirq(struct softirq_action *h)
896{ 896{
897 tvec_base_t *base = __get_cpu_var(tvec_bases); 897 tvec_base_t *base = __get_cpu_var(tvec_bases);
898 898
899 hrtimer_run_queues(); 899 hrtimer_run_pending();
900 900
901 if (time_after_eq(jiffies, base->timer_jiffies)) 901 if (time_after_eq(jiffies, base->timer_jiffies))
902 __run_timers(base); 902 __run_timers(base);
@@ -907,6 +907,7 @@ static void run_timer_softirq(struct softirq_action *h)
907 */ 907 */
908void run_local_timers(void) 908void run_local_timers(void)
909{ 909{
910 hrtimer_run_queues();
910 raise_softirq(TIMER_SOFTIRQ); 911 raise_softirq(TIMER_SOFTIRQ);
911 softlockup_tick(); 912 softlockup_tick();
912} 913}