This is particularly useful for Wine which needs to implement Win32 API clock functions whose values do not get adjusted by adjtimex().
Cc: Thomas Gleixner <t...@linutronix.de> Cc: Andy Lutomirski <l...@kernel.org> Signed-off-by: Huw Davies <h...@codeweavers.com> --- arch/x86/entry/vsyscall/vsyscall_gtod.c | 6 ++++++ arch/x86/include/asm/vgtod.h | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/arch/x86/entry/vsyscall/vsyscall_gtod.c b/arch/x86/entry/vsyscall/vsyscall_gtod.c index ddc6a71df87c..fe3458caf301 100644 --- a/arch/x86/entry/vsyscall/vsyscall_gtod.c +++ b/arch/x86/entry/vsyscall/vsyscall_gtod.c @@ -68,6 +68,12 @@ void update_vsyscall(struct timekeeper *tk) base->mult = tk->tkr_mono.mult; base->shift = tk->tkr_mono.shift; + base = &vdata->basetime[CLOCK_MONOTONIC_RAW]; + base->sec = tk->raw_sec; + base->nsec = tk->tkr_raw.xtime_nsec; + base->mult = tk->tkr_raw.mult; + base->shift = tk->tkr_raw.shift; + base = &vdata->basetime[CLOCK_REALTIME_COARSE]; base->sec = tk->xtime_sec; base->nsec = tk->tkr_mono.xtime_nsec >> tk->tkr_mono.shift; diff --git a/arch/x86/include/asm/vgtod.h b/arch/x86/include/asm/vgtod.h index ae0d76491595..0b76ba884e25 100644 --- a/arch/x86/include/asm/vgtod.h +++ b/arch/x86/include/asm/vgtod.h @@ -30,7 +30,8 @@ struct vgtod_ts { }; #define VGTOD_BASES (CLOCK_TAI + 1) -#define VGTOD_HRES (BIT(CLOCK_REALTIME) | BIT(CLOCK_MONOTONIC) | BIT(CLOCK_TAI)) +#define VGTOD_HRES (BIT(CLOCK_REALTIME) | BIT(CLOCK_MONOTONIC) | \ + BIT(CLOCK_MONOTONIC_RAW) | BIT(CLOCK_TAI)) #define VGTOD_COARSE (BIT(CLOCK_REALTIME_COARSE) | BIT(CLOCK_MONOTONIC_COARSE)) /* -- 2.17.1