mirror of https://gitee.com/openkylin/qemu.git
QMP: add inject-nmi qmp command
inject-nmi command injects an NMI on all CPUs of guest. It is only supported for x86 guest currently, it will returns "Unsupported" error for non-x86 guest. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
parent
4c5a1e4db7
commit
a404666457
17
monitor.c
17
monitor.c
|
@ -2555,6 +2555,23 @@ static void do_inject_nmi(Monitor *mon, const QDict *qdict)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static int do_inject_nmi_all(Monitor *mon, const QDict *qdict, QObject **ret_data)
|
||||
{
|
||||
CPUState *env;
|
||||
|
||||
for (env = first_cpu; env != NULL; env = env->next_cpu) {
|
||||
cpu_interrupt(env, CPU_INTERRUPT_NMI);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
static int do_inject_nmi_all(Monitor *mon, const QDict *qdict, QObject **ret_data)
|
||||
{
|
||||
qerror_report(QERR_UNSUPPORTED);
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void do_info_status_print(Monitor *mon, const QObject *data)
|
||||
|
|
|
@ -427,6 +427,33 @@ Example:
|
|||
"filename": "/tmp/physical-mem-dump" } }
|
||||
<- { "return": {} }
|
||||
|
||||
EQMP
|
||||
|
||||
{
|
||||
.name = "inject-nmi",
|
||||
.args_type = "",
|
||||
.params = "",
|
||||
.help = "",
|
||||
.user_print = monitor_user_noop,
|
||||
.mhandler.cmd_new = do_inject_nmi_all,
|
||||
},
|
||||
|
||||
SQMP
|
||||
inject-nmi
|
||||
----------
|
||||
|
||||
Inject an NMI on guest's CPUs.
|
||||
|
||||
Arguments: None.
|
||||
|
||||
Example:
|
||||
|
||||
-> { "execute": "inject-nmi" }
|
||||
<- { "return": {} }
|
||||
|
||||
Note: inject-nmi is only supported for x86 guest currently, it will
|
||||
returns "Unsupported" error for non-x86 guest.
|
||||
|
||||
EQMP
|
||||
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue