|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 09/13] x86/time.c: Scale host TSC in pvclock properly
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@xxxxxxxxx>
---
xen/arch/x86/time.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index 4b5402c..54eab6e 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -832,10 +832,19 @@ static void __update_vcpu_system_time(struct vcpu *v, int
force)
}
else
{
- _u.tsc_timestamp = t->local_tsc_stamp;
+ if ( is_hvm_domain(d) && hvm_funcs.tsc_scaling_supported )
+ {
+ _u.tsc_timestamp = hvm_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
+ {
+ _u.tsc_timestamp = t->local_tsc_stamp;
+ _u.tsc_to_system_mul = t->tsc_scale.mul_frac;
+ _u.tsc_shift = (s8)t->tsc_scale.shift;
+ }
_u.system_time = t->stime_local_stamp;
- _u.tsc_to_system_mul = t->tsc_scale.mul_frac;
- _u.tsc_shift = (s8)t->tsc_scale.shift;
}
if ( is_hvm_domain(d) )
_u.tsc_timestamp += v->arch.hvm_vcpu.cache_tsc_offset;
--
2.4.8
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |