Since we'd like the updates to be done as synchronously as possible,
make an attempt at yielding immediately after the TSC write.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v4: New.
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -1708,7 +1708,14 @@ static void time_calibration_tsc_rendezv
atomic_inc(&r->semaphore);
if ( i == 0 )
+ {
write_tsc(master_tsc);
+ /*
+ * Try to give our hyperthread(s), if any, a chance to do
+ * the same as instantly as possible.
+ */
+ cpu_relax();
+ }
while ( atomic_read(&r->semaphore) != (2*total_cpus - 1) )
cpu_relax();
@@ -1730,7 +1737,14 @@ static void time_calibration_tsc_rendezv
}
if ( i == 0 )
+ {
write_tsc(master_tsc);
+ /*
+ * Try to give our hyperthread(s), if any, a chance to do
+ * the same as instantly as possible.
+ */
+ cpu_relax();
+ }
atomic_inc(&r->semaphore);
while ( atomic_read(&r->semaphore) > total_cpus )