diff options
author | Con Kolivas <kernel@kolivas.org> | 2016-10-31 11:11:32 +1100 |
---|---|---|
committer | Con Kolivas <kernel@kolivas.org> | 2016-10-31 11:26:58 +1100 |
commit | d2a88342b9d69e550ae21d5d1fdd7a15fe039159 (patch) | |
tree | 1f8188170c98bad85124044de335a1b6c7f4ee61 /kernel | |
parent | 6d6ea6a24879ed0f5c99d64d3d621d2007c699a3 (diff) |
Unset base is idle in next_timer_event based on hrtimers as well.
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/time/timer.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/time/timer.c b/kernel/time/timer.c index 32bf6f75a8fe..f0be61c19bfb 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c @@ -1454,7 +1454,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(); @@ -1472,6 +1472,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 @@ -1531,7 +1534,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); } /** |