aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/time.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-06-17 08:50:55 +0100
committerKeir Fraser <keir.fraser@citrix.com>2010-06-17 08:50:55 +0100
commit3358e0fe7f94b4f6bf8cdbaffa86693939e3fec5 (patch)
tree08b0743768bb83818c9945e772480f84ec2fcc64 /xen/arch/x86/time.c
parent42f6af8640c9292b199b6d2fdb78e13d9a1e4a3f (diff)
downloadxen-3358e0fe7f94b4f6bf8cdbaffa86693939e3fec5.tar.gz
xen-3358e0fe7f94b4f6bf8cdbaffa86693939e3fec5.tar.bz2
xen-3358e0fe7f94b4f6bf8cdbaffa86693939e3fec5.zip
cpuidle: reduce redundant cost in cstate_restore_tsc for nonstop tsc
Signed-off-by: Wei Gang <gang.wei@intel.com>
Diffstat (limited to 'xen/arch/x86/time.c')
-rw-r--r--xen/arch/x86/time.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index d500490254..3a824ec516 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -664,14 +664,17 @@ static void __init init_platform_timer(void)
void cstate_restore_tsc(void)
{
- struct cpu_time *t = &this_cpu(cpu_time);
- struct time_scale sys_to_tsc = scale_reciprocal(t->tsc_scale);
+ struct cpu_time *t;
+ struct time_scale sys_to_tsc;
s_time_t stime_delta;
u64 new_tsc;
if ( boot_cpu_has(X86_FEATURE_NONSTOP_TSC) )
return;
+ t = &this_cpu(cpu_time);
+ sys_to_tsc = scale_reciprocal(t->tsc_scale);
+
stime_delta = read_platform_stime() - t->stime_master_stamp;
if ( stime_delta < 0 )
stime_delta = 0;