diff --git a/xen/arch/x86/hvm/domain.c b/xen/arch/x86/hvm/domain.c index 37092f31f3..155d61db13 100644 --- a/xen/arch/x86/hvm/domain.c +++ b/xen/arch/x86/hvm/domain.c @@ -312,8 +312,7 @@ int arch_set_info_hvm_guest(struct vcpu *v, const struct vcpu_hvm_context *ctx) /* Sync AP's TSC with BSP's. */ v->arch.hvm.cache_tsc_offset = d->vcpu[0]->arch.hvm.cache_tsc_offset; - hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset, - d->arch.hvm.sync_tsc); + hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset); paging_update_paging_modes(v); diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 4084b610fa..0eafa515bb 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -412,7 +412,7 @@ static void hvm_set_guest_tsc_fixed(struct vcpu *v, u64 guest_tsc, u64 at_tsc) delta_tsc = guest_tsc - tsc; v->arch.hvm.cache_tsc_offset = delta_tsc; - hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset, at_tsc); + hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset); } #define hvm_set_guest_tsc(v, t) hvm_set_guest_tsc_fixed(v, t, 0) @@ -430,7 +430,7 @@ static void hvm_set_guest_tsc_msr(struct vcpu *v, u64 guest_tsc) static void hvm_set_guest_tsc_adjust(struct vcpu *v, u64 tsc_adjust) { v->arch.hvm.cache_tsc_offset += tsc_adjust - v->arch.hvm.msr_tsc_adjust; - hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset, 0); + hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset); v->arch.hvm.msr_tsc_adjust = tsc_adjust; if ( v == current ) update_vcpu_system_time(v); @@ -4023,8 +4023,7 @@ void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip) /* Sync AP's TSC with BSP's. */ v->arch.hvm.cache_tsc_offset = v->domain->vcpu[0]->arch.hvm.cache_tsc_offset; - hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset, - d->arch.hvm.sync_tsc); + hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset); v->arch.hvm.msr_tsc_adjust = 0; diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index da113f488b..564337bb4e 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -778,7 +778,7 @@ static int cf_check svm_get_guest_pat(struct vcpu *v, u64 *gpat) return 1; } -static void cf_check svm_set_tsc_offset(struct vcpu *v, u64 offset, u64 at_tsc) +static void cf_check svm_set_tsc_offset(struct vcpu *v, uint64_t offset) { struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb; struct vmcb_struct *n1vmcb, *n2vmcb; diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index b1c37268da..524bce8307 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -1556,7 +1556,7 @@ static void cf_check vmx_handle_cd(struct vcpu *v, unsigned long value) } } -static void cf_check vmx_set_tsc_offset(struct vcpu *v, u64 offset, u64 at_tsc) +static void cf_check vmx_set_tsc_offset(struct vcpu *v, uint64_t offset) { vmx_vmcs_enter(v); diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index e4f3a5fe4c..38952f0696 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -1114,7 +1114,7 @@ static void load_shadow_guest_state(struct vcpu *v) hvm_inject_hw_exception(X86_EXC_GP, 0); } - hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset, 0); + hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset); vvmcs_to_shadow_bulk(v, ARRAY_SIZE(vmentry_fields), vmentry_fields); @@ -1330,7 +1330,7 @@ static void load_vvmcs_host_state(struct vcpu *v) hvm_inject_hw_exception(X86_EXC_GP, 0); } - hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset, 0); + hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset); set_vvmcs(v, VM_ENTRY_INTR_INFO, 0); diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/hvm/hvm.h index 7412256a2d..666fa402a8 100644 --- a/xen/arch/x86/include/asm/hvm/hvm.h +++ b/xen/arch/x86/include/asm/hvm/hvm.h @@ -165,7 +165,7 @@ struct hvm_function_table { int (*get_guest_pat)(struct vcpu *v, uint64_t *gpat); int (*set_guest_pat)(struct vcpu *v, uint64_t gpat); - void (*set_tsc_offset)(struct vcpu *v, u64 offset, u64 at_tsc); + void (*set_tsc_offset)(struct vcpu *v, uint64_t offset); void (*inject_event)(const struct x86_event *event); @@ -482,10 +482,9 @@ static inline void hvm_cpuid_policy_changed(struct vcpu *v) alternative_vcall(hvm_funcs.cpuid_policy_changed, v); } -static inline void hvm_set_tsc_offset(struct vcpu *v, uint64_t offset, - uint64_t at_tsc) +static inline void hvm_set_tsc_offset(struct vcpu *v, uint64_t offset) { - alternative_vcall(hvm_funcs.set_tsc_offset, v, offset, at_tsc); + alternative_vcall(hvm_funcs.set_tsc_offset, v, offset); } /* @@ -847,7 +846,7 @@ static inline void hvm_sync_pir_to_irr(struct vcpu *v) */ int hvm_guest_x86_mode(struct vcpu *v); void hvm_cpuid_policy_changed(struct vcpu *v); -void hvm_set_tsc_offset(struct vcpu *v, uint64_t offset, uint64_t at_tsc); +void hvm_set_tsc_offset(struct vcpu *v, uint64_t offset); /* End of prototype list */ diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index 0664ffb806..0bfad0f634 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -2982,8 +2982,7 @@ int tsc_set_info(struct domain *d, */ d->arch.hvm.sync_tsc = rdtsc(); hvm_set_tsc_offset(d->vcpu[0], - d->vcpu[0]->arch.hvm.cache_tsc_offset, - d->arch.hvm.sync_tsc); + d->vcpu[0]->arch.hvm.cache_tsc_offset); } }