Commit 8a2c9c7e authored by Anna-Maria Behnsen's avatar Anna-Maria Behnsen Committed by Thomas Gleixner

timers: Clarify check in forward_timer_base()

The current check whether a forward of the timer base is required can be
simplified by using an already existing comparison function which is easier
to read. The related comment is outdated and was not updated when the check
changed in commit 36cd28a4 ("timers: Lower base clock forwarding
threshold").

Use time_before_eq() for the check and replace the comment by copying the
comment from the same check inside get_next_timer_interrupt(). Move the
precious information of the outdated comment to the proper place in
__run_timers().

No functional change.
Signed-off-by: default avatarAnna-Maria Behnsen <anna-maria@linutronix.de>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-by: default avatarFrederic Weisbecker <frederic@kernel.org>
Link: https://lore.kernel.org/r/20231201092654.34614-9-anna-maria@linutronix.de
parent b5e6f598
...@@ -944,11 +944,10 @@ static inline void forward_timer_base(struct timer_base *base) ...@@ -944,11 +944,10 @@ static inline void forward_timer_base(struct timer_base *base)
unsigned long jnow = READ_ONCE(jiffies); unsigned long jnow = READ_ONCE(jiffies);
/* /*
* No need to forward if we are close enough below jiffies. * Check whether we can forward the base. We can only do that when
* Also while executing timers, base->clk is 1 offset ahead * @basej is past base->clk otherwise we might rewind base->clk.
* of jiffies to avoid endless requeuing to current jiffies.
*/ */
if ((long)(jnow - base->clk) < 1) if (time_before_eq(jnow, base->clk))
return; return;
/* /*
...@@ -2021,6 +2020,10 @@ static inline void __run_timers(struct timer_base *base) ...@@ -2021,6 +2020,10 @@ static inline void __run_timers(struct timer_base *base)
*/ */
WARN_ON_ONCE(!levels && !base->next_expiry_recalc WARN_ON_ONCE(!levels && !base->next_expiry_recalc
&& base->timers_pending); && base->timers_pending);
/*
* While executing timers, base->clk is set 1 offset ahead of
* jiffies to avoid endless requeuing to current jiffies.
*/
base->clk++; base->clk++;
next_expiry_recalc(base); next_expiry_recalc(base);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment