From: Marcelo Tosatti <mtosatti@redhat.com> To: Andy Lutomirski <luto@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org>, Vitaly Kuznetsov <vkuznets@redhat.com>, Thomas Gleixner <tglx@linutronix.de>, Paolo Bonzini <pbonzini@redhat.com>, Radim Krcmar <rkrcmar@redhat.com>, Wanpeng Li <kernellwp@gmail.com>, LKML <linux-kernel@vger.kernel.org>, X86 ML <x86@kernel.org>, Matt Rickard <matt@softrans.com.au>, Stephen Boyd <sboyd@kernel.org>, John Stultz <john.stultz@linaro.org>, Florian Weimer <fweimer@redhat.com>, KY Srinivasan <kys@microsoft.com>, devel@linuxdriverproject.org, Linux Virtualization <virtualization@lists.linux-foundation.org>, Arnd Bergmann <arnd@arndb.de>, Juergen Gross <jgross@suse.com> Subject: Re: [patch 00/11] x86/vdso: Cleanups, simmplifications and CLOCK_TAI support Date: Thu, 11 Oct 2018 19:27:44 -0300 [thread overview] Message-ID: <20181011222744.GA17955@amt.cnet> (raw) In-Reply-To: <CALCETrW6b8=dU6vkXNS-rW1GPzJTbVxuVNsU4aoD_NwwobVQcg@mail.gmail.com> On Tue, Oct 09, 2018 at 01:09:42PM -0700, Andy Lutomirski wrote: > On Tue, Oct 9, 2018 at 8:28 AM Marcelo Tosatti <mtosatti@redhat.com> wrote: > > > > On Mon, Oct 08, 2018 at 10:38:22AM -0700, Andy Lutomirski wrote: > > > On Mon, Oct 8, 2018 at 8:27 AM Marcelo Tosatti <mtosatti@redhat.com> wrote: > > > > I read the comment three more times and even dug through the git > > > history. It seems like what you're saying is that, under certain > > > conditions (which arguably would be bugs in the core Linux timing > > > code), > > > > I don't see that as a bug. Its just a side effect of reading two > > different clocks (one is CLOCK_MONOTONIC and the other is TSC), > > and using those two clocks to as a "base + offset". > > > > As the comment explains, if you do that, can't guarantee monotonicity. > > > > > actually calling ktime_get_boot_ns() could be non-monotonic > > > with respect to the kvmclock timing. But get_kvmclock_ns() isn't used > > > for VM timing as such -- it's used for the IOCTL interfaces for > > > updating the time offset. So can you explain how my patch is > > > incorrect? > > > > ktime_get_boot_ns() has frequency correction applied, while > > reading masterclock + TSC offset does not. > > > > So the clock reads differ. > > > > Ah, okay, I finally think I see what's going on. In the kvmclock data > exposed to the guest, tsc_shift and tsc_to_system_mul come from > tgt_tsc_khz, whereas master_kernel_ns and master_cycle_now come from > CLOCK_BOOTTIME. So the kvmclock and kernel clock drift apart at a > rate given by the frequency shift and then suddenly agree again every > time the pvclock data is updated. Yes. > Is there a reason to do it this way? Since pvclock updates which update system_timestamp are expensive (must stop all vcpus), they should be avoided. So only HW TSC counts, and used as offset against vcpu's tsc_timestamp.
WARNING: multiple messages have this Message-ID (diff)
From: Marcelo Tosatti <mtosatti@redhat.com> To: Andy Lutomirski <luto@kernel.org> Cc: Wanpeng Li <kernellwp@gmail.com>, Florian Weimer <fweimer@redhat.com>, Juergen Gross <jgross@suse.com>, Arnd Bergmann <arnd@arndb.de>, Radim Krcmar <rkrcmar@redhat.com>, Peter Zijlstra <peterz@infradead.org>, X86 ML <x86@kernel.org>, LKML <linux-kernel@vger.kernel.org>, Linux Virtualization <virtualization@lists.linux-foundation.org>, Stephen Boyd <sboyd@kernel.org>, John Stultz <john.stultz@linaro.org>, devel@linuxdriverproject.org, Paolo Bonzini <pbonzini@redhat.com>, Thomas Gleixner <tglx@linutronix.de>, Matt Rickard <matt@softrans.com.au> Subject: Re: [patch 00/11] x86/vdso: Cleanups, simmplifications and CLOCK_TAI support Date: Thu, 11 Oct 2018 19:27:44 -0300 [thread overview] Message-ID: <20181011222744.GA17955@amt.cnet> (raw) In-Reply-To: <CALCETrW6b8=dU6vkXNS-rW1GPzJTbVxuVNsU4aoD_NwwobVQcg@mail.gmail.com> On Tue, Oct 09, 2018 at 01:09:42PM -0700, Andy Lutomirski wrote: > On Tue, Oct 9, 2018 at 8:28 AM Marcelo Tosatti <mtosatti@redhat.com> wrote: > > > > On Mon, Oct 08, 2018 at 10:38:22AM -0700, Andy Lutomirski wrote: > > > On Mon, Oct 8, 2018 at 8:27 AM Marcelo Tosatti <mtosatti@redhat.com> wrote: > > > > I read the comment three more times and even dug through the git > > > history. It seems like what you're saying is that, under certain > > > conditions (which arguably would be bugs in the core Linux timing > > > code), > > > > I don't see that as a bug. Its just a side effect of reading two > > different clocks (one is CLOCK_MONOTONIC and the other is TSC), > > and using those two clocks to as a "base + offset". > > > > As the comment explains, if you do that, can't guarantee monotonicity. > > > > > actually calling ktime_get_boot_ns() could be non-monotonic > > > with respect to the kvmclock timing. But get_kvmclock_ns() isn't used > > > for VM timing as such -- it's used for the IOCTL interfaces for > > > updating the time offset. So can you explain how my patch is > > > incorrect? > > > > ktime_get_boot_ns() has frequency correction applied, while > > reading masterclock + TSC offset does not. > > > > So the clock reads differ. > > > > Ah, okay, I finally think I see what's going on. In the kvmclock data > exposed to the guest, tsc_shift and tsc_to_system_mul come from > tgt_tsc_khz, whereas master_kernel_ns and master_cycle_now come from > CLOCK_BOOTTIME. So the kvmclock and kernel clock drift apart at a > rate given by the frequency shift and then suddenly agree again every > time the pvclock data is updated. Yes. > Is there a reason to do it this way? Since pvclock updates which update system_timestamp are expensive (must stop all vcpus), they should be avoided. So only HW TSC counts, and used as offset against vcpu's tsc_timestamp.
next prev parent reply other threads:[~2018-10-11 22:28 UTC|newest] Thread overview: 158+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-09-14 12:50 [patch 00/11] x86/vdso: Cleanups, simmplifications and CLOCK_TAI support Thomas Gleixner 2018-09-14 12:50 ` [patch 01/11] clocksource: Provide clocksource_arch_init() Thomas Gleixner 2018-09-14 12:50 ` Thomas Gleixner 2018-09-14 12:50 ` [patch 02/11] x86/time: Implement clocksource_arch_init() Thomas Gleixner 2018-09-14 12:50 ` Thomas Gleixner 2018-09-14 15:45 ` Vitaly Kuznetsov 2018-09-14 15:45 ` Vitaly Kuznetsov 2018-09-15 6:05 ` Thomas Gleixner 2018-09-15 6:05 ` Thomas Gleixner 2018-09-14 12:50 ` [patch 03/11] x86/vdso: Enforce 64bit clocksource Thomas Gleixner 2018-09-14 12:50 ` Thomas Gleixner 2018-09-14 12:50 ` [patch 04/11] x86/vdso: Use unsigned int consistently for vsyscall_gtod_data::seq Thomas Gleixner 2018-09-14 12:50 ` Thomas Gleixner 2018-09-14 12:50 ` [patch 05/11] x86/vdso: Introduce and use vgtod_ts Thomas Gleixner 2018-09-14 12:50 ` Thomas Gleixner 2018-09-14 12:50 ` [patch 06/11] x86/vdso: Collapse high resolution functions Thomas Gleixner 2018-09-14 12:50 ` Thomas Gleixner 2018-09-14 12:50 ` [patch 07/11] x86/vdso: Collapse coarse functions Thomas Gleixner 2018-09-14 12:50 ` Thomas Gleixner 2018-09-14 12:50 ` [patch 08/11] x86/vdso: Replace the clockid switch case Thomas Gleixner 2018-09-14 12:50 ` Thomas Gleixner 2018-09-14 12:50 ` [patch 09/11] x86/vdso: Simplify the invalid vclock case Thomas Gleixner 2018-09-14 12:50 ` Thomas Gleixner 2018-09-17 19:25 ` Andy Lutomirski 2018-09-17 19:25 ` Andy Lutomirski 2018-09-17 20:12 ` John Stultz 2018-09-18 7:52 ` Thomas Gleixner 2018-09-18 8:30 ` Peter Zijlstra 2018-09-18 8:30 ` Peter Zijlstra 2018-09-18 8:52 ` Thomas Gleixner 2018-09-18 8:52 ` Thomas Gleixner 2018-09-18 10:06 ` Thomas Gleixner 2018-09-18 10:41 ` Thomas Gleixner 2018-09-18 10:41 ` Thomas Gleixner 2018-09-18 12:48 ` Peter Zijlstra 2018-09-18 12:48 ` Peter Zijlstra 2018-09-18 13:23 ` Thomas Gleixner 2018-09-18 13:23 ` Thomas Gleixner 2018-09-18 13:38 ` Peter Zijlstra 2018-09-18 13:38 ` Peter Zijlstra 2018-09-18 15:52 ` Thomas Gleixner 2018-09-27 14:41 ` Thomas Gleixner 2018-09-27 14:41 ` Thomas Gleixner 2018-09-18 15:52 ` Thomas Gleixner 2018-09-18 10:06 ` Thomas Gleixner 2018-09-18 14:01 ` Andy Lutomirski 2018-09-18 14:01 ` Andy Lutomirski 2018-09-18 22:46 ` Thomas Gleixner 2018-09-18 23:03 ` Andy Lutomirski 2018-09-18 23:03 ` Andy Lutomirski 2018-09-18 23:16 ` Thomas Gleixner 2018-09-18 23:16 ` Thomas Gleixner 2018-09-27 14:36 ` Thomas Gleixner 2018-09-27 14:39 ` Andy Lutomirski 2018-09-27 14:39 ` Andy Lutomirski 2018-09-27 14:36 ` Thomas Gleixner 2018-09-19 9:08 ` Rasmus Villemoes 2018-09-19 13:29 ` Thomas Gleixner 2018-09-19 13:29 ` Thomas Gleixner 2018-09-18 22:46 ` Thomas Gleixner 2018-09-18 7:52 ` Thomas Gleixner 2018-09-14 12:50 ` [patch 10/11] x86/vdso: Move cycle_last handling into the caller Thomas Gleixner 2018-09-14 15:26 ` Vitaly Kuznetsov 2018-09-14 15:26 ` Vitaly Kuznetsov 2018-09-14 12:50 ` Thomas Gleixner 2018-09-14 12:50 ` [patch 11/11] x66/vdso: Add CLOCK_TAI support Thomas Gleixner 2018-09-14 12:50 ` Thomas Gleixner 2018-09-14 14:04 ` Andy Lutomirski 2018-09-14 14:04 ` Andy Lutomirski 2018-09-14 14:27 ` Thomas Gleixner 2018-09-14 14:27 ` Thomas Gleixner 2018-09-14 14:59 ` Andy Lutomirski 2018-09-14 14:59 ` Andy Lutomirski 2018-09-16 9:39 ` Thomas Gleixner 2018-09-16 9:39 ` Thomas Gleixner 2018-09-14 12:56 ` [patch 00/11] x86/vdso: Cleanups, simmplifications and " Florian Weimer 2018-09-14 13:05 ` Thomas Gleixner 2018-09-14 13:06 ` Florian Weimer 2018-09-14 13:19 ` Thomas Gleixner 2018-09-14 13:19 ` Thomas Gleixner 2018-09-14 13:05 ` Thomas Gleixner 2018-09-14 13:09 ` Peter Zijlstra 2018-09-14 13:09 ` Peter Zijlstra 2018-09-14 14:22 ` Arnd Bergmann 2018-09-17 13:00 ` Thomas Gleixner 2018-09-17 13:00 ` Thomas Gleixner 2018-09-24 21:08 ` Arnd Bergmann 2018-09-24 21:08 ` Arnd Bergmann 2018-09-14 14:22 ` Arnd Bergmann 2018-10-03 5:15 ` Andy Lutomirski 2018-10-03 5:15 ` Andy Lutomirski 2018-10-03 9:22 ` Vitaly Kuznetsov 2018-10-03 9:22 ` Vitaly Kuznetsov 2018-10-03 10:20 ` Andy Lutomirski 2018-10-03 10:20 ` Andy Lutomirski 2018-10-03 12:01 ` Vitaly Kuznetsov 2018-10-03 12:01 ` Vitaly Kuznetsov 2018-10-03 14:20 ` Andy Lutomirski 2018-10-03 14:20 ` Andy Lutomirski 2018-10-03 15:10 ` Thomas Gleixner 2018-10-03 15:10 ` Thomas Gleixner 2018-10-03 16:18 ` Andy Lutomirski 2018-10-03 16:18 ` Andy Lutomirski 2018-10-03 19:06 ` Marcelo Tosatti 2018-10-04 7:54 ` Vitaly Kuznetsov 2018-10-04 8:11 ` Peter Zijlstra 2018-10-04 14:00 ` Andy Lutomirski 2018-10-04 14:00 ` Andy Lutomirski 2018-10-04 19:31 ` Peter Zijlstra 2018-10-04 19:31 ` Peter Zijlstra 2018-10-04 20:05 ` Andy Lutomirski 2018-10-04 20:05 ` Andy Lutomirski 2018-10-04 22:15 ` Andy Lutomirski 2018-10-04 22:15 ` Andy Lutomirski 2018-10-06 20:27 ` Marcelo Tosatti 2018-10-06 20:27 ` Marcelo Tosatti 2018-10-06 22:28 ` Andy Lutomirski 2018-10-06 22:28 ` Andy Lutomirski 2018-10-08 15:26 ` Marcelo Tosatti 2018-10-08 15:26 ` Marcelo Tosatti 2018-10-08 17:38 ` Andy Lutomirski 2018-10-08 17:38 ` Andy Lutomirski 2018-10-08 19:36 ` Marcelo Tosatti 2018-10-08 19:36 ` Marcelo Tosatti 2018-10-09 20:09 ` Andy Lutomirski 2018-10-09 20:09 ` Andy Lutomirski 2018-10-11 22:27 ` Marcelo Tosatti [this message] 2018-10-11 22:27 ` Marcelo Tosatti 2018-10-11 23:00 ` Andy Lutomirski 2018-10-11 23:00 ` Andy Lutomirski 2018-10-15 13:39 ` Marcelo Tosatti 2018-10-15 13:39 ` Marcelo Tosatti 2018-10-06 20:49 ` Marcelo Tosatti 2018-10-06 20:49 ` Marcelo Tosatti 2018-10-04 8:11 ` Peter Zijlstra 2018-10-04 12:00 ` Paolo Bonzini 2018-10-04 14:04 ` Andy Lutomirski 2018-10-04 14:04 ` Andy Lutomirski 2018-10-04 12:00 ` Paolo Bonzini 2018-10-05 21:18 ` Marcelo Tosatti 2018-10-05 21:18 ` Marcelo Tosatti 2018-10-04 7:54 ` Vitaly Kuznetsov 2018-10-03 19:06 ` Marcelo Tosatti 2018-10-03 19:00 ` Marcelo Tosatti 2018-10-03 19:00 ` Marcelo Tosatti 2018-10-03 19:05 ` [patch 00/11] x86/vdso: Cleanups, simmplifications and CLOCK_TAI support\ Marcelo Tosatti 2018-10-03 19:05 ` Marcelo Tosatti 2018-10-03 22:32 ` [patch 00/11] x86/vdso: Cleanups, simmplifications and CLOCK_TAI support Andy Lutomirski 2018-10-03 22:32 ` Andy Lutomirski 2018-10-04 16:37 ` Marcelo Tosatti 2018-10-04 16:37 ` Marcelo Tosatti 2018-10-04 17:08 ` Andy Lutomirski 2018-10-04 17:28 ` Vitaly Kuznetsov 2018-10-04 17:28 ` Vitaly Kuznetsov 2018-10-04 17:08 ` Andy Lutomirski 2018-10-04 20:32 ` Andy Lutomirski 2018-10-04 20:32 ` Andy Lutomirski -- strict thread matches above, loose matches on Subject: below -- 2018-09-14 12:50 Thomas Gleixner
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20181011222744.GA17955@amt.cnet \ --to=mtosatti@redhat.com \ --cc=arnd@arndb.de \ --cc=devel@linuxdriverproject.org \ --cc=fweimer@redhat.com \ --cc=jgross@suse.com \ --cc=john.stultz@linaro.org \ --cc=kernellwp@gmail.com \ --cc=kys@microsoft.com \ --cc=linux-kernel@vger.kernel.org \ --cc=luto@kernel.org \ --cc=matt@softrans.com.au \ --cc=pbonzini@redhat.com \ --cc=peterz@infradead.org \ --cc=rkrcmar@redhat.com \ --cc=sboyd@kernel.org \ --cc=tglx@linutronix.de \ --cc=virtualization@lists.linux-foundation.org \ --cc=vkuznets@redhat.com \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.