KVM: pvclock_clocksource_read while-loop optimization
PATCH 1/1 KVM: pvclock_clocksource_read while-loop optimization
Reduce the number of while-loop iterations (from two to one in the most common situation)
Signed-off-by Arjan Koers <[email protected]>
arch/x86/kernel/pvclock.c +3 -2
@@ -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; }