mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
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@intel.com>
This commit is contained in:
1 parent
c174503e21
commit
c16b168f1c
2 files changed
+4
-4
No files matched your search
@@ -1298,6 +1298,10 @@ static void paravirt_ctxt_switch_to(struct vcpu *v)
|
||||
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). */
|
||||
|
||||
@@ -832,10 +832,6 @@ static void __update_vcpu_system_time(struct vcpu *v, int force)
|
||||
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) )
|
||||
return;
|
||||
|
||||