From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vadim Rozenfeld Subject: Re: [RFC PATCH v2 1/2] add support for Hyper-V reference time counter Date: Thu, 23 May 2013 08:25:21 -0400 (EDT) Message-ID: <1203166753.6432195.1369311921642.JavaMail.root@redhat.com> References: <1368947197-9033-1-git-send-email-vrozenfe@redhat.com> <1368947197-9033-2-git-send-email-vrozenfe@redhat.com> <20130522004614.GA7322@amt.cnet> <745195650.5763962.1369207977883.JavaMail.root@redhat.com> <519D3ED6.8010804@redhat.com> <519DB495.8040708@dlhnet.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: Paolo Bonzini , Marcelo Tosatti , kvm@vger.kernel.org, gleb@redhat.com, pl@dlh.net To: Peter Lieven Return-path: Received: from mx4-phx2.redhat.com ([209.132.183.25]:49738 "EHLO mx4-phx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758158Ab3EWMZX (ORCPT ); Thu, 23 May 2013 08:25:23 -0400 In-Reply-To: <519DB495.8040708@dlhnet.de> Sender: kvm-owner@vger.kernel.org List-ID: ----- Original Message ----- From: "Peter Lieven" To: "Paolo Bonzini" Cc: "Vadim Rozenfeld" , "Marcelo Tosatti" , kvm@vger.kernel.org, gleb@redhat.com, pl@dlh.net Sent: Thursday, May 23, 2013 4:17:57 PM Subject: Re: [RFC PATCH v2 1/2] add support for Hyper-V reference time counter On 22.05.2013 23:55, Paolo Bonzini wrote: > Il 22/05/2013 09:32, Vadim Rozenfeld ha scritto: >>>> @@ -1827,6 +1829,29 @@ static int set_msr_hyperv_pw(struct kvm_vcpu *vcpu, u32 msr, u64 data) >>>> if (__copy_to_user((void __user *)addr, instructions, 4)) >>>> return 1; >>>> kvm->arch.hv_hypercall = data; >>>> + local_irq_disable(); >>>> + kvm->arch.hv_ref_count = get_kernel_ns(); >>>> + local_irq_enable(); >>>> + break; >> local_irq_disable/local_irq_enable not needed. >> >> >> What is the reasoning behind reading this time value at msr write time? >> [VR] Windows writs this MSR only once, during HAL initialization. >> So, I decided to treat this call as a partition crate event. >> > > But is it expected by Windows that the reference count starts counting > up from 0 at partition creation time? If you could just use > (get_kernel_ns() + kvm->arch.kvmclock_offset) / 100, it would also be > simpler for migration purposes. I can just report, that I have used the patch that does it that way and it works. Maybe Windows is calculating the uptime by the reference counter? [VR] Windows use it (reference counters/iTSC/PMTimer/HPET) as a time-stamp source for (Ke)QueryPerformanceCounter function. Peter