summary refs log tree commit diff stats
path: root/vl.c
diff options
context:
space:
mode:
authorEric Blake <eblake@redhat.com>2017-05-15 16:41:12 -0500
committerMarkus Armbruster <armbru@redhat.com>2017-05-23 13:28:17 +0200
commit802f045a5f61b781df55e4492d896b4d20503ba7 (patch)
tree69a69ba0835eb19dfa9d4f06944ed09def8d2e20 /vl.c
parentaedbe19297907143f17b733a7ff0e0534377bed1 (diff)
downloadfocaccia-qemu-802f045a5f61b781df55e4492d896b4d20503ba7.tar.gz
focaccia-qemu-802f045a5f61b781df55e4492d896b4d20503ba7.zip
shutdown: Preserve shutdown cause through replay
With the recent addition of ShutdownCause, we want to be able to pass
a cause through any shutdown request, and then faithfully replay that
cause when later replaying the same sequence.  The easiest way is to
expand the reply event mechanism to track a series of values for
EVENT_SHUTDOWN, one corresponding to each value of ShutdownCause.

We are free to change the replay stream as needed, since there are
already no guarantees about being able to use a replay stream by
any other version of qemu than the one that generated it.

The cause is not actually fed back until the next patch changes the
signature for requesting a shutdown; a TODO marks that upcoming change.

Yes, this uses the gcc/clang extension of a ranged case label,
but this is not the first time we've used non-C99 constructs.

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
Message-Id: <20170515214114.15442-4-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.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/vl.c b/vl.c
index d90ae3f20a..909519ff83 100644
--- a/vl.c
+++ b/vl.c
@@ -1821,8 +1821,8 @@ void qemu_system_killed(int signal, pid_t pid)
 void qemu_system_shutdown_request(void)
 {
     trace_qemu_system_shutdown_request();
-    replay_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;
     qemu_notify_event();
 }