e7547e1f |
From 725ac7c54935bbff858092e2db302afe88062162 Mon Sep 17 00:00:00 2001
From: Alexey Makhalov <amakhalov@vmware.com>
Date: Tue, 9 May 2017 12:39:18 -0700
Subject: [PATCH] x86/vmware: pv-ops clocksource
---
arch/x86/kernel/cpu/vmware.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
|
fc081194 |
diff --git a/arch/x86/kernel/cpu/vmware.c b/arch/x86/kernel/cpu/vmware.c |
e7547e1f |
index 70b8c4614e22..987ac571d16c 100644 |
fc081194 |
--- a/arch/x86/kernel/cpu/vmware.c
+++ b/arch/x86/kernel/cpu/vmware.c |
1a6f8e5d |
@@ -155,6 +155,27 @@ static void __init vmware_cyc2ns_setup(void) |
fc081194 |
pr_info("using clock offset of %llu ns\n", d->cyc2ns_offset);
}
|
c8bf217f |
+static u64 vmware_clock_get_cycles(struct clocksource *cs) |
fc081194 |
+{ |
c8bf217f |
+ return (u64)rdtsc_ordered(); |
fc081194 |
+}
+
+static struct clocksource clocksource_vmware = {
+ .name = "vmware-clock",
+ .read = vmware_clock_get_cycles,
+ .rating = 400,
+ .mask = CLOCKSOURCE_MASK(64),
+ .flags = CLOCK_SOURCE_IS_CONTINUOUS, |
1a6f8e5d |
+ .archdata = { .vclock_mode = VCLOCK_TSC }, |
fc081194 |
+};
+
+/* We want to use clocksource_vmware from the beginning to avoid drifting in
+ monotonic clock */
+struct clocksource * __init clocksource_default_clock(void)
+{
+ return &clocksource_vmware;
+}
+
static uint64_t vmware_steal_clock(int cpu)
{
struct vmware_steal_time *steal;
@@ -290,6 +310,7 @@ static void __init vmware_paravirt_ops_setup(void)
vmware_guest_cpu_init();
#endif
}
+ clocksource_register_khz(&clocksource_vmware, vmware_tsc_khz);
}
#else
#define vmware_paravirt_ops_setup() do {} while (0) |
e7547e1f |
--
2.11.0
|