When the timer base is checked for expired timers then the deferrable base must be checked as well. This was missed when making the deferrable base independent of base::nohz_active.
Unified · Split
| @@ -1696,7 +1696,7 @@ void run_local_timers(void) · 1695 unmodified lines | ||
| 1696 | 1696 | hrtimer_run_queues(); |
| 1697 | 1697 | /* Raise the softirq only if required. */ |
| 1698 | 1698 | if (time_before(jiffies, base->clk)) { |
| 1699 | − if (!IS_ENABLED(CONFIG_NO_HZ_COMMON) || !base->nohz_active) | |
| 1699 | + if (!IS_ENABLED(CONFIG_NO_HZ_COMMON)) | |
| 1700 | 1700 | return; |
| 1701 | 1701 | /* CPU is awake, so check the deferrable base. */ |
| 1702 | 1702 | base++; |