summaryrefslogtreecommitdiff
path: root/kernel/time/timer.c
diff options
context:
space:
mode:
authorAndré Fabian Silva Delgado <emulatorman@parabola.nu>2016-11-16 14:16:08 -0300
committerAndré Fabian Silva Delgado <emulatorman@parabola.nu>2016-11-16 14:16:08 -0300
commit3326a1803802aa4730d32304b003f50720996b31 (patch)
tree1caa6541b94c3a6acb86cbc142d399598152b170 /kernel/time/timer.c
parent29f5b648fa0b31ad614c78468b9279e5fa96397a (diff)
Linux-libre 4.8.8-gnupck-4.8.8-gnu
Diffstat (limited to 'kernel/time/timer.c')
-rw-r--r--kernel/time/timer.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index 96db64bde..e2e71587f 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -1464,7 +1464,7 @@ static unsigned long __next_timer_interrupt(struct timer_base *base)
* Check, if the next hrtimer event is before the next timer wheel
* event:
*/
-static u64 cmp_next_hrtimer_event(u64 basem, u64 expires)
+static u64 cmp_next_hrtimer_event(struct timer_base *base, u64 basem, u64 expires)
{
u64 nextevt = hrtimer_get_next_event();
@@ -1482,6 +1482,9 @@ static u64 cmp_next_hrtimer_event(u64 basem, u64 expires)
if (nextevt <= basem)
return basem;
+ if (nextevt < expires && nextevt - basem <= TICK_NSEC)
+ base->is_idle = false;
+
/*
* Round up to the next jiffie. High resolution timers are
* off, so the hrtimers are expired in the tick and we need to
@@ -1545,7 +1548,7 @@ u64 get_next_timer_interrupt(unsigned long basej, u64 basem)
}
spin_unlock(&base->lock);
- return cmp_next_hrtimer_event(basem, expires);
+ return cmp_next_hrtimer_event(base, basem, expires);
}
/**