timekeeping: Read NTP tick length only once
authorThomas Gleixner <tglx@linutronix.de>
Wed, 9 Oct 2024 08:28:54 +0000 (10:28 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 25 Oct 2024 17:49:12 +0000 (19:49 +0200)
No point in reading it a second time when the comparison fails.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: John Stultz <jstultz@google.com>
Link: https://lore.kernel.org/all/20241009-devel-anna-maria-b4-timers-ptp-timekeeping-v2-1-554456a44a15@linutronix.de
kernel/time/timekeeping.c

index 1427c58e980255ed86b5e32b0770b23900b16551..2bc3542f29a2cada11696d5d9801a879849d7cf1 100644 (file)
@@ -2161,16 +2161,17 @@ static __always_inline void timekeeping_apply_adjustment(struct timekeeper *tk,
  */
 static void timekeeping_adjust(struct timekeeper *tk, s64 offset)
 {
+       u64 ntp_tl = ntp_tick_length();
        u32 mult;
 
        /*
         * Determine the multiplier from the current NTP tick length.
         * Avoid expensive division when the tick length doesn't change.
         */
-       if (likely(tk->ntp_tick == ntp_tick_length())) {
+       if (likely(tk->ntp_tick == ntp_tl)) {
                mult = tk->tkr_mono.mult - tk->ntp_err_mult;
        } else {
-               tk->ntp_tick = ntp_tick_length();
+               tk->ntp_tick = ntp_tl;
                mult = div64_u64((tk->ntp_tick >> tk->ntp_error_shift) -
                                 tk->xtime_remainder, tk->cycle_interval);
        }