Message ID | 1453067939-9121-3-git-send-email-haozhong.zhang@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
>>> On 17.01.16 at 22:58, <haozhong.zhang@intel.com> wrote: > 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.zhang@intel.com> This doesn't look to be dependent on patch 1, and I would have gone apply it right away if that had been stated anywhere explicitly. Jan
On 01/18/16 06:42, Jan Beulich wrote: > >>> On 17.01.16 at 22:58, <haozhong.zhang@intel.com> wrote: > > 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.zhang@intel.com> > > This doesn't look to be dependent on patch 1, and I would have > gone apply it right away if that had been stated anywhere > explicitly. > This one uses hvm_funcs.scale_tsc() added in patch 1. Haozhong
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index ec3f33e..988403a 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 ( has_hvm_container_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 = t->tsc_scale.shift; + } } _u.tsc_timestamp = tsc_stamp;