Commit 3a449690 authored by Wenchao Xia's avatar Wenchao Xia Committed by Luiz Capitulino
Browse files

qapi event: convert GUEST_PANICKED



'monitor.h' is still included in target-s390x/kvm.c, since I have
no good way to verify whether other code need it on my x86 host.

Signed-off-by: default avatarWenchao Xia <wenchaoqemu@gmail.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Signed-off-by: default avatarLuiz Capitulino <lcapitulino@redhat.com>
parent aef9d311
Loading
Loading
Loading
Loading
+0 −14
Original line number Diff line number Diff line
                   QEMU Machine Protocol Events
                   ============================

GUEST_PANICKED
--------------

Emitted when guest OS panic is detected.

Data:

- "action": Action that has been taken (json-string, currently always "pause").

Example:

{ "event": "GUEST_PANICKED",
     "data": { "action": "pause" } }

QUORUM_FAILURE
--------------

+2 −11
Original line number Diff line number Diff line
@@ -14,12 +14,12 @@

#include "qapi/qmp/qobject.h"
#include "qapi/qmp/qjson.h"
#include "monitor/monitor.h"
#include "sysemu/sysemu.h"
#include "qemu/log.h"

#include "hw/nvram/fw_cfg.h"
#include "hw/i386/pc.h"
#include "qapi-event.h"

/* The bit of supported pv event */
#define PVPANIC_F_PANICKED      0
@@ -31,15 +31,6 @@
#define ISA_PVPANIC_DEVICE(obj)    \
    OBJECT_CHECK(PVPanicState, (obj), TYPE_ISA_PVPANIC_DEVICE)

static void panicked_mon_event(const char *action)
{
    QObject *data;

    data = qobject_from_jsonf("{ 'action': %s }", action);
    monitor_protocol_event(QEVENT_GUEST_PANICKED, data);
    qobject_decref(data);
}

static void handle_event(int event)
{
    static bool logged;
@@ -50,7 +41,7 @@ static void handle_event(int event)
    }

    if (event & PVPANIC_PANICKED) {
        panicked_mon_event("pause");
        qapi_event_send_guest_panicked(GUEST_PANIC_ACTION_PAUSE, &error_abort);
        vm_stop(RUN_STATE_GUEST_PANICKED);
        return;
    }
+12 −0
Original line number Diff line number Diff line
@@ -266,3 +266,15 @@
##
{ 'event': 'BALLOON_CHANGE',
  'data': { 'actual': 'int' } }

##
# @GUEST_PANICKED
#
# Emitted when guest OS panic is detected
#
# @action: action that has been taken, currently always "pause"
#
# Since: 1.5
##
{ 'event': 'GUEST_PANICKED',
  'data': { 'action': 'GuestPanicAction' } }
+12 −0
Original line number Diff line number Diff line
@@ -3385,4 +3385,16 @@
{ 'enum': 'IoOperationType',
  'data': [ 'read', 'write' ] }

##
# @GuestPanicAction
#
# An enumeration of the actions taken when guest OS panic is detected
#
# @pause: system pauses
#
# Since: 2.1
##
{ 'enum': 'GuestPanicAction',
  'data': [ 'pause' ] }

{ 'include': 'qapi-event.json' }
+3 −6
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@
#include "monitor/monitor.h"
#include "exec/gdbstub.h"
#include "trace.h"
#include "qapi-event.h"

/* #define DEBUG_KVM */

@@ -1029,12 +1030,8 @@ static bool is_special_wait_psw(CPUState *cs)

static void guest_panicked(void)
{
    QObject *data;

    data = qobject_from_jsonf("{ 'action': %s }", "pause");
    monitor_protocol_event(QEVENT_GUEST_PANICKED, data);
    qobject_decref(data);

    qapi_event_send_guest_panicked(GUEST_PANIC_ACTION_PAUSE,
                                   &error_abort);
    vm_stop(RUN_STATE_GUEST_PANICKED);
}