Original Xbox Emulator for Windows, macOS, and Linux (Active Development)
Go to file
Alexander Graf 8118f0950f migration: Append JSON description of migration stream
One of the annoyances of the current migration format is the fact that
it's not self-describing. In fact, it's not properly describing at all.
Some code randomly scattered throughout QEMU elaborates roughly how to
read and write a stream of bytes.

We discussed an idea during KVM Forum 2013 to add a JSON description of
the migration protocol itself to the migration stream. This patch
adds a section after the VM_END migration end marker that contains
description data on what the device sections of the stream are composed of.

This approach is backwards compatible with any QEMU version reading the
stream, because QEMU just stops reading after the VM_END marker and ignores
any data following it.

With an additional external program this allows us to decipher the
contents of any migration stream and hopefully make migration bugs easier
to track down.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Amit Shah <amit.shah@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
2015-02-05 17:16:14 +01:00
audio audio: Don't free hw resources until after hw backend is stopped 2014-12-22 23:12:25 +00:00
backends Drop superfluous conditionals around g_strdup() 2014-12-10 11:30:55 +03:00
block block: vhdx - force FileOffsetMB field to '0' for certain block states 2015-01-23 12:41:32 -05:00
bsd-user bsd-user/elfload.c: Don't use ldl() or ldq_raw() 2015-01-20 15:19:33 +00:00
default-configs hw: misc, add educational driver 2015-01-26 12:26:55 +01:00
disas disas/arm-a64.cc: Tell libvixl correct code addresses 2015-02-05 13:37:25 +00:00
docs rcu: add call_rcu 2015-02-02 16:55:10 +01:00
dtc@bc895d6d09 dtc: add submodule 2013-04-18 13:50:53 +02:00
fpu softfloat: Clarify license status 2015-01-29 16:45:45 +00:00
fsdev virtfs-proxy-helper: fix call to accept 2014-04-28 08:55:32 +04:00
gdb-xml s390x/gdb: add the feature xml files for s390x 2014-09-01 09:45:19 +02:00
hw migration: Append JSON description of migration stream 2015-02-05 17:16:14 +01:00
include migration: Append JSON description of migration stream 2015-02-05 17:16:14 +01:00
libcacard libcacard: fix resource leak 2014-11-14 12:15:40 +01:00
libdecnumber libdecnumber: Fix warnings from smatch (missing static, boolean operations) 2014-08-24 13:21:06 +04:00
linux-headers linux-headers: update to 3.18-rc5 2014-11-18 11:24:31 +00:00
linux-user linux-user: support target-to-host SCM_CREDENTIALS 2015-01-27 22:33:57 +02:00
migration migration: Append JSON description of migration stream 2015-02-05 17:16:14 +01:00
net net: Use g_new() & friends where that makes obvious sense 2014-12-19 13:17:02 +00:00
pc-bios pc-bios/s390-ccw: update binary 2015-02-03 13:42:40 +01:00
pixman@87eea99e44 pixman: update internal copy to pixman-0.32.6 2014-09-15 08:14:19 +02:00
po po: fix conflict with %.mo rule in rules.mak 2014-09-26 13:35:08 +02:00
qapi qmp: Eliminate silly QERR_COMMAND_NOT_FOUND macro 2015-01-29 10:02:18 +01:00
qga qga: fix false negative argument passing 2014-11-17 11:41:25 +01:00
qobject qjson: Drop trailing space for pretty formatting 2014-12-10 10:25:30 +01:00
qom cpu: initialize cpu->exception_index on reset 2014-12-20 20:38:07 +00:00
roms pseries: Update SLOF firmware image to 20141202 2015-01-07 16:16:27 +01:00
scripts vmstate-static-checker: update whitelist 2015-02-05 17:16:14 +01:00
slirp slirp: udp: fix NULL pointer dereference because of uninitialized socket 2014-09-23 19:15:05 +01:00
stubs block: Code motion to get rid of stubs/blockdev.c 2014-10-20 13:41:26 +02:00
sysconfigs/target Eliminate cpus-x86_64.conf file 2012-09-21 15:12:58 +02:00
target-alpha exec.c: Drop TARGET_HAS_ICE define and checks 2015-01-20 15:19:32 +00:00
target-arm target-arm: fix for exponent comparison in recpe_f64 2015-02-05 13:37:25 +00:00
target-cris exec.c: Drop TARGET_HAS_ICE define and checks 2015-01-20 15:19:32 +00:00
target-i386 target-i386: Disable HLE and RTM on Haswell & Broadwell 2015-01-26 12:27:05 +01:00
target-lm32 exec.c: Drop TARGET_HAS_ICE define and checks 2015-01-20 15:19:32 +00:00
target-m68k exec.c: Drop TARGET_HAS_ICE define and checks 2015-01-20 15:19:32 +00:00
target-microblaze exec.c: Drop TARGET_HAS_ICE define and checks 2015-01-20 15:19:32 +00:00
target-mips target-mips: Don't use _raw load/store accessors 2015-01-20 15:19:33 +00:00
target-moxie exec.c: Drop TARGET_HAS_ICE define and checks 2015-01-20 15:19:32 +00:00
target-openrisc target-openrisc: bugfix for dec_sys to decode instructions correctly 2015-01-15 10:44:13 +03:00
target-ppc exec.c: Drop TARGET_HAS_ICE define and checks 2015-01-20 15:19:32 +00:00
target-s390x s390 translator bug fixes 2015-02-03 21:37:16 +00:00
target-sh4 exec.c: Drop TARGET_HAS_ICE define and checks 2015-01-20 15:19:32 +00:00
target-sparc target-sparc: Mark gen_load_trap_state_at_tl() as !CONFIG_USER_ONLY 2015-01-21 16:18:01 +00:00
target-tricore target-tricore: Add instructions of RRR opcode format 2015-01-27 11:48:02 +00:00
target-unicore32 gen-icount: check cflags instead of use_icount global 2015-01-03 09:22:12 +01:00
target-xtensa exec.c: Drop TARGET_HAS_ICE define and checks 2015-01-20 15:19:32 +00:00
tcg tcg: add separate monitor command to dump opcode counters 2014-12-17 05:49:32 +03:00
tests migration: Append JSON description of migration stream 2015-02-05 17:16:14 +01:00
trace trace: [hmp] Reimplement "trace-event" and "info trace-events" using QMP 2014-09-26 09:34:38 +01:00
ui spice: fix coverity defect, add unix address support 2015-01-22 13:56:11 +00:00
util rcu: add call_rcu 2015-02-02 16:55:10 +01:00
.exrc qemu: add .exrc 2012-09-07 09:02:44 +03:00
.gitignore .gitignore: Ignore generated "common.env" 2015-01-13 13:43:28 +00:00
.gitmodules PPC: Add u-boot firmware for e500 2014-06-16 13:24:35 +02:00
.mailmap Update mailmap 2013-09-05 09:40:31 -05:00
.travis.yml .travis.yml: Add "--enable-modules" 2015-01-26 12:27:05 +01:00
accel.c accel: Create accel object when initializing machine 2014-10-09 15:36:14 +02:00
aio-posix.c block: Use g_new0() for a bit of extra type checking 2014-12-10 10:31:21 +01:00
aio-win32.c block: Use g_new0() for a bit of extra type checking 2014-12-10 10:31:21 +01:00
arch_init.c xbzrle: optimize XBZRLE to decrease the cache misses 2015-01-15 17:49:43 +05:30
async.c block: replace g_new0 with g_new for bottom half allocation. 2015-01-13 11:47:56 +00:00
balloon.c balloon: Eliminate silly QERR_ macros 2015-01-29 10:06:02 +01:00
block.c block: remove unused variable in bdrv_commit 2015-01-23 18:17:06 +01:00
blockdev-nbd.c nbd: Change external interface to BlockBackend 2014-12-10 10:31:12 +01:00
blockdev.c block: Split BLOCK_OP_TYPE_COMMIT to BLOCK_OP_TYPE_COMMIT_{SOURCE, TARGET} 2015-01-13 13:43:29 +00:00
blockjob.c block: declare blockjobs and dataplane friends! 2014-11-03 11:41:49 +00:00
bootdevice.c bootdevice: add Error **errp argument for QEMUBootSetHandler 2014-12-22 14:39:21 +08:00
bt-host.c sysemu: avoid proliferation of include/ subdirectories 2013-04-15 18:19:25 +02:00
bt-vhci.c sysemu: avoid proliferation of include/ subdirectories 2013-04-15 18:19:25 +02:00
Changelog Use qemu-project.org domain name 2013-10-11 09:34:56 -07:00
CODING_STYLE CODING_STYLE: Section about conditional statement 2014-08-15 18:54:06 +04:00
configure sparse: Fix build with sparse on .S files 2015-01-26 12:27:05 +01:00
COPYING
COPYING.LIB
coroutine-gthread.c glib-compat.h: add new thread API emulation on top of pre-2.31 API 2014-06-10 07:44:01 +02:00
coroutine-sigaltstack.c coroutine-sigaltstack: Change jmp_buf to sigjmp_buf 2014-11-11 11:07:55 +03:00
coroutine-ucontext.c coroutine-ucontext: use __thread 2015-01-13 13:43:28 +00:00
coroutine-win32.c coroutine-win32.c: Add noinline attribute to work around gcc bug 2014-06-26 14:08:14 +01:00
cpu-exec.c cpu-exec: simplify init_delay_params 2015-02-02 16:55:11 +01:00
cpus.c cpu-exec: simplify init_delay_params 2015-02-02 16:55:11 +01:00
cputlb.c qemu-log: add log category for MMU info 2014-12-16 18:43:19 +00:00
device_tree.c device-tree: fix memory leak 2015-01-07 16:16:26 +01:00
device-hotplug.c blockdev: Eliminate drive_del() 2014-10-20 13:41:26 +02:00
disas.c monitor: QEMU Monitor Instruction Disassembly Incorrect for PowerPC LE Mode 2014-06-16 13:24:26 +02:00
dma-helpers.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
dump.c dump: Fix dump-guest-memory termination and use-after-close 2014-11-02 10:04:34 +03:00
exec.c exec: fix madvise of NULL pointer 2015-01-26 12:27:05 +01:00
gdbstub.c Add the "-semihosting-config" option. 2014-12-11 12:07:48 +00:00
HACKING HACKING: Document vaddr type usage 2013-07-23 02:41:31 +02:00
hmp-commands.hx hmp: Remove "info pcmcia" 2014-10-24 12:19:11 +01:00
hmp.c hmp: Compile hmp_info_spice() only with CONFIG_SPICE 2015-01-29 10:01:45 +01:00
hmp.h Add HMP command "info memory-devices" 2014-09-26 13:37:06 -04:00
iohandler.c iohandler.c: Properly initialize sigaction struct 2014-05-24 00:07:29 +04:00
ioport.c memory: convert memory_region_destroy to object_unparent 2014-08-18 12:06:20 +02:00
iothread.c async: aio_context_new(): Handle event_notifier_init failure 2014-09-22 11:39:48 +01:00
kvm-all.c kvm: extend kvm_irqchip_add_msi_route to work on s390 2015-01-12 10:14:04 +01:00
kvm-stub.c pc: kvm: check if KVM has free memory slots to avoid abort() 2014-11-23 12:11:29 +02:00
LICENSE vfio: move hw/misc/vfio.c to hw/vfio/pci.c Move vfio.h into include/hw/vfio 2014-12-19 15:24:06 -07:00
main-loop.c Revert "main-loop.c: Handle SIGINT, SIGHUP and SIGTERM synchronously" 2014-10-27 15:05:09 +00:00
MAINTAINERS hw: misc, add educational driver 2015-01-26 12:26:55 +01:00
Makefile Makefile: Remove config.status and common.env during 'make distclean' 2015-01-15 10:44:13 +03:00
Makefile.objs QJSON: Add JSON writer 2015-02-05 17:16:14 +01:00
Makefile.target bootdevice: move bootdevice related code to new file bootdevice.c 2014-10-15 09:49:48 +02:00
memory_mapping.c Add skip_dump flag to ignore memory region during dump 2014-10-31 11:29:01 +01:00
memory.c memory: avoid ref/unref in memory_region_find 2015-02-02 16:55:10 +01:00
module-common.c module: implement module loading 2014-02-20 13:14:18 +01:00
monitor.c qmp: Eliminate silly QERR_COMMAND_NOT_FOUND macro 2015-01-29 10:02:18 +01:00
nbd.c nbd: Use BlockBackend internally 2014-12-10 10:31:12 +01:00
numa.c numa: make 'info numa' take into account hotplugged memory 2014-11-11 08:50:58 +03:00
os-posix.c os-posix: reorder parent notification for -daemonize 2014-11-02 10:04:34 +03:00
os-win32.c pidfile: stop making pidfile error a special case 2014-11-02 10:04:34 +03:00
page_cache.c xbzrle: rebuild the cache_is_cached function 2015-01-15 17:49:43 +05:30
qapi-schema.json input: misc fixes. 2015-01-22 17:41:59 +00:00
qdev-monitor.c qdev: Use qdev_get_device_class() for -device <type>,help 2014-11-04 17:50:00 +01:00
qdict-test-data.txt
qemu-bridge-helper.c qemu-bridge-helper: Fix fd leak in main() 2014-06-27 10:39:10 +02:00
qemu-char.c Do not hang on full PTY 2015-01-15 10:44:13 +03:00
qemu-coroutine-io.c qemu-coroutine-io: fix for Win32 2014-08-29 10:46:58 +01:00
qemu-coroutine-lock.c coroutine: remove qemu_co_queue_wait_insert_head 2013-12-02 17:11:49 +01:00
qemu-coroutine-sleep.c coroutine: Drop co_sleep_ns 2014-08-29 10:46:58 +01:00
qemu-coroutine.c coroutine: try harder not to delete coroutines 2015-01-13 13:43:29 +00:00
qemu-doc.texi block: vhdx - change .vhdx_create default block state to ZERO 2014-12-12 15:42:49 +00:00
qemu-img-cmds.hx qemu-img: Add progress output for amend 2014-11-03 11:41:48 +00:00
qemu-img.c block: update string sizes for filename,backing_file,exact_filename 2015-01-23 18:17:06 +01:00
qemu-img.texi qemu-img: Add progress output for amend 2014-11-03 11:41:48 +00:00
qemu-io-cmds.c qemu-io: Add sigraise command 2014-12-12 15:48:26 +00:00
qemu-io.c qemu-io: Allow explicitly specifying format 2014-12-10 10:31:12 +01:00
qemu-log.c qemu-log: add log category for MMU info 2014-12-16 18:43:19 +00:00
qemu-nbd.c qemu-nbd: Use BlockBackend where reasonable 2014-12-10 10:31:12 +01:00
qemu-nbd.texi nbd: Miscellaneous typo fixes. 2014-05-24 00:07:29 +04:00
qemu-options-wrapper.h vl.c: In qemu -h output, only print options for the arch we are running as 2011-12-19 10:27:33 -06:00
qemu-options.h
qemu-options.hx spice: add unix address support 2015-01-22 11:18:41 +01:00
qemu-seccomp.c seccomp: add mlockall to whitelist 2015-01-23 14:07:08 +01:00
qemu-tech.texi qemu-tech.texi: update implemented xtensa features list 2012-11-29 13:00:52 -06:00
qemu-timer.c qemu-timer.c: Trim list of included headers 2015-01-26 18:15:54 +00:00
qemu.nsi nsis: Improved support for parallel installation of 32 and 64 bit code 2013-11-07 07:02:44 +01:00
qemu.sasl sasl: Avoid 'Could not find keytab file' in syslog 2014-03-15 13:54:18 +04:00
qjson.c QJSON: Add JSON writer 2015-02-05 17:16:14 +01:00
qmp-commands.hx monitor: add query-vnc-servers command 2015-01-22 11:18:47 +01:00
qmp.c qmp: Clean up qmp_query_spice() #ifndef !CONFIG_SPICE dummy 2015-01-29 10:01:54 +01:00
qtest.c qtest: fix qtest log fd should be initialized before qtest chardev 2014-10-23 16:41:27 +02:00
README Use qemu-project.org domain name 2013-10-11 09:34:56 -07:00
rules.mak rules.mak: Fix module build 2015-01-14 10:38:57 +01:00
savevm.c migration: Append JSON description of migration stream 2015-02-05 17:16:14 +01:00
softmmu_template.h softmmu: provide softmmu access type enum 2014-11-03 11:48:34 +00:00
spice-qemu-char.c spice: remove spice-experimental.h include 2014-12-16 14:15:29 +01:00
tcg-runtime.c tcg: Push tcg-runtime routines into exec/helper-* 2014-05-28 09:33:54 -07:00
tci.c Merge remote-tracking branch 'remotes/bonzini/softmmu-smap' into staging 2014-06-05 21:06:14 +01:00
thread-pool.c block: Rename BlockDriverCompletionFunc to BlockCompletionFunc 2014-10-20 13:41:27 +02:00
thunk.c exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00
tpm.c Use error_is_set() only when necessary 2014-02-17 11:57:23 -05:00
trace-events Migration: Add lots of trace events 2015-02-05 17:16:14 +01:00
translate-all.c exec.c: Drop TARGET_HAS_ICE define and checks 2015-01-20 15:19:32 +00:00
translate-all.h translate-all: Change tb_check_watchpoint() argument to CPUState 2014-03-13 19:20:48 +01:00
user-exec.c softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
VERSION Open 2.3 development tree 2014-12-09 21:48:34 +00:00
version.rc Use qemu-project.org domain name 2013-10-11 09:34:56 -07:00
vl.c vnc: switch to QemuOpts, allow multiple servers 2015-01-22 11:18:46 +01:00
xen-common-stub.c accel: Move Xen registration code to xen-common.c 2014-10-04 08:59:15 +02:00
xen-common.c accel: Pass MachineState object to accel init functions 2014-10-09 12:57:10 +02:00
xen-hvm-stub.c xen-hvm: Fix xen_hvm_init() to adjust pc memory layout 2014-06-23 17:50:04 +03:00
xen-hvm.c Xen: Use the ioreq-server API when available 2015-01-20 14:24:10 +00:00
xen-mapcache.c xen: add a lock for the mapcache 2015-01-20 14:24:17 +00:00

Read the documentation in qemu-doc.html or on http://wiki.qemu-project.org

- QEMU team