[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] x86/time: yield to hyperthreads after updating TSC during rendezvous
commit f1a042b9829687affabb95c7c1cbcde29f1d36bd Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Thu Apr 22 13:26:26 2021 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Thu Apr 22 13:26:26 2021 +0200 x86/time: yield to hyperthreads after updating TSC during rendezvous 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@xxxxxxxx> Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> --- xen/arch/x86/time.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index e92365f5bd..5578b7b3a2 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -1708,7 +1708,14 @@ static void time_calibration_tsc_rendezvous(void *_r) 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_rendezvous(void *_r) } 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 ) -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |