Message ID | 20150528014929.457223842@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 28/05/2015 03:46, Marcelo Tosatti wrote: > + flags = PVCLOCK_COUNTS_FROM_ZERO; If the KVM_FEATURE_CLOCKSOURCE_STABLE_BIT bit is not set, we cannot trust flags at all. So let's just do... > if (kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE_STABLE_BIT)) > - pvclock_set_flags(PVCLOCK_TSC_STABLE_BIT); > + flags |= PVCLOCK_TSC_STABLE_BIT; - pvclock_set_flags(PVCLOCK_TSC_STABLE_BIT); + pvclock_set_flags(~0); Otherwise looks good. Shall I do the above change and apply? Paolo > + pvclock_set_flags(flags); > + > + cpu = get_cpu(); > + vcpu_time = &hv_clock[cpu].pvti; > + flags = pvclock_read_flags(vcpu_time); > + if (flags & PVCLOCK_COUNTS_FROM_ZERO) > + set_sched_clock_stable(); > + put_cpu(); > } -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Index: kvm/arch/x86/kernel/kvmclock.c =================================================================== --- kvm.orig/arch/x86/kernel/kvmclock.c 2015-05-27 18:00:53.616391551 -0300 +++ kvm/arch/x86/kernel/kvmclock.c 2015-05-27 22:43:14.474432962 -0300 @@ -24,6 +24,7 @@ #include <linux/percpu.h> #include <linux/hardirq.h> #include <linux/memblock.h> +#include <linux/sched.h> #include <asm/x86_init.h> #include <asm/reboot.h> @@ -217,8 +218,10 @@ void __init kvmclock_init(void) { + struct pvclock_vcpu_time_info *vcpu_time; unsigned long mem; - int size; + int size, cpu; + u8 flags; size = PAGE_ALIGN(sizeof(struct pvclock_vsyscall_time_info)*NR_CPUS); @@ -263,8 +266,18 @@ clocksource_register_hz(&kvm_clock, NSEC_PER_SEC); pv_info.name = "KVM"; + flags = PVCLOCK_COUNTS_FROM_ZERO; if (kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE_STABLE_BIT)) - pvclock_set_flags(PVCLOCK_TSC_STABLE_BIT); + flags |= PVCLOCK_TSC_STABLE_BIT; + + pvclock_set_flags(flags); + + cpu = get_cpu(); + vcpu_time = &hv_clock[cpu].pvti; + flags = pvclock_read_flags(vcpu_time); + if (flags & PVCLOCK_COUNTS_FROM_ZERO) + set_sched_clock_stable(); + put_cpu(); } int __init kvm_setup_vsyscall_timeinfo(void)