From nobody Sun Feb 8 23:05:37 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1490082436388482.9799134478026; Tue, 21 Mar 2017 00:47:16 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8131F6AACA; Tue, 21 Mar 2017 07:47:15 +0000 (UTC) Received: from colo-mx.corp.redhat.com (unknown [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 54835C0A2C; Tue, 21 Mar 2017 07:47:15 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 058524E9BE; Tue, 21 Mar 2017 07:47:15 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v2L7l0qr016415 for ; Tue, 21 Mar 2017 03:47:00 -0400 Received: by smtp.corp.redhat.com (Postfix) id 482431713A; Tue, 21 Mar 2017 07:47:00 +0000 (UTC) Received: from angien.brq.redhat.com (dhcp129-47.brq.redhat.com [10.34.129.47]) by smtp.corp.redhat.com (Postfix) with ESMTP id 700D47FE38; Tue, 21 Mar 2017 07:46:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 8131F6AACA Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 8131F6AACA From: Peter Krempa To: libvir-list@redhat.com Date: Tue, 21 Mar 2017 08:47:50 +0100 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: Peter Krempa Subject: [libvirt] [PATCH 4/4] qemu: Log additional data from hyperv crash notifier X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 21 Mar 2017 07:47:16 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" The hyperv panic notifier reports additional data in form of 5 registers that are reported in the crash event from qemu. Log them into the VM log file and report them as a warning so that admins can see the cause of crash of their windows VMs. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=3D1426176 --- src/qemu/qemu_driver.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++= ++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index ab7c01b23..c558e0991 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -3971,10 +3971,56 @@ doCoreDumpToAutoDumpPath(virQEMUDriverPtr driver, return ret; } + +static char * +qemuProcessGuestPanicEventInfoFormatData(qemuMonitorEventPanicInfoPtr info) +{ + char *ret =3D NULL; + + switch (info->type) { + case QEMU_MONITOR_EVENT_PANIC_INFO_TYPE_HYPERV: + ignore_value(virAsprintf(&ret, "hyper-v: arg1=3D'0x%llx', arg2=3D'= 0x%llx', " + "arg3=3D'0x%llx', arg4=3D'0x%llx', " + "arg5=3D'0x%llx'", + info->data.hyperv.arg1, + info->data.hyperv.arg2, + info->data.hyperv.arg3, + info->data.hyperv.arg4, + info->data.hyperv.arg5)); + break; + + case QEMU_MONITOR_EVENT_PANIC_INFO_TYPE_NONE: + case QEMU_MONITOR_EVENT_PANIC_INFO_TYPE_LAST: + break; + } + + return ret; +} + + +static void +qemuProcessGuestPanicEventInfo(virQEMUDriverPtr driver, + virDomainObjPtr vm, + qemuMonitorEventPanicInfoPtr info) +{ + char *msg =3D qemuProcessGuestPanicEventInfoFormatData(info); + char *timestamp =3D virTimeStringNow(); + + if (msg && timestamp) { + qemuDomainLogAppendMessage(driver, vm, "%s: panic %s\n", timestamp= , msg); + VIR_WARN("domain '%s' panic data: %s", vm->def->name, msg); + } + + VIR_FREE(timestamp); + VIR_FREE(msg); +} + + static void processGuestPanicEvent(virQEMUDriverPtr driver, virDomainObjPtr vm, - int action) + int action, + qemuMonitorEventPanicInfoPtr info) { qemuDomainObjPrivatePtr priv =3D vm->privateData; virObjectEventPtr event =3D NULL; @@ -3990,6 +4036,9 @@ processGuestPanicEvent(virQEMUDriverPtr driver, goto endjob; } + if (info) + qemuProcessGuestPanicEventInfo(driver, vm, info); + virDomainObjSetState(vm, VIR_DOMAIN_CRASHED, VIR_DOMAIN_CRASHED_PANICK= ED); event =3D virDomainEventLifecycleNewFromObj(vm, @@ -4567,7 +4616,8 @@ static void qemuProcessEventHandler(void *data, void = *opaque) processWatchdogEvent(driver, vm, processEvent->action); break; case QEMU_PROCESS_EVENT_GUESTPANIC: - processGuestPanicEvent(driver, vm, processEvent->action); + processGuestPanicEvent(driver, vm, processEvent->action, + processEvent->data); break; case QEMU_PROCESS_EVENT_DEVICE_DELETED: processDeviceDeletedEvent(driver, vm, processEvent->data); --=20 2.12.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list