From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcelo Tosatti Subject: Re: [patch 4/5] PTP: add PTP_SYS_OFFSET emulation via cross timestamps infrastructure Date: Tue, 24 Jan 2017 09:23:29 -0200 Message-ID: <20170124112326.GA30511@amt.cnet> References: <20170120122025.665985919@redhat.com> <20170120122503.746158230@redhat.com> <20170120202502.GA10368@localhost.localdomain> <20170123131913.GA28104@amt.cnet> <20170123184415.GA2158@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Richard Cochran , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Radim Krcmar , Miroslav Lichvar To: Paolo Bonzini Return-path: Content-Disposition: inline In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On Mon, Jan 23, 2017 at 08:44:53PM +0100, Paolo Bonzini wrote: > > > On 23/01/2017 19:44, Richard Cochran wrote: > >> device clock |sample1P,deviceclock| |sample2P,deviceclock| > >> ------------------------------------------------------------- > >> realtime clock |sample1P,realtimeclock| |sample2P,realtimeclock| > > > > Are |sample1P,deviceclock| and |sample1P,realtimeclock| taken at the > > same instant in time? > > > > If not, then calling that PTP_SYS_OFFSET_PRECISE is misleading. > > Yes, of course. This was added for the e1000e drivers first, but chrony > isn't using it yet. In the case of KVM, the same host TSC value is used > to produce the host clock and (converted to guest TSC) the guest clock. > > If you just implement getclock64 the PTP_SYS_OFFSET output: > > device clock | |sample2| |sample4| |sample6| ... > ------------------------------------------------------------- > realtime clock |sample1| |sample3| |sample5| > > has a very large distance between samples on the same line (about 1 us), > and I think it is too noisy for userspace to make sense of the output. > > So, on one hand chrony only uses the mean of realtime clock samples, in > an attempt to produce precise cross timestamps. On the other hand, even > though KVM could produce those natively, chrony does not support > PTP_SYS_OFFSET_PRECISE. > > Marcelo's patch then produces fake realtime clock samples that, however, > let chrony derive the cross timestamps that KVM produced in the first > place. The outcome is really great accuracy compared to previous > versions of the patch, often just +/- 2 or 3 nanoseconds. > > Paolo Nope, the clock offset is the value inside square brackets. The +/- is the error. So the clock offset is actually up to 680ns. Yes for greater accuracy userspace should implement _PRECISE support. I'm resending v5 with native support for ->gettime and ->getcrosststamps.