Skip to contentSkip to conversation

KVM: pvclock_clocksource_read while-loop optimization

PATCH New Arjan Koers 1 participant 1 message Oct 19, 2010

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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)

arch/x86/kernel/pvclock.c +3 -2
index bab3b9e..995d479 100644
@@ -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;
 }