From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arjan Koers <0h61vkll2ly8@xutrox.com> Subject: [PATCH] KVM: pvclock_clocksource_read while-loop optimization Date: Sat, 01 Jan 2011 21:51:03 +0100 Message-ID: <4D1F93B7.4080707@xutrox.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, Glauber Costa To: Avi Kivity , Marcelo Tosatti Return-path: Received: from smtp-out0.tiscali.nl ([195.241.79.175]:46215 "EHLO smtp-out0.tiscali.nl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751322Ab1AAUvM (ORCPT ); Sat, 1 Jan 2011 15:51:12 -0500 Sender: kvm-owner@vger.kernel.org List-ID: Reduce the number of while-loop iterations (from two to one in the most common situation) Signed-off-by: Arjan Koers <0h61vkll2ly8@xutrox.com> diff --git a/arch/x86/kernel/pvclock.c b/arch/x86/kernel/pvclock.c index 42eb330..8f52acb 100644 --- a/arch/x86/kernel/pvclock.c +++ b/arch/x86/kernel/pvclock.c @@ -93,7 +93,7 @@ cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src) struct pvclock_shadow_time shadow; unsigned version; cycle_t ret, offset; - u64 last; + u64 last, save; do { version = pvclock_get_time_values(&shadow, src); @@ -125,8 +125,9 @@ cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src) do { if (ret < last) return last; + save = last; last = atomic64_cmpxchg(&last_value, last, ret); - } while (unlikely(last != ret)); + } while (unlikely(last != save)); return ret; }