x86: add rdtsc barrier to TSC sync check
authorVenki Pallipadi <venkatesh.pallipadi@intel.com>
Mon, 17 Nov 2008 22:43:58 +0000 (14:43 -0800)
committerIngo Molnar <mingo@elte.hu>
Mon, 17 Nov 2008 23:15:02 +0000 (00:15 +0100)
commit93ce99e849433ede4ce8b410b749dc0cad1100b2
tree0481209f97a05a3851f536b2e16bd2868f83d842
parent26a3e99160cfb06a0a33e25b9fb0d516e2cc680d
x86: add rdtsc barrier to TSC sync check

Impact: fix incorrectly marked unstable TSC clock

Patch (commit 0d12cdd "sched: improve sched_clock() performance") has
a regression on one of the test systems here.

With the patch, I see:

 checking TSC synchronization [CPU#0 -> CPU#1]:
 Measured 28 cycles TSC warp between CPUs, turning off TSC clock.
 Marking TSC unstable due to check_tsc_sync_source failed

Whereas, without the patch syncs pass fine on all CPUs:

 checking TSC synchronization [CPU#0 -> CPU#1]: passed.

Due to this, TSC is marked unstable, when it is not actually unstable.
This is because syncs in check_tsc_wrap() goes away due to this commit.

As per the discussion on this thread, correct way to fix this is to add
explicit syncs as below?

Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/tsc_sync.c