aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-10-09 06:35:05 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-10-09 06:35:05 -0400
commit47137c6ba1bcde30215795f9594cea770946456b (patch)
tree3a7a04e6ecffcb188b6708ccdc3f02b70f07d7c4 /kernel/time
parentafa3536be88b435a057cb727b48fd3d760a497d2 (diff)
parent867f667fb9c6734e06cc24e96fc7f06a7e772084 (diff)
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer updates from Thomas Gleixner: "Nothing really exciting this time: - a few fixlets in the NOHZ code - a new ARM SoC timer abomination. One should expect that we have enough of them already, but they insist on inventing new ones. - the usual bunch of ARM SoC timer updates. That feels like herding cats" * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: clocksource: arm_arch_timer: Consolidate arch_timer_evtstrm_enable clocksource: arm_arch_timer: Enable counter access for 32-bit ARM clocksource: arm_arch_timer: Change clocksource name if CP15 unavailable clocksource: sirf: Disable counter before re-setting it clocksource: cadence_ttc: Add support for 32bit mode clocksource: tcb_clksrc: Sanitize IRQ request clocksource: arm_arch_timer: Discard unavailable timers correctly clocksource: vf_pit_timer: Support shutdown mode ARM: meson6: clocksource: Add Meson6 timer support ARM: meson: documentation: Add timer documentation clocksource: sh_tmu: Document r8a7779 binding clocksource: sh_mtu2: Document r7s72100 binding clocksource: sh_cmt: Document SoC specific bindings timerfd: Remove an always true check nohz: Avoid tick's double reprogramming in highres mode nohz: Fix spurious periodic tick behaviour in low-res dynticks mode
Diffstat (limited to 'kernel/time')
-rw-r--r--kernel/time/tick-sched.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index 5a9ff243588c..7c1412ea2d29 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -996,6 +996,10 @@ static void tick_nohz_handler(struct clock_event_device *dev)
996 tick_sched_do_timer(now); 996 tick_sched_do_timer(now);
997 tick_sched_handle(ts, regs); 997 tick_sched_handle(ts, regs);
998 998
999 /* No need to reprogram if we are running tickless */
1000 if (unlikely(ts->tick_stopped))
1001 return;
1002
999 while (tick_nohz_reprogram(ts, now)) { 1003 while (tick_nohz_reprogram(ts, now)) {
1000 now = ktime_get(); 1004 now = ktime_get();
1001 tick_do_update_jiffies64(now); 1005 tick_do_update_jiffies64(now);
@@ -1123,6 +1127,10 @@ static enum hrtimer_restart tick_sched_timer(struct hrtimer *timer)
1123 if (regs) 1127 if (regs)
1124 tick_sched_handle(ts, regs); 1128 tick_sched_handle(ts, regs);
1125 1129
1130 /* No need to reprogram if we are in idle or full dynticks mode */
1131 if (unlikely(ts->tick_stopped))
1132 return HRTIMER_NORESTART;
1133
1126 hrtimer_forward(timer, now, tick_period); 1134 hrtimer_forward(timer, now, tick_period);
1127 1135
1128 return HRTIMER_RESTART; 1136 return HRTIMER_RESTART;