aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time/timer.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/time/timer.c')
-rw-r--r--kernel/time/timer.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index 9339d71ee998..8d830f1f6a6a 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -1608,7 +1608,18 @@ static void run_timer_softirq(struct softirq_action *h)
1608 */ 1608 */
1609void run_local_timers(void) 1609void run_local_timers(void)
1610{ 1610{
1611 struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]);
1612
1611 hrtimer_run_queues(); 1613 hrtimer_run_queues();
1614 /* Raise the softirq only if required. */
1615 if (time_before(jiffies, base->clk)) {
1616 if (!IS_ENABLED(CONFIG_NO_HZ_COMMON) || !base->nohz_active)
1617 return;
1618 /* CPU is awake, so check the deferrable base. */
1619 base++;
1620 if (time_before(jiffies, base->clk))
1621 return;
1622 }
1612 raise_softirq(TIMER_SOFTIRQ); 1623 raise_softirq(TIMER_SOFTIRQ);
1613} 1624}
1614 1625