mirror of https://gitee.com/openkylin/qemu.git
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: Wenchao Xia <wenchaoqemu@gmail.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
parent
aef9d3115f
commit
3a44969037
|
@ -1,20 +1,6 @@
|
|||
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
|
||||
--------------
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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' } }
|
||||
|
|
|
@ -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' }
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue