This patch makes the pvclock return the scaled host TSC and corresponding scaling parameters to HVM domains if guest TSC is not emulated and TSC scaling is enabled.
Signed-off-by: Haozhong Zhang <haozhong.zh...@intel.com> --- xen/arch/x86/time.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index 95df4f1..732d1e9 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -815,10 +815,18 @@ static void __update_vcpu_system_time(struct vcpu *v, int force) } else { - tsc_stamp = t->local_tsc_stamp; - - _u.tsc_to_system_mul = t->tsc_scale.mul_frac; - _u.tsc_shift = (s8)t->tsc_scale.shift; + if ( is_hvm_domain(d) && cpu_has_tsc_ratio ) + { + tsc_stamp = hvm_funcs.scale_tsc(v, t->local_tsc_stamp); + _u.tsc_to_system_mul = d->arch.vtsc_to_ns.mul_frac; + _u.tsc_shift = d->arch.vtsc_to_ns.shift; + } + else + { + tsc_stamp = t->local_tsc_stamp; + _u.tsc_to_system_mul = t->tsc_scale.mul_frac; + _u.tsc_shift = (s8)t->tsc_scale.shift; + } } _u.tsc_timestamp = tsc_stamp; -- 2.6.3 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel