On Mon, Feb 08, 2016 at 04:18:29PM +0100, Paolo Bonzini wrote: > This is the same as before: > > kvm_scale_tsc(tgt_tsc_khz) > = tgt_tsc_khz * ratio > = tgt_tsc_khz * user_tsc_khz / tsc_khz (see set_tsc_khz) > = user_tsc_khz (see kvm_guest_time_update) > = vcpu->arch.virtual_tsc_khz (see kvm_set_tsc_khz) > > However, computing it through kvm_scale_tsc makes it possible > to include the NTP correction in tgt_tsc_khz, as done in the > next patch. > > Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> > --- > arch/x86/kvm/x86.c | 15 ++++++++------- > 1 file changed, 8 insertions(+), 7 deletions(-) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index 1ca2b44f70bb..6db3c219795b 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -1713,7 +1713,7 @@ static void kvm_gen_update_masterclock(struct kvm *kvm) > > static int kvm_guest_time_update(struct kvm_vcpu *v) > { > - unsigned long flags, this_tsc_khz, tgt_tsc_khz; > + unsigned long flags, tgt_tsc_khz; > struct kvm_vcpu_arch *vcpu = &v->arch; > struct kvm_arch *ka = &v->kvm->arch; > s64 kernel_ns; > @@ -1739,8 +1739,8 @@ static int kvm_guest_time_update(struct kvm_vcpu *v) > > /* Keep irq disabled to prevent changes to the clock */ > local_irq_save(flags); > - this_tsc_khz = __this_cpu_read(cpu_tsc_khz); > - if (unlikely(this_tsc_khz == 0)) { > + tgt_tsc_khz = __this_cpu_read(cpu_tsc_khz); > + if (unlikely(tgt_tsc_khz == 0)) { > local_irq_restore(flags); > kvm_make_request(KVM_REQ_CLOCK_UPDATE, v); > return 1; > @@ -1775,13 +1775,14 @@ static int kvm_guest_time_update(struct kvm_vcpu *v) > if (!vcpu->pv_time_enabled) > return 0; > > - if (unlikely(vcpu->hw_tsc_khz != this_tsc_khz)) { > - tgt_tsc_khz = kvm_has_tsc_control ? > - vcpu->virtual_tsc_khz : this_tsc_khz; > + if (kvm_has_tsc_control) > + tgt_tsc_khz = kvm_scale_tsc(v, tgt_tsc_khz); > + > + if (unlikely(vcpu->hw_tsc_khz != tgt_tsc_khz)) { > kvm_get_time_scale(NSEC_PER_SEC / 1000, tgt_tsc_khz, > &vcpu->hv_clock.tsc_shift, > &vcpu->hv_clock.tsc_to_system_mul); > - vcpu->hw_tsc_khz = this_tsc_khz; > + vcpu->hw_tsc_khz = tgt_tsc_khz; > } > > /* With all the info we got, fill in the values */ > -- > 1.8.3.1 > Reviewed-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> -- 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