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:
Keir Fraser committed 2009-12-14 07:45:04 +00:00
1 parent c174503e21
commit c16b168f1c
2 files changed
+4 -4

No files matched your search

+4
View File
@@ -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). */
-4
View File
@@ -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;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.