[tip: timers/core] timekeeping: Initialize TAI offset to 37 seconds
From: tip-bot2 for Miroslav Lichvar
Date: Mon Nov 09 2026 - 15:03:09 EST
The following commit has been merged into the timers/core branch of tip:
Commit-ID: a2fbc5e623e6ad1372804403863ebf94956b2748
Gitweb: https://git.kernel.org/tip/a2fbc5e623e6ad1372804403863ebf94956b2748
Author: Miroslav Lichvar <mlichvar@xxxxxxxxxx>
AuthorDate: Thu, 05 Nov 2026 14:53:15 +01:00
Committer: Thomas Gleixner <tglx@xxxxxxxxxx>
CommitterDate: Mon, 09 Nov 2026 20:21:47 +01:00
timekeeping: Initialize TAI offset to 37 seconds
With Resolution 5 of the 28th CGPM (continuous UTC becoming effective on
20 May 2027) [1] and no leap second announced for the last possible
date at the end of the year 2026 [2], no more leap seconds or other
leaps in UTC are expected for at least a few hundred years. The TAI-UTC
offset can be assumed now to be constant (37 seconds).
Set the offset in the timekeeping initialization to the expected value
to not require it to be set in user space via ADJ_TAI. It can still be
changed, and leap seconds can still be set, but nothing should be
expected to do that anymore. Existing applications are expected to
either set the offset to the same value, or not touch it at all if they
see it is not zero.
[1] https://www.bipm.org/en/cgpm-2026/resolution-5
[2] https://datacenter.iers.org/data/16/bulletinc-072.txt
Signed-off-by: Miroslav Lichvar <mlichvar@xxxxxxxxxx>
Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxx>
Acked-by: David Woodhouse <dwmw@xxxxxxxxxxxx>
Link: https://patch.msgid.link/20261105135316.2465369-1-mlichvar@xxxxxxxxxx
---
kernel/time/timekeeping.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index be72cfd..3668bd2 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -34,6 +34,8 @@
#define TK_UPDATE_ALL (TK_CLEAR_NTP | TK_CLOCK_WAS_SET)
+#define TK_INITIAL_TAI_OFFSET 37
+
enum timekeeping_adv_mode {
/* Update timekeeper when a tick has passed */
TK_ADV_TICK,
@@ -2095,6 +2097,8 @@ void __init timekeeping_init(void)
tk_set_wall_to_mono(tks, wall_to_mono);
+ __timekeeping_set_tai_offset(tks, TK_INITIAL_TAI_OFFSET);
+
/*
* Use TK_UPDATE_ALL so the NTP layer picks up the clocksource's
* cs_tick_adj via ntp_clear(). Clearing NTP here is otherwise