From: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, mst@redhat.com, jasowang@redhat.com,
quintela@redhat.com, agraf@suse.de, pbonzini@redhat.com,
david@gibson.dropbear.id.au
Subject: [Qemu-devel] [PATCH v2 04/10] replay: save/load initial state
Date: Thu, 15 Sep 2016 12:01:05 +0300 [thread overview]
Message-ID: <20160915090105.6440.95131.stgit@PASHA-ISP> (raw)
In-Reply-To: <20160915090042.6440.22516.stgit@PASHA-ISP>
This patch implements initial vmstate creation or loading at the start
of record/replay. It is needed for rewinding the execution in the replay mode.
Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
---
include/sysemu/replay.h | 6 ++++++
replay/Makefile.objs | 1 +
replay/replay-snapshot.c | 31 +++++++++++++++++++++++++++++++
vl.c | 2 ++
4 files changed, 40 insertions(+)
create mode 100644 replay/replay-snapshot.c
diff --git a/include/sysemu/replay.h b/include/sysemu/replay.h
index a408633..aa378ce 100644
--- a/include/sysemu/replay.h
+++ b/include/sysemu/replay.h
@@ -145,4 +145,10 @@ void replay_unregister_net(ReplayNetState *rns);
void replay_net_packet_event(ReplayNetState *rns, unsigned flags,
const struct iovec *iov, int iovcnt);
+/* VM state operations */
+
+/*! Called at the start of execution.
+ Loads or saves initial vmstate depending on execution mode. */
+void replay_vmstate_init(void);
+
#endif
diff --git a/replay/Makefile.objs b/replay/Makefile.objs
index f55a6b5..4600d74 100644
--- a/replay/Makefile.objs
+++ b/replay/Makefile.objs
@@ -5,3 +5,4 @@ common-obj-y += replay-time.o
common-obj-y += replay-input.o
common-obj-y += replay-char.o
common-obj-y += replay-net.o
+common-obj-y += replay-snapshot.o
diff --git a/replay/replay-snapshot.c b/replay/replay-snapshot.c
new file mode 100644
index 0000000..a48c6fc
--- /dev/null
+++ b/replay/replay-snapshot.c
@@ -0,0 +1,31 @@
+/*
+ * replay-snapshot.c
+ *
+ * Copyright (c) 2010-2016 Institute for System Programming
+ * of the Russian Academy of Sciences.
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ *
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/error.h"
+#include "qemu-common.h"
+#include "sysemu/replay.h"
+#include "replay-internal.h"
+#include "sysemu/sysemu.h"
+#include "monitor/monitor.h"
+#include "qapi/qmp/qstring.h"
+
+void replay_vmstate_init(void)
+{
+ if (replay_mode == REPLAY_MODE_RECORD) {
+ QDict *opts = qdict_new();
+ qdict_put(opts, "name", qstring_from_str("replay_init"));
+ hmp_savevm(cur_mon, opts);
+ QDECREF(opts);
+ } else if (replay_mode == REPLAY_MODE_PLAY) {
+ load_vmstate("replay_init");
+ }
+}
diff --git a/vl.c b/vl.c
index 1c68779..6698d88 100644
--- a/vl.c
+++ b/vl.c
@@ -4593,6 +4593,8 @@ int main(int argc, char **argv, char **envp)
if (load_vmstate(loadvm) < 0) {
autostart = 0;
}
+ } else {
+ replay_vmstate_init();
}
qdev_prop_check_globals();
next prev parent reply other threads:[~2016-09-15 9:01 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-15 9:00 [Qemu-devel] [PATCH v2 00/10] replay additions Pavel Dovgalyuk
2016-09-15 9:00 ` [Qemu-devel] [PATCH v2 01/10] record/replay: add network support Pavel Dovgalyuk
2016-09-15 9:00 ` [Qemu-devel] [PATCH v2 02/10] block: set snapshot option for block devices in blkreplay module Pavel Dovgalyuk
2016-09-15 9:25 ` Paolo Bonzini
2016-09-15 9:36 ` Paolo Bonzini
2016-09-16 7:55 ` Pavel Dovgalyuk
2016-09-16 9:28 ` Paolo Bonzini
2016-09-16 9:36 ` Pavel Dovgalyuk
2016-09-16 9:49 ` Paolo Bonzini
2016-09-15 9:01 ` [Qemu-devel] [PATCH v2 03/10] block: don't make snapshots for filters Pavel Dovgalyuk
2016-09-15 9:01 ` Pavel Dovgalyuk [this message]
2016-09-15 9:25 ` [Qemu-devel] [PATCH v2 04/10] replay: save/load initial state Paolo Bonzini
2016-09-16 7:56 ` Pavel Dovgalyuk
2016-09-16 9:29 ` Paolo Bonzini
2016-09-15 9:01 ` [Qemu-devel] [PATCH v2 05/10] replay: move internal data to the structure Pavel Dovgalyuk
2016-09-15 9:34 ` Paolo Bonzini
2016-09-15 9:01 ` [Qemu-devel] [PATCH v2 06/10] replay: vmstate for replay module Pavel Dovgalyuk
2016-09-15 9:37 ` Paolo Bonzini
2016-09-16 7:36 ` Pavel Dovgalyuk
2016-09-15 9:01 ` [Qemu-devel] [PATCH v2 07/10] replay: allow replay stopping and restarting Pavel Dovgalyuk
2016-09-15 9:38 ` Paolo Bonzini
2016-09-16 6:35 ` Pavel Dovgalyuk
2016-09-16 8:55 ` Paolo Bonzini
2016-09-15 9:01 ` [Qemu-devel] [PATCH v2 08/10] kvmvapic: fix state change handler Pavel Dovgalyuk
2016-09-15 9:01 ` [Qemu-devel] [PATCH v2 09/10] pcspk: adding vmstate for save/restore Pavel Dovgalyuk
2016-09-15 9:01 ` [Qemu-devel] [PATCH v2 10/10] integratorcp: " Pavel Dovgalyuk
2016-09-15 9:12 ` [Qemu-devel] [PATCH v2 00/10] replay additions Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160915090105.6440.95131.stgit@PASHA-ISP \
--to=pavel.dovgaluk@ispras.ru \
--cc=agraf@suse.de \
--cc=david@gibson.dropbear.id.au \
--cc=jasowang@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).