From: Tianyu Lan <Tianyu.Lan@xxxxxxxxxxxxx> Sent: Monday, July 29, 2019 12:53 AM > > Hyper-V guests use the default native_sched_clock() in pv_ops.time.sched_clock > on x86. But native_sched_clock() directly uses the raw TSC value, which > can be discontinuous in a Hyper-V VM. Add the generic hv_setup_sched_clock() > to set the sched clock function appropriately. On x86, this sets pv_ops.time. > sched_clock to read the Hyper-V reference TSC value that is scaled and adjusted > to be continuous. > > Also move the Hyper-V reference TSC initialization much earlier in the boot > process so no discontinuity is observed when pv_ops.time.sched_clock > calculates its offset. > > Signed-off-by: Tianyu Lan <Tianyu.Lan@xxxxxxxxxxxxx> > --- > arch/x86/hyperv/hv_init.c | 2 -- > arch/x86/kernel/cpu/mshyperv.c | 8 ++++++++ > drivers/clocksource/hyperv_timer.c | 22 ++++++++++++---------- > include/asm-generic/mshyperv.h | 1 + > 4 files changed, 21 insertions(+), 12 deletions(-) > Reviewed-by: Michael Kelley <mikelley@xxxxxxxxxxxxx>