diff options
-rw-r--r-- | tools/python/xen/xend/XendDomainInfo.py | 3 | ||||
-rw-r--r-- | tools/xcutils/xc_save.c | 10 |
2 files changed, 4 insertions, 9 deletions
diff --git a/tools/python/xen/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py index c91a577b2a..7a8349d035 100644 --- a/tools/python/xen/xend/XendDomainInfo.py +++ b/tools/python/xen/xend/XendDomainInfo.py @@ -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) diff --git a/tools/xcutils/xc_save.c b/tools/xcutils/xc_save.c index 9ece499f04..d11543e08d 100644 --- a/tools/xcutils/xc_save.c +++ b/tools/xcutils/xc_save.c @@ -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(); |