[libvirt] [PATCH v2 1/2] qemu: log the crash information for S390

John Ferlan jferlan at redhat.com
Thu Mar 1 19:22:24 UTC 2018



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 at linux.vnet.ibm.com>
> Signed-off-by: Bjoern Walk <bwalk at linux.vnet.ibm.com>
> ---
>  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 at redhat.com>

John

> +
> +    return ret;
> +
> + error:
> +    qemuMonitorEventPanicInfoFree(ret);
> +    return NULL;
> +}
>  

[...]





More information about the libvir-list mailing list