diff options
author | Keir Fraser <keir@xen.org> | 2011-05-16 13:40:51 +0100 |
---|---|---|
committer | Keir Fraser <keir@xen.org> | 2011-05-16 13:40:51 +0100 |
commit | 6aa8e87387f01788698d9a2806bf06c5d238b5f8 (patch) | |
tree | fb62eee6d558d803513da2d0e5884c52b48dc427 | |
parent | a9e870539a2e3d1741a485883b2ca5f2763add73 (diff) | |
download | xen-6aa8e87387f01788698d9a2806bf06c5d238b5f8.tar.gz xen-6aa8e87387f01788698d9a2806bf06c5d238b5f8.tar.bz2 xen-6aa8e87387f01788698d9a2806bf06c5d238b5f8.zip |
x86/tsc: Remove incorrect assertion from cstate_restore_tsc()...
..fix and move to write_tsc().
Signed-off-by: Keir Fraser <keir@xen.org>
xen-unstable changeset: 23342:16d12acccacf
xen-unstable date: Mon May 16 13:24:05 2011 +0100
-rw-r--r-- | xen/arch/x86/time.c | 2 | ||||
-rw-r--r-- | xen/include/asm-x86/msr.h | 8 |
2 files changed, 7 insertions, 3 deletions
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index c08f815b17..286281f16b 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -724,8 +724,6 @@ void cstate_restore_tsc(void) new_tsc = t->local_tsc_stamp + scale_delta(stime_delta, &sys_to_tsc); - ASSERT(boot_cpu_has(X86_FEATURE_TSC_RELIABLE)); - write_tsc(new_tsc); } diff --git a/xen/include/asm-x86/msr.h b/xen/include/asm-x86/msr.h index f84c0dddf8..4335bf551f 100644 --- a/xen/include/asm-x86/msr.h +++ b/xen/include/asm-x86/msr.h @@ -82,7 +82,13 @@ static inline void wrmsrl(unsigned int msr, __u64 val) } while(0) #endif -#define write_tsc(val) wrmsrl(MSR_IA32_TSC, val) +#define __write_tsc(val) wrmsrl(MSR_IA32_TSC, val) +#define write_tsc(val) ({ \ + /* Reliable TSCs are in lockstep across all CPUs. We should \ + * never write to them. */ \ + ASSERT(!boot_cpu_has(X86_FEATURE_TSC_RELIABLE)); \ + __write_tsc(val); \ +}) #define write_rdtscp_aux(val) wrmsr(MSR_TSC_AUX, (val), 0) |