summaryrefslogtreecommitdiffstats
path: root/kernel/time/vsyscall.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2020-02-07 13:38:55 +0100
committerThomas Gleixner <tglx@linutronix.de>2020-02-17 14:40:23 +0100
commit5d51bee725cc1497352d6b0b604e42a90c680540 (patch)
tree739d7486c2bd860a038c8b8ef2d05a75cfd14ede /kernel/time/vsyscall.c
parenteec399dd862762b9594df3659f15839a4e12f17a (diff)
downloadlinux-5d51bee725cc1497352d6b0b604e42a90c680540.tar.gz
linux-5d51bee725cc1497352d6b0b604e42a90c680540.tar.bz2
linux-5d51bee725cc1497352d6b0b604e42a90c680540.zip
clocksource: Add common vdso clock mode storage
All architectures which use the generic VDSO code have their own storage for the VDSO clock mode. That's pointless and just requires duplicate code. Provide generic storage for it. The new Kconfig symbol is intermediate and will be removed once all architectures are converted over. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Tested-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Link: https://lkml.kernel.org/r/20200207124403.028046322@linutronix.de
Diffstat (limited to 'kernel/time/vsyscall.c')
-rw-r--r--kernel/time/vsyscall.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/kernel/time/vsyscall.c b/kernel/time/vsyscall.c
index 9577c89179cd..f9a5178c69bb 100644
--- a/kernel/time/vsyscall.c
+++ b/kernel/time/vsyscall.c
@@ -71,13 +71,19 @@ void update_vsyscall(struct timekeeper *tk)
{
struct vdso_data *vdata = __arch_get_k_vdso_data();
struct vdso_timestamp *vdso_ts;
+ s32 clock_mode;
u64 nsec;
/* copy vsyscall data */
vdso_write_begin(vdata);
- vdata[CS_HRES_COARSE].clock_mode = __arch_get_clock_mode(tk);
- vdata[CS_RAW].clock_mode = __arch_get_clock_mode(tk);
+#ifdef CONFIG_GENERIC_VDSO_CLOCK_MODE
+ clock_mode = tk->tkr_mono.clock->vdso_clock_mode;
+#else
+ clock_mode = __arch_get_clock_mode(tk);
+#endif
+ vdata[CS_HRES_COARSE].clock_mode = clock_mode;
+ vdata[CS_RAW].clock_mode = clock_mode;
/* CLOCK_REALTIME also required for time() */
vdso_ts = &vdata[CS_HRES_COARSE].basetime[CLOCK_REALTIME];