The condition to schedule per-VM master clock updates is inversed; as a result the master clocks are never updated and the kvm_clock drift WRT host's NTP-disciplined clock (which was the motivation to introduce this machinery in the first place) still remains. Fix it, and reword the comment to make it more apparent what the desired behavior is. Cc: Owen Hofmann <osh@xxxxxxxxxx> Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> Cc: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Signed-off-by: Roman Kagan <rkagan@xxxxxxxxxxxxx> --- arch/x86/kvm/x86.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index c805cf4..d8f591c 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -5810,10 +5810,10 @@ static int pvclock_gtod_notify(struct notifier_block *nb, unsigned long unused, update_pvclock_gtod(tk); - /* disable master clock if host does not trust, or does not - * use, TSC clocksource + /* only schedule per-VM master clock updates if the host uses TSC and + * there's at least one VM in need of an update */ - if (gtod->clock.vclock_mode != VCLOCK_TSC && + if (gtod->clock.vclock_mode == VCLOCK_TSC && atomic_read(&kvm_guest_has_master_clock) != 0) queue_work(system_long_wq, &pvclock_gtod_work); -- 2.5.5 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html