x86: No need to vcpu_update_system_time() on map_vcpu_info().
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 15 Jul 2008 16:56:25 +0000 (17:56 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 15 Jul 2008 16:56:25 +0000 (17:56 +0100)
Also, ensure update_vcpu_system_time() triggers at least once for any
given vcpu, even if the TSC stamp is zero.

Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/arch/x86/domain.c

index 38775ab97267e1de6446c2508f247b17310bf5fc..32a7d4b66281c5b26104cefe8b1557b4d53ca67e 100644 (file)
@@ -286,6 +286,10 @@ int vcpu_initialise(struct vcpu *v)
 
     v->arch.flags = TF_kernel_mode;
 
+    /* Ensure that update_vcpu_system_time() fires at least once. */
+    if ( !is_idle_domain(d) )
+        vcpu_info(v, time).tsc_timestamp = ~0ull;
+
 #if defined(__i386__)
     mapcache_vcpu_init(v);
 #endif
@@ -812,14 +816,6 @@ map_vcpu_info(struct vcpu *v, unsigned long mfn, unsigned offset)
     for ( i = 0; i < BITS_PER_GUEST_LONG(d); i++ )
         set_bit(i, &vcpu_info(v, evtchn_pending_sel));
 
-    /*
-     * Only bother to update time for the current vcpu.  If we're
-     * operating on another vcpu, then it had better not be running at
-     * the time.
-     */
-    if ( v == current )
-         update_vcpu_system_time(v);
-
     return 0;
 }