x86/time: also use rdtsc_ordered() in check_tsc_warp()
authorJan Beulich <jbeulich@suse.com>
Fri, 5 Aug 2016 16:00:45 +0000 (18:00 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 5 Aug 2016 16:00:45 +0000 (18:00 +0200)
This really was meant to be added in a v2 of what became commit
fa74e70500 ("x86/time: introduce and use rdtsc_ordered()").

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/arch/x86/time.c

index e64644031db3391a698fcb02fc60fca6dad6c138..b316f23c62c67bb1868da82be9dd0a3d4ed4a2bb 100644 (file)
@@ -1146,16 +1146,13 @@ static void local_time_calibration(void)
  */
 static void check_tsc_warp(unsigned long tsc_khz, unsigned long *max_warp)
 {
-#define rdtsc_barrier() mb()
     static DEFINE_SPINLOCK(sync_lock);
     static cycles_t last_tsc;
 
     cycles_t start, now, prev, end;
     int i;
 
-    rdtsc_barrier();
-    start = get_cycles();
-    rdtsc_barrier();
+    start = rdtsc_ordered();
 
     /* The measurement runs for 20 msecs: */
     end = start + tsc_khz * 20ULL;
@@ -1170,9 +1167,7 @@ static void check_tsc_warp(unsigned long tsc_khz, unsigned long *max_warp)
          */
         spin_lock(&sync_lock);
         prev = last_tsc;
-        rdtsc_barrier();
-        now = get_cycles();
-        rdtsc_barrier();
+        now = rdtsc_ordered();
         last_tsc = now;
         spin_unlock(&sync_lock);