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: Tue, 19 Oct 2010 22:05:39 +0200 Message-ID: <4CBDFA13.4080007@xutrox.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit To: kvm@vger.kernel.org Return-path: Received: from smtp-out3.tiscali.nl ([195.241.79.178]:49622 "EHLO smtp-out3.tiscali.nl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753253Ab0JSUFk (ORCPT ); Tue, 19 Oct 2010 16:05:40 -0400 Received: from [82.169.46.210] (helo=plutonium.lan) by smtp-out3.tiscali.nl with esmtp (Exim) (envelope-from <0h61vkll2ly8@xutrox.com>) id 1P8IRH-00056u-1P for kvm@vger.kernel.org; Tue, 19 Oct 2010 22:05:39 +0200 Received: from [IPv6:2001:610:620:0:182e:6b4c:77e7:218c] (unknown [IPv6:2001:610:620:0:182e:6b4c:77e7:218c]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by plutonium.lan (Postfix) with ESMTPS id 5DE3F47BC4 for ; Tue, 19 Oct 2010 20:05:38 +0000 (UTC) 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 bab3b9e..995d479 100644 --- a/arch/x86/kernel/pvclock.c +++ b/arch/x86/kernel/pvclock.c @@ -126,7 +126,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); @@ -158,8 +158,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; }