On Mon, Feb 27, 2017 at 01:50:29PM +0100, Paolo Bonzini wrote: > > > On 27/02/2017 13:43, Peter Zijlstra wrote: > > On Mon, Feb 27, 2017 at 08:30:11PM +0800, Wanpeng Li wrote: > > > >>> diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c > >>> index 2a5cafd..542710b 100644 > >>> --- a/arch/x86/kernel/kvmclock.c > >>> +++ b/arch/x86/kernel/kvmclock.c > >>> @@ -107,12 +107,12 @@ static inline void kvm_sched_clock_init(bool stable) > >>> { > >>> if (!stable) { > >>> pv_time_ops.sched_clock = kvm_clock_read; > >>> + clear_sched_clock_stable(); > >>> return; > >>> } > >>> > >>> kvm_sched_clock_offset = kvm_clock_read(); > >>> pv_time_ops.sched_clock = kvm_sched_clock_read; > >>> - set_sched_clock_stable(); > >> > >> This results in sched clock always unstable for kvm guest since there > >> is no invariant tsc cpuid bit exposed for kvm guest currently. > > > > What the heck is KVM_FEATURE_CLOCKSOURCE_STABLE_BIT / > > PVCLOCK_TSC_STABLE_BIT about then? > > It checks that all the bugs in the host have been ironed out, and that > the host itself supports invtsc.
But what does it mean if that is not so? That is, will kvm_clock_read() still be stable even if !stable?