Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752724AbdHBQKJ (ORCPT ); Wed, 2 Aug 2017 12:10:09 -0400 Received: from mail-wm0-f66.google.com ([74.125.82.66]:34882 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751154AbdHBQKE (ORCPT ); Wed, 2 Aug 2017 12:10:04 -0400 Subject: Re: [PATCH v4 00/10] make L2's kvm-clock stable, get rid of pvclock_gtod_copy in KVM To: Denis Plotnikov , rkrcmar@redhat.com, kvm@vger.kernel.org, john.stultz@linaro.org, tglx@linutronix.de Cc: mingo@redhat.com, hpa@zytor.com, linux-kernel@vger.kernel.org, x86@kernel.org, rkagan@virtuozzo.com, den@virtuozzo.com References: <1501684690-211093-1-git-send-email-dplotnikov@virtuozzo.com> From: Paolo Bonzini Message-ID: <97db951d-326d-daa1-e619-4348b7eb4e70@redhat.com> Date: Wed, 2 Aug 2017 18:10:00 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <1501684690-211093-1-git-send-email-dplotnikov@virtuozzo.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3075 Lines: 70 On 02/08/2017 16:38, Denis Plotnikov wrote: > V4: > * removed "is stable" function with vague definition of stability > there is the only function which does time with cycle stamp getting > * some variables renamed > * some patches split into smaller once > * atomic64_t usage is replaced with atomic_t Thanks. This looks good from the KVM point of view. Let's see what the timekeeping guys think. Paolo > V3: > Changing the timekeeper interface for clocksource reading looks like > an overkill to achive the goal of getting cycles stamp for KVM. > Instead extend the timekeeping interface and add functions which provide > necessary data: read clocksource with cycles stamp, check whether the > clock source is stable. > > Use those functions and improve existing timekeeper functionality to > replace pvclock_gtod_copy scheme in masterclock data calculation. > > V2: > The main goal is to make L2 kvm-clock be stable when it's running over L1 > with stable kvm-clock. > > The patch series is for x86 architecture only. If the series is approved > I'll do changes for other architectures but I don't have an ability to > compile and check for every single on (help needed) > > The patch series do the following: > > * change timekeeper interface to get cycles stamp value from > the timekeeper > * get rid of pvclock copy in KVM by using the changed timekeeper > interface: get time and cycles right from the timekeeper > * make KVM recognize a stable kvm-clock as stable clocksource > and use the KVM masterclock in this case, which means making > L2 stable when running over stable L1 kvm-clock > > Denis Plotnikov (10): > timekeeper: introduce extended clocksource reading callback > timekeeper: introduce boot field in system_time_snapshot > timekeeper: use the extended reading function on snapshot acquiring > tsc: implement the extended tsc reading function > KVM: x86: switch to masterclock update using timekeeper functionality > timekeeper: add clocksource change notifier > KVM: x86: remove not used pvclock_gtod_copy > pvclock: add parameters to store stamp data in pvclock reading > function > pvclock: add clocksource change notification on changing of tsc stable > bit > kvmclock: implement the extended reading function > > arch/x86/include/asm/kvm_host.h | 2 +- > arch/x86/include/asm/pvclock.h | 3 +- > arch/x86/kernel/kvmclock.c | 19 +++- > arch/x86/kernel/pvclock.c | 37 +++++- > arch/x86/kernel/tsc.c | 10 ++ > arch/x86/kvm/trace.h | 31 ++--- > arch/x86/kvm/x86.c | 242 ++++++++-------------------------------- > arch/x86/xen/time.c | 2 +- > include/linux/clocksource.h | 11 +- > include/linux/cs_notifier.h | 17 +++ > include/linux/timekeeping.h | 5 + > kernel/time/timekeeping.c | 68 ++++++++++- > 12 files changed, 219 insertions(+), 228 deletions(-) > create mode 100644 include/linux/cs_notifier.h >