From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcelo Tosatti Subject: Re: [patch 1/3] KVM: x86: provide realtime host clock via vsyscall notifiers Date: Fri, 13 Jan 2017 13:46:43 -0200 Message-ID: <20170113154640.GC4796@amt.cnet> References: <20170113120131.086634482@redhat.com> <20170113120317.948215303@redhat.com> <20170113151804.GA25835@potion> <20170113154110.GB31175@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: kvm@vger.kernel.org, Radim Krcmar , Richard Cochran , linux-kernel@vger.kernel.org, Miroslav Lichvar , Paolo Bonzini , xen-devel@lists.xenproject.org, Joao Martins To: Konrad Rzeszutek Wilk Return-path: Content-Disposition: inline In-Reply-To: <20170113154110.GB31175@char.us.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" List-Id: kvm.vger.kernel.org T24gRnJpLCBKYW4gMTMsIDIwMTcgYXQgMTA6NDE6MTBBTSAtMDUwMCwgS29ucmFkIFJ6ZXN6dXRl ayBXaWxrIHdyb3RlOgo+IE9uIEZyaSwgSmFuIDEzLCAyMDE3IGF0IDA0OjE4OjA0UE0gKzAxMDAs IFJhZGltIEtyY21hciB3cm90ZToKPiA+IDIwMTctMDEtMTMgMTA6MDEtMDIwMCwgTWFyY2VsbyBU b3NhdHRpOgo+ID4gPiBFeHBvc2UgdGhlIHJlYWx0aW1lIGhvc3QgY2xvY2sgYW5kIHNhdmUgdGhl IFRTQyB2YWx1ZQo+ID4gPiB1c2VkIGZvciB0aGUgY2xvY2sgY2FsY3VsYXRpb24uCj4gPiA+IAo+ ID4gPiBTaWduZWQtb2ZmLWJ5OiBNYXJjZWxvIFRvc2F0dGkgPG10b3NhdHRpQHJlZGhhdC5jb20+ Cj4gPiA+IAo+ID4gPiAtLS0KPiA+ID4gIGFyY2gveDg2L2t2bS94ODYuYyB8ICAgMzggKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAz OCBpbnNlcnRpb25zKCspCj4gPiA+IAo+ID4gPiBJbmRleDoga3ZtLXB0cGRyaXZlci9hcmNoL3g4 Ni9rdm0veDg2LmMKPiA+ID4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ID4gPiAtLS0ga3ZtLXB0cGRyaXZlci5vcmln L2FyY2gveDg2L2t2bS94ODYuYwkyMDE3LTAxLTEzIDA4OjU5OjAzLjAxNTg5NTM1MyAtMDIwMAo+ ID4gPiArKysga3ZtLXB0cGRyaXZlci9hcmNoL3g4Ni9rdm0veDg2LmMJMjAxNy0wMS0xMyAwOTow NDo0Ni41ODE0MTUyNTkgLTAyMDAKPiA+ID4gQEAgLTExMzksNiArMTEzOSw4IEBACj4gPiA+ICAK PiA+ID4gIAl1NjQJCWJvb3RfbnM7Cj4gPiA+ICAJdTY0CQluc2VjX2Jhc2U7Cj4gPiA+ICsJdTY0 CQl3YWxsX3RpbWVfc2VjOwo+ID4gPiArCXU2NAkJd2FsbF90aW1lX3Nuc2VjOwo+ID4gCj4gPiBU aGUgbGVhZGluZyAicyIgaW4gInNuc2VjIiBsb29rcyBsaWtlIGEgY29weS1wYXN0ZSByZXNpZHVl Lgo+ID4gCj4gPiA+ICB9Owo+ID4gPiAgCj4gPiA+ICBzdGF0aWMgc3RydWN0IHB2Y2xvY2tfZ3Rv ZF9kYXRhIHB2Y2xvY2tfZ3RvZF9kYXRhOwo+ID4gPiBAQCAtMTE2Miw2ICsxMTY0LDkgQEAKPiA+ ID4gIAl2ZGF0YS0+Ym9vdF9ucwkJCT0gYm9vdF9uczsKPiA+ID4gIAl2ZGF0YS0+bnNlY19iYXNl CQk9IHRrLT50a3JfbW9uby54dGltZV9uc2VjOwo+ID4gPiAgCj4gPiA+ICsJdmRhdGEtPndhbGxf dGltZV9zZWMgICAgICAgICAgICA9IHRrLT54dGltZV9zZWM7Cj4gPiA+ICsJdmRhdGEtPndhbGxf dGltZV9zbnNlYyAgICAgICAgICA9IHRrLT50a3JfbW9uby54dGltZV9uc2VjOwo+ID4gCj4gPiBV c2luZyB0ay0+dGtyX21vbm8gb2Zmc2V0cyBmb3IgcmVhbCB0aW1lIHNlZW1zIHdyb25nIC0tIHdo YXQgaGFwcGVucyBpZgo+ID4gdGhlIHJlYWwgdGltZSBpcyBoYWxmIGEgc2Vjb25kIHNoaWZ0ZWQg ZnJvbSBtb25vdG9uaWMgdGltZT8KPiA+IAo+ID4gSWYgaXQncyBvaywgdGhlbiB2ZGF0YS0+bnNl Y19iYXNlID09IHZkYXRhLT53YWxsX3RpbWVfc25zZWMsIHNvIHdlIGRvbid0Cj4gPiBuZWVkIGl0 Lgo+ID4gCj4gPiA+ICsKPiA+ID4gIAl3cml0ZV9zZXFjb3VudF9lbmQoJnZkYXRhLT5zZXEpOwo+ ID4gPiAgfQo+ID4gPiAgI2VuZGlmCj4gPiA+IEBAIC0xNjIzLDYgKzE2MjgsMjggQEAKPiA+ID4g IAlyZXR1cm4gbW9kZTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiArc3RhdGljIGludCBkb19yZWFs dGltZShzdHJ1Y3QgdGltZXNwZWMgKnRzLCBjeWNsZV90ICpjeWNsZV9ub3cpCj4gPiAKPiA+IFRo aXMgaXMgdG9vIHNpbWlsYXIgdG8gZG9fbW9ub3RvbmljX2Jvb3QoKSwgYnV0IEkgZG9uJ3Qgc2Vl IGEgc29sdXRpb24KPiA+IHRoYXQgaXMgYm90aCBuaWNlIGFuZCBlZmZpY2llbnQuIDooCj4gPiAK PiA+IChJdCB1c3VhbGx5IG1lYW5zIG1hY3JvcyBvciBjb3B5aW5nIHB2Y2xvY2tfZ3RvZF9kYXRh LikKPiAKPiAKPiBQViBDbG9jayBpcyBoeXBlcnZpc29yIGFnbm9zdGljIHNvIGJvdGggS1ZNIGFu ZCBYZW4gY2FuIHVzZSBpdC4gSXMgdGhpcyBjbG9jawo+IGludGVyZmFjZSBzdXBwb3NlIHRvIGZv bGxvdyB0aGF0PwoKSWYgWGVuIGltcGxlbWVudHMgdGhlIEtWTV9IQ19DTE9DS19PRkZTRVQgaHlw ZXJjYWxsLCBYZW4gZ3Vlc3RzIGNhbiB1c2UgdGhlIAprdm0gcHRwIGRyaXZlciwgeWVzLgoKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751864AbdAMP72 (ORCPT ); Fri, 13 Jan 2017 10:59:28 -0500 Received: from mx1.redhat.com ([209.132.183.28]:50792 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751027AbdAMP70 (ORCPT ); Fri, 13 Jan 2017 10:59:26 -0500 Date: Fri, 13 Jan 2017 13:46:43 -0200 From: Marcelo Tosatti To: Konrad Rzeszutek Wilk Cc: Radim Krcmar , xen-devel@lists.xenproject.org, Joao Martins , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Paolo Bonzini , Richard Cochran , Miroslav Lichvar Subject: Re: [patch 1/3] KVM: x86: provide realtime host clock via vsyscall notifiers Message-ID: <20170113154640.GC4796@amt.cnet> References: <20170113120131.086634482@redhat.com> <20170113120317.948215303@redhat.com> <20170113151804.GA25835@potion> <20170113154110.GB31175@char.us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170113154110.GB31175@char.us.oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Fri, 13 Jan 2017 15:50:12 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jan 13, 2017 at 10:41:10AM -0500, Konrad Rzeszutek Wilk wrote: > On Fri, Jan 13, 2017 at 04:18:04PM +0100, Radim Krcmar wrote: > > 2017-01-13 10:01-0200, Marcelo Tosatti: > > > Expose the realtime host clock and save the TSC value > > > used for the clock calculation. > > > > > > Signed-off-by: Marcelo Tosatti > > > > > > --- > > > arch/x86/kvm/x86.c | 38 ++++++++++++++++++++++++++++++++++++++ > > > 1 file changed, 38 insertions(+) > > > > > > Index: kvm-ptpdriver/arch/x86/kvm/x86.c > > > =================================================================== > > > --- kvm-ptpdriver.orig/arch/x86/kvm/x86.c 2017-01-13 08:59:03.015895353 -0200 > > > +++ kvm-ptpdriver/arch/x86/kvm/x86.c 2017-01-13 09:04:46.581415259 -0200 > > > @@ -1139,6 +1139,8 @@ > > > > > > u64 boot_ns; > > > u64 nsec_base; > > > + u64 wall_time_sec; > > > + u64 wall_time_snsec; > > > > The leading "s" in "snsec" looks like a copy-paste residue. > > > > > }; > > > > > > static struct pvclock_gtod_data pvclock_gtod_data; > > > @@ -1162,6 +1164,9 @@ > > > vdata->boot_ns = boot_ns; > > > vdata->nsec_base = tk->tkr_mono.xtime_nsec; > > > > > > + vdata->wall_time_sec = tk->xtime_sec; > > > + vdata->wall_time_snsec = tk->tkr_mono.xtime_nsec; > > > > Using tk->tkr_mono offsets for real time seems wrong -- what happens if > > the real time is half a second shifted from monotonic time? > > > > If it's ok, then vdata->nsec_base == vdata->wall_time_snsec, so we don't > > need it. > > > > > + > > > write_seqcount_end(&vdata->seq); > > > } > > > #endif > > > @@ -1623,6 +1628,28 @@ > > > return mode; > > > } > > > > > > +static int do_realtime(struct timespec *ts, cycle_t *cycle_now) > > > > This is too similar to do_monotonic_boot(), but I don't see a solution > > that is both nice and efficient. :( > > > > (It usually means macros or copying pvclock_gtod_data.) > > > PV Clock is hypervisor agnostic so both KVM and Xen can use it. Is this clock > interface suppose to follow that? If Xen implements the KVM_HC_CLOCK_OFFSET hypercall, Xen guests can use the kvm ptp driver, yes.