summaryrefslogtreecommitdiff
path: root/kernel/time/timer.c
diff options
context:
space:
mode:
authorCon Kolivas <kernel@kolivas.org>2017-10-16 11:11:48 +1100
committerCon Kolivas <kernel@kolivas.org>2017-10-16 14:54:34 +1100
commit4857436979f756f4714d1bf11f1763fef54497cd (patch)
tree209602ba393c80443f247f2578cdfdab1d0ee595 /kernel/time/timer.c
parent569dbb88e80deb68974ef6fdd6a13edb9d686261 (diff)
MuQSS version 0.161 CPU scheduler.4.13-muqss-161
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 f2674a056c26..9c18e16059a3 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -1436,7 +1436,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();
@@ -1454,6 +1454,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
@@ -1523,7 +1526,7 @@ u64 get_next_timer_interrupt(unsigned long basej, u64 basem)
}
raw_spin_unlock(&base->lock);
- return cmp_next_hrtimer_event(basem, expires);
+ return cmp_next_hrtimer_event(base, basem, expires);
}
/**