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
@@ -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; }
Quoted 19 lines · Arjan Koers
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 +1
-1@@ -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);
arch/x86/kernel/pvclock.c cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src) · line 133
Quoted 10 lines
arch/x86/kernel/pvclock.c +2
-1@@ -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; }
Hey, good catch.