Fix domain save when guest is in S3.
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 5 Dec 2008 15:54:22 +0000 (15:54 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 5 Dec 2008 15:54:22 +0000 (15:54 +0000)
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
tools/python/xen/xend/XendDomainInfo.py
tools/xcutils/xc_save.c

index c91a577b2a6217ed16f9239fa60c47b50905f977..7a8349d0353a2a9048bfb0db3209fd25dcd728e9 100644 (file)
@@ -517,7 +517,8 @@ class XendDomainInfo:
         # HVM domain shuts itself down only if it has PV drivers
         if self.info.is_hvm():
             hvm_pvdrv = xc.hvm_get_param(self.domid, HVM_PARAM_CALLBACK_IRQ)
-            if not hvm_pvdrv:
+            hvm_s_state = xc.hvm_get_param(self.domid, HVM_PARAM_ACPI_S_STATE)
+            if not hvm_pvdrv or hvm_s_state != 0:
                 code = REVERSE_DOMAIN_SHUTDOWN_REASONS[reason]
                 log.info("HVM save:remote shutdown dom %d!", self.domid)
                 xc.domain_shutdown(self.domid, code)
index 9ece499f04260c373754192a8ce0231459eb714c..d11543e08dc6e629db26e64bcb78052a17994c88 100644 (file)
@@ -166,18 +166,12 @@ static int suspend(void)
 {
     unsigned long sx_state = 0;
 
-    /* Nothing to do if the guest is in an ACPI sleep state. */
+    /* Cannot notify guest to shut itself down if it's in ACPI sleep state. */
     if (si.flags & XCFLAGS_HVM)
         xc_get_hvm_param(si.xc_fd, si.domid,
                          HVM_PARAM_ACPI_S_STATE, &sx_state);
-    if (sx_state != 0) {
-        /* notify xend that it can do device migration */
-        printf("suspended\n");
-        fflush(stdout);
-        return 1;
-    }
 
-    if (si.suspend_evtchn >= 0)
+    if ((sx_state == 0) && (si.suspend_evtchn >= 0))
         return evtchn_suspend();
 
     return compat_suspend();