From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: Re: [PATCH] kvm: kvmclock: use get_cpu() and put_cpu() Date: Fri, 26 Sep 2014 10:23:16 +0200 Message-ID: <54252274.50700@redhat.com> References: <1411711204-8892-1-git-send-email-tiejun.chen@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org To: Tiejun Chen Return-path: Received: from mx1.redhat.com ([209.132.183.28]:12022 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753181AbaIZIXT (ORCPT ); Fri, 26 Sep 2014 04:23:19 -0400 In-Reply-To: <1411711204-8892-1-git-send-email-tiejun.chen@intel.com> Sender: kvm-owner@vger.kernel.org List-ID: Il 26/09/2014 08:00, Tiejun Chen ha scritto: > We can use get_cpu() and put_cpu() to replace > preempt_disable()/cpu = smp_processor_id() and > preempt_enable() for slightly better code. > > Signed-off-by: Tiejun Chen > --- > arch/x86/kernel/kvmclock.c | 19 ++++++++----------- > 1 file changed, 8 insertions(+), 11 deletions(-) > > diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c > index d9156ce..0bf3467 100644 > --- a/arch/x86/kernel/kvmclock.c > +++ b/arch/x86/kernel/kvmclock.c > @@ -59,13 +59,12 @@ static void kvm_get_wallclock(struct timespec *now) > > native_write_msr(msr_kvm_wall_clock, low, high); > > - preempt_disable(); > - cpu = smp_processor_id(); > + cpu = get_cpu(); > > vcpu_time = &hv_clock[cpu].pvti; > pvclock_read_wallclock(&wall_clock, vcpu_time, now); > > - preempt_enable(); > + put_cpu(); > } > > static int kvm_set_wallclock(const struct timespec *now) > @@ -107,11 +106,10 @@ static unsigned long kvm_get_tsc_khz(void) > int cpu; > unsigned long tsc_khz; > > - preempt_disable(); > - cpu = smp_processor_id(); > + cpu = get_cpu(); > src = &hv_clock[cpu].pvti; > tsc_khz = pvclock_tsc_khz(src); > - preempt_enable(); > + put_cpu(); > return tsc_khz; > } > > @@ -284,23 +282,22 @@ int __init kvm_setup_vsyscall_timeinfo(void) > > size = PAGE_ALIGN(sizeof(struct pvclock_vsyscall_time_info)*NR_CPUS); > > - preempt_disable(); > - cpu = smp_processor_id(); > + cpu = get_cpu(); > > vcpu_time = &hv_clock[cpu].pvti; > flags = pvclock_read_flags(vcpu_time); > > if (!(flags & PVCLOCK_TSC_STABLE_BIT)) { > - preempt_enable(); > + put_cpu(); > return 1; > } > > if ((ret = pvclock_init_vsyscall(hv_clock, size))) { > - preempt_enable(); > + put_cpu(); > return ret; > } > > - preempt_enable(); > + put_cpu(); > > kvm_clock.archdata.vclock_mode = VCLOCK_PVCLOCK; > #endif > Reviewed-by: Paolo Bonzini but will wait for 3.19. Paolo