From: Dmitry Andreev Date: Sat, 23 Jan 2016 16:08:45 +0000 (+0300) Subject: qemuDomainResume: allow to resume domain with guest panicked X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=d2dabff3a03862c9560e79957dd8f04443193b4f;p=libvirt.git qemuDomainResume: allow to resume domain with guest panicked In case of guest panicked, preserved crashed domain has stopped CPUs. It's not possible to use tools like WinDbg for the problem investigation until we start CPUs back. --- diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 14f47543e9..46138f216e 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -1955,6 +1955,7 @@ static int qemuDomainResume(virDomainPtr dom) int ret = -1; virObjectEventPtr event = NULL; int state; + int reason; virQEMUDriverConfigPtr cfg = NULL; if (!(vm = qemuDomObjFromDomain(dom))) @@ -1974,12 +1975,14 @@ static int qemuDomainResume(virDomainPtr dom) goto endjob; } - state = virDomainObjGetState(vm, NULL); + state = virDomainObjGetState(vm, &reason); if (state == VIR_DOMAIN_PMSUSPENDED) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("domain is pmsuspended")); goto endjob; - } else if (state == VIR_DOMAIN_PAUSED) { + } else if ((state == VIR_DOMAIN_CRASHED && + reason == VIR_DOMAIN_CRASHED_PANICKED) || + state == VIR_DOMAIN_PAUSED) { if (qemuProcessStartCPUs(driver, vm, dom->conn, VIR_DOMAIN_RUNNING_UNPAUSED, QEMU_ASYNC_JOB_NONE) < 0) {