[HVM] Initialise AP TSC to same as BP TSC.
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Mon, 6 Nov 2006 15:46:28 +0000 (15:46 +0000)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Mon, 6 Nov 2006 15:46:28 +0000 (15:46 +0000)
Signed-off-by: Keir Fraser <keir@xensource.com>
xen/arch/x86/hvm/hvm.c
xen/arch/x86/hvm/vmx/vmcs.c

index e785d31882629df2b1cd80f64a093822b6e268ea..6bc9881165e11a2d380851331a48e3669da6170f 100644 (file)
@@ -69,9 +69,9 @@ void hvm_stts(struct vcpu *v)
 void hvm_set_guest_time(struct vcpu *v, u64 gtime)
 {
     u64 host_tsc;
-   
+
     rdtscll(host_tsc);
-    
+
     v->arch.hvm_vcpu.cache_tsc_offset = gtime - host_tsc;
     hvm_funcs.set_tsc_offset(v, v->arch.hvm_vcpu.cache_tsc_offset);
 }
@@ -541,6 +541,11 @@ int hvm_bringup_ap(int vcpuid, int trampoline_vector)
 
     hvm_init_ap_context(ctxt, vcpuid, trampoline_vector);
 
+    /* Sync AP's TSC with BSP's. */
+    v->arch.hvm_vcpu.cache_tsc_offset =
+        v->domain->vcpu[0]->arch.hvm_vcpu.cache_tsc_offset;
+    hvm_funcs.set_tsc_offset(v, v->arch.hvm_vcpu.cache_tsc_offset);
+
     LOCK_BIGLOCK(d);
     rc = -EEXIST;
     if ( !test_bit(_VCPUF_initialised, &v->vcpu_flags) )
index e5ebec095e686e19d3b242ad866941db07b3e4c5..9c4e8defb37d8ab9cfdff4f70fdc7d2c9f384119 100644 (file)
@@ -285,19 +285,6 @@ static void vmx_set_host_env(struct vcpu *v)
     error |= __vmwrite(HOST_RSP, (unsigned long)get_stack_bottom());
 }
 
-#if 0
-static void vmx_do_launch(struct vcpu *v)
-{
-    if ( v->vcpu_id != 0 )
-    {
-        /* Sync AP's TSC with BSP's */
-        v->arch.hvm_vcpu.cache_tsc_offset = 
-            v->domain->vcpu[0]->arch.hvm_vcpu.cache_tsc_offset;
-        hvm_funcs.set_tsc_offset(v, v->arch.hvm_vcpu.cache_tsc_offset);
-    }
-}
-#endif
-
 static int construct_vmcs(struct vcpu *v)
 {
     int error = 0;