From: Keir Fraser Date: Mon, 16 May 2011 12:40:51 +0000 (+0100) Subject: x86/tsc: Remove incorrect assertion from cstate_restore_tsc()... X-Git-Tag: 4.0.2-rc4~6 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=35a3d04fc08ed4748911b3c4e6dea67a8a5dc598;p=people%2Fvhanquez%2Fxen.git x86/tsc: Remove incorrect assertion from cstate_restore_tsc()... ..fix and move to write_tsc(). Signed-off-by: Keir Fraser xen-unstable changeset: 23342:16d12acccacf xen-unstable date: Mon May 16 13:24:05 2011 +0100 --- diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index c08f815b1..286281f16 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 f84c0dddf..4335bf551 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)