diff --git a/hmp-commands.hx b/hmp-commands.hx index 3ad1ce7df9..b2f5cd1f47 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -477,8 +477,7 @@ ETEXI .args_type = "", .params = "", .help = "reset the system", - .user_print = monitor_user_noop, - .mhandler.cmd_new = do_system_reset, + .mhandler.cmd = hmp_system_reset, }, STEXI diff --git a/hmp.c b/hmp.c index efcb744562..24f30bc948 100644 --- a/hmp.c +++ b/hmp.c @@ -104,3 +104,8 @@ void hmp_stop(Monitor *mon, const QDict *qdict) { qmp_stop(NULL); } + +void hmp_system_reset(Monitor *mon, const QDict *qdict) +{ + qmp_system_reset(NULL); +} diff --git a/hmp.h b/hmp.h index cb21ccea94..a49a6e674b 100644 --- a/hmp.h +++ b/hmp.h @@ -25,5 +25,6 @@ void hmp_info_uuid(Monitor *mon); void hmp_info_chardev(Monitor *mon); void hmp_quit(Monitor *mon, const QDict *qdict); void hmp_stop(Monitor *mon, const QDict *qdict); +void hmp_system_reset(Monitor *mon, const QDict *qdict); #endif diff --git a/monitor.c b/monitor.c index 2a5230caa5..c22687924f 100644 --- a/monitor.c +++ b/monitor.c @@ -1929,16 +1929,6 @@ static void do_boot_set(Monitor *mon, const QDict *qdict) } } -/** - * do_system_reset(): Issue a machine reset - */ -static int do_system_reset(Monitor *mon, const QDict *qdict, - QObject **ret_data) -{ - qemu_system_reset_request(); - return 0; -} - /** * do_system_powerdown(): Issue a machine powerdown */ diff --git a/qapi-schema.json b/qapi-schema.json index cd05034953..02de4b55c6 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -248,3 +248,12 @@ # state ## { 'command': 'stop' } + +## +# @system_reset: +# +# Performs a hard reset of a guest. +# +# Since: 0.14.0 +## +{ 'command': 'system_reset' } diff --git a/qmp-commands.hx b/qmp-commands.hx index 2ccddeed2a..ea96191c12 100644 --- a/qmp-commands.hx +++ b/qmp-commands.hx @@ -223,10 +223,7 @@ EQMP { .name = "system_reset", .args_type = "", - .params = "", - .help = "reset the system", - .user_print = monitor_user_noop, - .mhandler.cmd_new = do_system_reset, + .mhandler.cmd_new = qmp_marshal_input_system_reset, }, SQMP diff --git a/qmp.c b/qmp.c index 6c464792ec..51d93832a1 100644 --- a/qmp.c +++ b/qmp.c @@ -81,3 +81,7 @@ void qmp_stop(Error **errp) vm_stop(RUN_STATE_PAUSED); } +void qmp_system_reset(Error **errp) +{ + qemu_system_reset_request(); +}