[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] Pvrdtscp: move write_rdtscp_aux() to paravirt_ctxt_switch_to() -



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1260776704 0
# Node ID 2d072636c4f8b80ac62f49aaeabb04fcdf74760c
# Parent  b928797213ac6066e8e2a11326857ba718b18a59
Pvrdtscp: move write_rdtscp_aux() to paravirt_ctxt_switch_to() -
Currently write_rdtscp_aux() is placed in update_vcpu_system_time(),
which is called by schedule() before context_switch(). This will break
the HVM guest TSC_AUX state because at this point, MSR hasn't beed
saved for HVM guests.So put the function in the point when a PV vcpu
is really scheduled in.

Signed-off-by: Dongxiao Xu <dongxiao.xu@xxxxxxxxx>
---
 xen/arch/x86/domain.c |    4 ++++
 xen/arch/x86/time.c   |    4 ----
 2 files changed, 4 insertions(+), 4 deletions(-)

diff -r b928797213ac -r 2d072636c4f8 xen/arch/x86/domain.c
--- a/xen/arch/x86/domain.c     Fri Dec 11 09:17:09 2009 +0000
+++ b/xen/arch/x86/domain.c     Mon Dec 14 07:45:04 2009 +0000
@@ -1298,6 +1298,10 @@ static void paravirt_ctxt_switch_to(stru
         write_debugreg(6, v->arch.guest_context.debugreg[6]);
         write_debugreg(7, v->arch.guest_context.debugreg[7]);
     }
+
+    if ( (v->domain->arch.tsc_mode ==  TSC_MODE_PVRDTSCP) &&
+         boot_cpu_has(X86_FEATURE_RDTSCP) )
+        write_rdtscp_aux(v->domain->arch.incarnation);
 }
 
 /* Update per-VCPU guest runstate shared memory area (if registered). */
diff -r b928797213ac -r 2d072636c4f8 xen/arch/x86/time.c
--- a/xen/arch/x86/time.c       Fri Dec 11 09:17:09 2009 +0000
+++ b/xen/arch/x86/time.c       Mon Dec 14 07:45:04 2009 +0000
@@ -831,10 +831,6 @@ static void __update_vcpu_system_time(st
                                 &d->arch.ns_to_vtsc);
     else
         tsc_stamp = t->local_tsc_stamp;
-
-    if ( (d->arch.tsc_mode ==  TSC_MODE_PVRDTSCP) &&
-         boot_cpu_has(X86_FEATURE_RDTSCP) )
-        write_rdtscp_aux(d->arch.incarnation);
 
     /* Don't bother unless timestamps have changed or we are forced. */
     if ( !force && (u->tsc_timestamp == tsc_stamp) )

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.