aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time/timer.c
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2022-05-01 23:25:10 +0200
committerLinus Walleij <linus.walleij@linaro.org>2022-05-01 23:25:10 +0200
commitf930b69a8944ab3f018e2a175ddbd16e71348df9 (patch)
treebfde4972394d741196bcd1cf173bfda4639123a7 /kernel/time/timer.c
parentpinctrl/rockchip: add rk3588 support (diff)
parentLinux 5.18-rc5 (diff)
downloadlinux-rng-f930b69a8944ab3f018e2a175ddbd16e71348df9.tar.xz
linux-rng-f930b69a8944ab3f018e2a175ddbd16e71348df9.zip
Merge tag 'v5.18-rc5' into devel
Merge in Linux 5.18-rc5 since new code to the STM32 driver depend in a non-trivial way on the fixes merged in -rc5. Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'kernel/time/timer.c')
-rw-r--r--kernel/time/timer.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index 85f1021ad459..9dd2a39cb3b0 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -1722,11 +1722,14 @@ static inline void __run_timers(struct timer_base *base)
time_after_eq(jiffies, base->next_expiry)) {
levels = collect_expired_timers(base, heads);
/*
- * The only possible reason for not finding any expired
- * timer at this clk is that all matching timers have been
- * dequeued.
+ * The two possible reasons for not finding any expired
+ * timer at this clk are that all matching timers have been
+ * dequeued or no timer has been queued since
+ * base::next_expiry was set to base::clk +
+ * NEXT_TIMER_MAX_DELTA.
*/
- WARN_ON_ONCE(!levels && !base->next_expiry_recalc);
+ WARN_ON_ONCE(!levels && !base->next_expiry_recalc
+ && base->timers_pending);
base->clk++;
base->next_expiry = __next_timer_interrupt(base);