From mboxrd@z Thu Jan 1 00:00:00 1970 From: Denis Plotnikov Subject: [PATCH v3 6/6] kvmclock: add the clocksource stability querying function Date: Sat, 29 Jul 2017 15:35:11 +0300 Message-ID: <1501331711-12961-7-git-send-email-dplotnikov@virtuozzo.com> References: <1501331711-12961-1-git-send-email-dplotnikov@virtuozzo.com> Cc: rkagan@virtuozzo.com, den@virtuozzo.com, svt-core@lists.sw.ru To: pbonzini@redhat.com, rkrcmar@redhat.com, kvm@vger.kernel.org Return-path: Received: from mailhub.sw.ru ([195.214.232.25]:5897 "EHLO relay.sw.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753724AbdG2Mfy (ORCPT ); Sat, 29 Jul 2017 08:35:54 -0400 In-Reply-To: <1501331711-12961-1-git-send-email-dplotnikov@virtuozzo.com> Sender: kvm-owner@vger.kernel.org List-ID: The patch is the final part of work making kvmclock stable in L2 if it works over a stable clocksource. Signed-off-by: Denis Plotnikov --- arch/x86/kernel/kvmclock.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c index 52156d9..6a4d995 100644 --- a/arch/x86/kernel/kvmclock.c +++ b/arch/x86/kernel/kvmclock.c @@ -186,10 +186,22 @@ static void kvm_clock_read_with_cycles(u64 *cycles, u64 *cycles_stamp) *cycles = __kvm_clock_read(cycles_stamp); } +static bool kvm_clock_stable(void) +{ + int cpu = get_cpu(); + struct pvclock_vcpu_time_info *vcpu_time = &hv_clock[cpu].pvti; + u8 flags = pvclock_read_flags(vcpu_time); + + put_cpu(); + + return flags & PVCLOCK_TSC_STABLE_BIT; +} + struct clocksource kvm_clock = { .name = "kvm-clock", .read = kvm_clock_get_cycles, .read_with_cycles = kvm_clock_read_with_cycles, + .is_stable = kvm_clock_stable, .rating = 400, .mask = CLOCKSOURCE_MASK(64), .flags = CLOCK_SOURCE_IS_CONTINUOUS, -- 2.7.4