On 02/27/2018 04:32 AM, Bjoern Walk wrote: > Since QEMU 2.12 guest crash information for S390 is available in the > QEMU monitor, e.g.: > > { > "timestamp": { > "seconds": 1518004739, > "microseconds": 552563 > }, > "event": "GUEST_PANICKED", > "data": { > "action": "pause", > "info": { > "core": 0, > "psw-addr": 1102832, > "reason": "disabled-wait", > "psw-mask": 562956395872256, > "type": "s390" > } > } > } > > Let's log this information into the domain log file, e.g.: > > 2018-02-08 13:11:26.075+0000: panic s390: core='0' psw-mask='0x0002000180000000' psw-addr='0x000000000010f146' reason='disabled-wait' > > Reviewed-by: Boris Fiuczynski <fiuczy@xxxxxxxxxxxxxxxxxx> > Signed-off-by: Bjoern Walk <bwalk@xxxxxxxxxxxxxxxxxx> > --- > src/qemu/qemu_monitor.c | 19 ++++++++++++++++++- > src/qemu/qemu_monitor.h | 12 ++++++++++++ > src/qemu/qemu_monitor_json.c | 38 ++++++++++++++++++++++++++++++++++++++ > 3 files changed, 68 insertions(+), 1 deletion(-) > I see as of commit id '4ada99ade' this is now merged in qemu master for 2.12.0... Of course I need to wait for 4.2.0 to open up before pushing after fixing one nit below.. [...] > diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c > index a09e93e4..9f68d4d1 100644 > --- a/src/qemu/qemu_monitor_json.c > +++ b/src/qemu/qemu_monitor_json.c > @@ -576,6 +576,42 @@ qemuMonitorJSONGuestPanicExtractInfoHyperv(virJSONValuePtr data) > return NULL; > } > > +static qemuMonitorEventPanicInfoPtr > +qemuMonitorJSONGuestPanicExtractInfoS390(virJSONValuePtr data) > +{ > + qemuMonitorEventPanicInfoPtr ret; > + int core; > + unsigned long long psw_mask, psw_addr; > + const char *reason = NULL; > + > + if (VIR_ALLOC(ret) < 0) > + return NULL; > + > + ret->type = QEMU_MONITOR_EVENT_PANIC_INFO_TYPE_S390; > + > + if (virJSONValueObjectGetNumberInt(data, "core", &core) < 0 || > + virJSONValueObjectGetNumberUlong(data, "psw-mask", &psw_mask) < 0 || > + virJSONValueObjectGetNumberUlong(data, "psw-addr", &psw_addr) < 0 || > + !(reason = virJSONValueObjectGetString(data, "reason"))) { > + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("malformed s390 panic data")); > + goto error; > + } > + > + ret->data.s390.core = core; > + ret->data.s390.psw_mask = psw_mask; > + ret->data.s390.psw_addr = psw_addr; > + > + if (VIR_STRDUP(ret->data.s390.reason, reason) < 0) { > + virReportOOMError(); > + goto error; > + } No need for the OOMError as VIR_STRDUP will splat that for you (the _QUIET one won't). I can fix that up before pushing though. Reviewed-by: John Ferlan <jferlan@xxxxxxxxxx> John > + > + return ret; > + > + error: > + qemuMonitorEventPanicInfoFree(ret); > + return NULL; > +} > [...] -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list