summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hmp-commands.hx3
-rw-r--r--hmp.c5
-rw-r--r--hmp.h1
-rw-r--r--monitor.c10
-rw-r--r--qapi-schema.json9
-rw-r--r--qmp-commands.hx5
-rw-r--r--qmp.c4
7 files changed, 21 insertions, 16 deletions
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
@@ -1930,16 +1930,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
*/
static int do_system_powerdown(Monitor *mon, const QDict *qdict,
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();
+}