Commit e8ed97a6 authored by Anton Nefedov's avatar Anton Nefedov Committed by Paolo Bonzini
Browse files

qapi: flatten GuestPanicInformation union



Signed-off-by: default avatarAnton Nefedov <anton.nefedov@virtuozzo.com>
Signed-off-by: default avatarDenis V. Lunev <den@openvz.org>
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Eric Blake <eblake@redhat.com>
Message-Id: <1487614915-18710-3-git-send-email-den@openvz.org>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 025533f6
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -5914,6 +5914,16 @@
{ 'enum': 'GuestPanicAction',
  'data': [ 'pause', 'poweroff' ] }

##
# @GuestPanicInformationType:
#
# An enumeration of the guest panic information types
#
# Since: 2.9
##
{ 'enum': 'GuestPanicInformationType',
  'data': [ 'hyper-v'] }

##
# @GuestPanicInformation:
#
@@ -5922,6 +5932,8 @@
# Since: 2.9
##
{'union': 'GuestPanicInformation',
 'base': {'type': 'GuestPanicInformationType'},
 'discriminator': 'type',
 'data': { 'hyper-v': 'GuestPanicInformationHyperV' } }

##
+6 −9
Original line number Diff line number Diff line
@@ -3778,19 +3778,16 @@ static GuestPanicInformation *x86_cpu_get_crash_info(CPUState *cs)
    GuestPanicInformation *panic_info = NULL;

    if (env->features[FEAT_HYPERV_EDX] & HV_X64_GUEST_CRASH_MSR_AVAILABLE) {
        GuestPanicInformationHyperV *panic_info_hv =
            g_malloc0(sizeof(GuestPanicInformationHyperV));
        panic_info = g_malloc0(sizeof(GuestPanicInformation));

        panic_info->type = GUEST_PANIC_INFORMATION_KIND_HYPER_V;
        panic_info->u.hyper_v.data = panic_info_hv;
        panic_info->type = GUEST_PANIC_INFORMATION_TYPE_HYPER_V;

        assert(HV_X64_MSR_CRASH_PARAMS >= 5);
        panic_info_hv->arg1 = env->msr_hv_crash_params[0];
        panic_info_hv->arg2 = env->msr_hv_crash_params[1];
        panic_info_hv->arg3 = env->msr_hv_crash_params[2];
        panic_info_hv->arg4 = env->msr_hv_crash_params[3];
        panic_info_hv->arg5 = env->msr_hv_crash_params[4];
        panic_info->u.hyper_v.arg1 = env->msr_hv_crash_params[0];
        panic_info->u.hyper_v.arg2 = env->msr_hv_crash_params[1];
        panic_info->u.hyper_v.arg3 = env->msr_hv_crash_params[2];
        panic_info->u.hyper_v.arg4 = env->msr_hv_crash_params[3];
        panic_info->u.hyper_v.arg5 = env->msr_hv_crash_params[4];
    }

    return panic_info;
+6 −6
Original line number Diff line number Diff line
@@ -1717,14 +1717,14 @@ void qemu_system_guest_panicked(GuestPanicInformation *info)
    }

    if (info) {
        if (info->type == GUEST_PANIC_INFORMATION_KIND_HYPER_V) {
        if (info->type == GUEST_PANIC_INFORMATION_TYPE_HYPER_V) {
            qemu_log_mask(LOG_GUEST_ERROR, "HV crash parameters: (%#"PRIx64
                          " %#"PRIx64" %#"PRIx64" %#"PRIx64" %#"PRIx64")\n",
                          info->u.hyper_v.data->arg1,
                          info->u.hyper_v.data->arg2,
                          info->u.hyper_v.data->arg3,
                          info->u.hyper_v.data->arg4,
                          info->u.hyper_v.data->arg5);
                          info->u.hyper_v.arg1,
                          info->u.hyper_v.arg2,
                          info->u.hyper_v.arg3,
                          info->u.hyper_v.arg4,
                          info->u.hyper_v.arg5);
        }
        qapi_free_GuestPanicInformation(info);
    }