From mboxrd@z Thu Jan 1 00:00:00 1970 From: Denis Plotnikov Subject: [PATCH v2 03/11] kvmclock: pass cycles pointer to the changed pvclock interface Date: Fri, 21 Jul 2017 18:45:10 +0300 Message-ID: <1500651918-14156-4-git-send-email-dplotnikov@virtuozzo.com> References: <1500651918-14156-1-git-send-email-dplotnikov@virtuozzo.com> Cc: pbonzini@redhat.com, den@virtuozzo.com, rkagan@virtuozzo.com To: kvm@vger.kernel.org, rkrcmar@redhat.com Return-path: Received: from mailhub.sw.ru ([195.214.232.25]:16213 "EHLO relay.sw.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754480AbdGUPpf (ORCPT ); Fri, 21 Jul 2017 11:45:35 -0400 In-Reply-To: <1500651918-14156-1-git-send-email-dplotnikov@virtuozzo.com> Sender: kvm-owner@vger.kernel.org List-ID: This allows to get cycles stamp used for time calculation on kvm-clock Signed-off-by: Denis Plotnikov --- arch/x86/kernel/kvmclock.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c index 177f2f4..79dd035 100644 --- a/arch/x86/kernel/kvmclock.c +++ b/arch/x86/kernel/kvmclock.c @@ -82,7 +82,7 @@ static int kvm_set_wallclock(const struct timespec *now) return -1; } -static u64 kvm_clock_read(void) +static u64 kvm_clock_read(u64 *cycles_stamp) { struct pvclock_vcpu_time_info *src; u64 ret; @@ -91,30 +91,35 @@ static u64 kvm_clock_read(void) preempt_disable_notrace(); cpu = smp_processor_id(); src = &hv_clock[cpu].pvti; - ret = pvclock_clocksource_read(src, NULL); + ret = pvclock_clocksource_read(src, cycles_stamp); preempt_enable_notrace(); return ret; } static u64 kvm_clock_get_cycles(struct clocksource *cs, u64 *cycles_stamp) { - return kvm_clock_read(); + return kvm_clock_read(cycles_stamp); +} + +static u64 kvm_sched_clock_read_no_offset(void) +{ + return kvm_clock_read(NULL); } static u64 kvm_sched_clock_read(void) { - return kvm_clock_read() - kvm_sched_clock_offset; + return kvm_clock_read(NULL) - kvm_sched_clock_offset; } static inline void kvm_sched_clock_init(bool stable) { if (!stable) { - pv_time_ops.sched_clock = kvm_clock_read; + pv_time_ops.sched_clock = kvm_sched_clock_read_no_offset; clear_sched_clock_stable(); return; } - kvm_sched_clock_offset = kvm_clock_read(); + kvm_sched_clock_offset = kvm_clock_read(NULL); pv_time_ops.sched_clock = kvm_sched_clock_read; printk(KERN_INFO "kvm-clock: using sched offset of %llu cycles\n", -- 2.7.4