[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] hvm: reset TSC to 0 after domain resume from S3



Host S3 implicitly resets the host TSC to 0, but the tsc offset for hvm domains 
is not recalculated
when they resume, causing it to go into negative values. In Linux guest using 
tsc clocksource, this
results in a hang after wrap back to positive values since the tsc clocksource 
implementation
expects it reset.

Signed-off-by: Tomasz Wroblewski <tomasz.wroblewski@xxxxxxxxxx>
---
 xen/arch/x86/hvm/hvm.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 3b353ec..3d48978 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -3736,8 +3736,13 @@ static void hvm_s3_suspend(struct domain *d)
 
 static void hvm_s3_resume(struct domain *d)
 {
+    struct vcpu *v;
     if ( test_and_clear_bool(d->arch.hvm_domain.is_s3_suspended) )
+    {
+        for_each_vcpu( d, v )
+            hvm_set_guest_tsc( v, 0 );
         domain_unpause(d);
+    }
 }
 
 static int hvmop_set_isa_irq_level(
-- 
1.8.4.rc3


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.