Re: tip.today - scheduler bam boom crash (cpu hotplug)

From: Peter Zijlstra
Date: Mon Feb 27 2017 - 17:45:54 EST


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?