diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2025-05-19 10:33:26 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2025-06-19 14:28:23 +0200 |
commit | 8c782acd3f47e21f9b03fd3720172d1f8e4fb796 (patch) | |
tree | 30c67623867832b1f960e825705ca92ca73b6c88 | |
parent | 926ad475169f5b24868438e4bff61ec6a73efd19 (diff) |
timekeeping: Prepare timekeeping_update_from_shadow()
Don't invoke the VDSO and paravirt updates when utilized for auxiliary
clocks. This is a temporary workaround until the VDSO and paravirt
interfaces have been worked out.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/all/20250519083026.223876435@linutronix.de
-rw-r--r-- | kernel/time/timekeeping.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index 153f760dffb4..e3c1a1c1d8c5 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -683,13 +683,15 @@ static void timekeeping_update_from_shadow(struct tk_data *tkd, unsigned int act tk_update_leap_state(tk); tk_update_ktime_data(tk); + tk->tkr_mono.base_real = tk->tkr_mono.base + tk->offs_real; - update_vsyscall(tk); - update_pvclock_gtod(tk, action & TK_CLOCK_WAS_SET); + if (tk->id == TIMEKEEPER_CORE) { + update_vsyscall(tk); + update_pvclock_gtod(tk, action & TK_CLOCK_WAS_SET); - tk->tkr_mono.base_real = tk->tkr_mono.base + tk->offs_real; - update_fast_timekeeper(&tk->tkr_mono, &tk_fast_mono); - update_fast_timekeeper(&tk->tkr_raw, &tk_fast_raw); + update_fast_timekeeper(&tk->tkr_mono, &tk_fast_mono); + update_fast_timekeeper(&tk->tkr_raw, &tk_fast_raw); + } if (action & TK_CLOCK_WAS_SET) tk->clock_was_set_seq++; |