summaryrefslogtreecommitdiff
path: root/vl.c
diff options
context:
space:
mode:
authorEric Blake <eblake@redhat.com>2017-05-15 16:41:13 -0500
committerMarkus Armbruster <armbru@redhat.com>2017-05-23 13:28:17 +0200
commitcf83f140059f21d4629ae4b61d468c3baef2bb4c (patch)
tree4c39ace51dc5ca17a6a3edf9800844b08b55ab1f /vl.c
parent802f045a5f61b781df55e4492d896b4d20503ba7 (diff)
downloadqemu-cf83f140059f21d4629ae4b61d468c3baef2bb4c.tar.gz
shutdown: Add source information to SHUTDOWN and RESET
Time to wire up all the call sites that request a shutdown or reset to use the enum added in the previous patch. It would have been less churn to keep the common case with no arguments as meaning guest-triggered, and only modified the host-triggered code paths, via a wrapper function, but then we'd still have to audit that I didn't miss any host-triggered spots; changing the signature forces us to double-check that I correctly categorized all callers. Since command line options can change whether a guest reset request causes an actual reset vs. a shutdown, it's easy to also add the information to reset requests. Signed-off-by: Eric Blake <eblake@redhat.com> Acked-by: David Gibson <david@gibson.dropbear.id.au> [ppc parts] Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> [SPARC part] Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> [s390x parts] Message-Id: <20170515214114.15442-5-eblake@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
Diffstat (limited to 'vl.c')
-rw-r--r--vl.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/vl.c b/vl.c
index 909519ff83..1064fd117f 100644
--- a/vl.c
+++ b/vl.c
@@ -1724,7 +1724,7 @@ void qemu_system_guest_panicked(GuestPanicInformation *info)
if (!no_shutdown) {
qapi_event_send_guest_panicked(GUEST_PANIC_ACTION_POWEROFF,
!!info, info, &error_abort);
- qemu_system_shutdown_request();
+ qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_PANIC);
}
if (info) {
@@ -1741,13 +1741,12 @@ void qemu_system_guest_panicked(GuestPanicInformation *info)
}
}
-void qemu_system_reset_request(void)
+void qemu_system_reset_request(ShutdownCause reason)
{
if (no_reboot) {
- /* TODO - add a parameter to allow callers to specify reason */
- shutdown_requested = SHUTDOWN_CAUSE_HOST_ERROR;
+ shutdown_requested = reason;
} else {
- reset_requested = SHUTDOWN_CAUSE_HOST_ERROR;
+ reset_requested = reason;
}
cpu_stop_current();
qemu_notify_event();
@@ -1818,12 +1817,11 @@ void qemu_system_killed(int signal, pid_t pid)
qemu_notify_event();
}
-void qemu_system_shutdown_request(void)
+void qemu_system_shutdown_request(ShutdownCause reason)
{
- trace_qemu_system_shutdown_request();
- /* TODO - add a parameter to allow callers to specify reason */
- replay_shutdown_request(SHUTDOWN_CAUSE_HOST_ERROR);
- shutdown_requested = SHUTDOWN_CAUSE_HOST_ERROR;
+ trace_qemu_system_shutdown_request(reason);
+ replay_shutdown_request(reason);
+ shutdown_requested = reason;
qemu_notify_event();
}