diff options
Diffstat (limited to 'kernel/time/timer.c')
| -rw-r--r-- | kernel/time/timer.c | 11 |
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 | */ |
| 1609 | void run_local_timers(void) | 1609 | void 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 | ||
