Original Xbox Emulator for Windows, macOS, and Linux (Active Development)
Go to file
aliguori 9366f41860 Introduce v3 of savevm protocol
The current savevm/loadvm protocol has some draw backs.  It does not support
the ability to do progressive saving which means it cannot be used for live
checkpointing or migration.  The sections sizes are 32-bit integers which
means that it will not function when using more than 4GB of memory for a guest.
It attempts to seek within the output file which means it cannot be streamed.
The current protocol also is pretty lax about how it supports forward
compatibility.  If a saved section version is greater than what the restore
code support, the restore code generally treats the saved data as being in
whatever version it supports.  This means that restoring a saved VM on an older
version of QEMU will likely result in silent guest failure.

This patch introduces a new version of the savevm protocol.  It has the
following features:

 * Support for progressive save of sections (for live checkpoint/migration)
 * An asynchronous API for doing save
 * Support for interleaving multiple progressive save sections
   (for future support of memory hot-add/storage migration)
 * Fully streaming format
 * Strong section version checking

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>



git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5434 c046a42c-6fe2-441c-8c8c-71466251a162
2008-10-06 14:53:52 +00:00
audio Move wav_start_capture prototype to avoid a warning with -Wmissing-prototypes 2008-10-05 10:30:43 +00:00
darwin-user Make target_sigaltstack_used static 2008-10-05 11:09:37 +00:00
fpu Suppress gcc 4.x -Wpointer-sign (included in -Wall) warnings 2008-09-20 08:07:15 +00:00
hw Introduce v3 of savevm protocol 2008-10-06 14:53:52 +00:00
keymaps fixing keymap for Windows keys (Stefano Stabellini) 2008-09-22 19:45:36 +00:00
linux-user Make various generated structures static 2008-10-05 11:45:25 +00:00
pc-bios Update OpenBIOS images to SVN r237. 2008-09-18 19:41:28 +00:00
slirp Fix warning about variables used uninitialized 2008-10-01 19:39:40 +00:00
target-alpha target-alpha: update STATUS 2008-10-01 07:07:59 +00:00
target-arm Fix ARM NEON vdup and vtbl bugs. 2008-09-22 00:52:42 +00:00
target-cris CRIS: Improve ASID related TLB flushes. 2008-09-22 20:51:28 +00:00
target-i386 Fix crc32w decoding, fix a constant width in blendvpd. 2008-10-04 11:33:52 +00:00
target-m68k Silence some warnings about no value returned from non-void function 2008-10-05 11:47:55 +00:00
target-mips Use concet TCG instructions in the MIPS target. 2008-09-22 21:54:00 +00:00
target-ppc ppc: fix crash in ppc system single step support 2008-10-01 22:01:37 +00:00
target-sh4 Silence some warnings about no value returned from non-void function 2008-10-05 11:47:55 +00:00
target-sparc Rearrange tick functions 2008-10-03 19:04:42 +00:00
tcg Add some missing static and const qualifiers, reg_names only used if NDEBUG set 2008-10-05 09:59:14 +00:00
tests Implement SSE4.1, SSE4.2 (x86). 2008-10-04 03:27:44 +00:00
.gitignore Add gitignore file 2008-09-09 17:15:28 +00:00
a.out.h 64bit->win32 cross build fix. 2007-03-04 00:52:16 +00:00
aes.c Fix miscellaneous minor things, by Andre Przywara. 2007-12-17 03:15:52 +00:00
aes.h AES crypto support 2004-08-01 21:54:53 +00:00
aio.c Refactor AIO to allow multiple AIO implementations 2008-09-22 19:17:18 +00:00
alpha-dis.c find -type f | xargs sed -i 's/[\t ]$//g' # on most files 2007-09-16 21:08:06 +00:00
alpha.ld alpha support 2003-04-29 20:53:42 +00:00
arm-dis.c Update ARM disassembler. 2007-11-10 17:38:00 +00:00
arm-semi.c Add missing return in arm-semi, by Laurent Desnogues. 2008-07-01 16:40:04 +00:00
arm.ld Link ARM prologue closer to code segment to avoid a build failure 2008-07-10 17:21:31 +00:00
block_int.h Fix warnings that would be caused by ld flag --warn-common 2008-09-17 19:04:14 +00:00
block-bochs.c Split block API from vl.h. 2007-11-11 02:51:17 +00:00
block-cloop.c Split block API from vl.h. 2007-11-11 02:51:17 +00:00
block-cow.c Split block API from vl.h. 2007-11-11 02:51:17 +00:00
block-dmg.c Add qemu_realloc(), by Gerd Hoffmann. 2008-08-06 08:37:17 +00:00
block-nbd.c Remove unnecessary #includes from block-nbd.c 2008-08-19 19:10:38 +00:00
block-parallels.c Split block API from vl.h. 2007-11-11 02:51:17 +00:00
block-qcow2.c fix bug in block-qcow2.c:alloc_cluster_offset() (Shahar Frank) 2008-09-24 16:52:15 +00:00
block-qcow.c Remove dead-code (else-block) from block-qcow.c, by Marc Bevand. 2008-06-05 22:00:45 +00:00
block-raw-posix.c Fix warning about missing return value 2008-10-03 19:00:40 +00:00
block-raw-win32.c Refactor AIO to allow multiple AIO implementations 2008-09-22 19:17:18 +00:00
block-vmdk.c Fix warning, based on patches by Zeev Tarantov and Jindrich Makovicka 2008-09-28 20:00:14 +00:00
block-vpc.c Fix char* signedness, by Andre Przywara. 2007-12-16 03:16:05 +00:00
block-vvfat.c Fix OpenBSD linker warnings 2008-08-21 17:58:08 +00:00
block.c Add bdrv_flush_all() 2008-10-06 13:55:43 +00:00
block.h Add bdrv_flush_all() 2008-10-06 13:55:43 +00:00
bswap.h e1000: fix unaligned access 2008-03-28 22:30:48 +00:00
bt-host.c Disable bluetooth proxy compilation on win32. 2008-09-30 23:31:35 +00:00
bt-vhci.c Disable bluetooth proxy compilation on win32. 2008-09-30 23:31:35 +00:00
Changelog Update 2008-06-08 01:55:07 +00:00
check_ops.sh Fixes for s/390 host support, by Bastian Blank. 2007-11-18 21:22:10 +00:00
cocoa.m Let the USB tablet reach the far bottom and right pixels 2008-03-10 19:34:27 +00:00
compatfd.c Make compatfd fallback more robust 2008-09-27 20:58:43 +00:00
compatfd.h Fix the build on non-Linux systems 2008-09-11 14:18:56 +00:00
configure Avoid (some) ppc cross-compilation problems 2008-09-30 19:44:32 +00:00
console.c Reintroduce TEXT_CONSOLE_FIXED_SIZE and TEXT_CONSOLE for resizable vc's. 2008-09-24 03:32:33 +00:00
console.h Allow the monitor to be suspended during non-blocking op 2008-10-06 13:52:44 +00:00
COPYING distribution patches 2003-03-23 20:17:16 +00:00
COPYING.LIB update 2003-05-25 16:41:52 +00:00
cpu-all.h Add dirty tracking for live migration 2008-10-06 14:02:03 +00:00
cpu-defs.h Move interrupt_request and user_mode_only to common cpu state. 2008-07-01 20:01:19 +00:00
cpu-exec.c SH4: Privilege check for instructions 2008-09-15 08:49:15 +00:00
cris-dis.c Teach the CRIS disassembler to stay within the provided buffer. 2008-05-06 08:45:10 +00:00
curses_keys.h Make keysym tables const 2008-10-02 18:26:42 +00:00
curses.c Reintroduce TEXT_CONSOLE_FIXED_SIZE and TEXT_CONSOLE for resizable vc's. 2008-09-24 03:32:33 +00:00
cutils.c Prevent guest reusing host memory allocations. 2008-06-09 13:47:45 +00:00
d3des.c Some little fixes on QEMU 2008-09-06 16:31:30 +00:00
d3des.h Actually add d3des implementation files. 2007-08-25 02:09:50 +00:00
dis-asm.h Fix OpenBSD linker warnings 2008-08-21 17:58:08 +00:00
disas.c Fix warnings that would be generated by gcc -Wstrict-prototypes 2008-08-17 20:21:51 +00:00
disas.h monitor_disas() prototype change 2005-11-21 23:35:10 +00:00
dyngen-exec.h Preliminary OpenBSD host support (based on OpenBSD patches by Todd T. Fries) 2008-08-15 18:33:42 +00:00
dyngen.c Fix some warnings that would be generated by gcc -Wmissing-prototypes 2008-08-17 20:26:25 +00:00
elf_ops.h Add statics and missing #includes for prototypes. 2007-11-18 01:44:38 +00:00
elf.h Fix most warnings that would be caused by gcc flag -Wundef 2008-09-06 17:47:39 +00:00
exec-all.h Move offsetof to osdep.h, remove local defintions. 2008-09-16 13:36:57 +00:00
exec.c Add dirty tracking for live migration 2008-10-06 14:02:03 +00:00
gdbstub.c Move the active FPU registers into env again, and use more TCG registers 2008-09-18 11:57:27 +00:00
gdbstub.h Fix warnings that would be caused by gcc flag -Wwrite-strings 2008-09-14 06:45:34 +00:00
gen-icount.h Spelling fixes, spotted by Stuart Brady. 2008-06-30 17:22:19 +00:00
host-utils.c Code used by the linux-user targets should not use vl.h. 2007-11-05 13:01:41 +00:00
host-utils.h Fix always_inline definition for Darwin, by Andreas Faerber. 2008-06-05 22:55:54 +00:00
hostregs_helper.h Fix 64-bit host register corruption. 2007-02-04 13:37:44 +00:00
hpet.h Add a local copy of hpet.h. 2007-09-16 20:03:23 +00:00
hppa-dis.c HPPA (PA-RISC) host support 2008-04-12 20:14:54 +00:00
hppa.ld HPPA (PA-RISC) host support 2008-04-12 20:14:54 +00:00
i386-dis.c Make some i386 disassembler tables const 2008-10-02 18:29:22 +00:00
i386.ld Add TLS sections. 2008-05-31 16:21:33 +00:00
ia64.ld ia64 host support (David Mosberger) 2005-04-07 22:20:31 +00:00
keymaps.c Make keysym tables const 2008-10-02 18:26:42 +00:00
kqemu.c Fix error reporting under Win32 (CreateFile does not set errno) 2008-06-08 01:55:09 +00:00
kqemu.h kqemu API change - allow use of kqemu with 32 bit QEMU on a 64 bit host 2008-05-30 20:48:25 +00:00
LICENSE use the TCG code generator 2008-02-01 10:50:11 +00:00
loader.c Remove most uses of phys_ram_base (initial patch by Ian Jackson) 2008-05-12 17:22:13 +00:00
m68k-dis.c Fix warnings that would be caused by gcc flag -Wwrite-strings 2008-09-14 06:45:34 +00:00
m68k-semi.c Break up vl.h. 2007-11-17 17:14:51 +00:00
m68k.ld m68k host port (Richard Zidlicky) 2003-08-10 22:14:22 +00:00
MAINTAINERS Update maintainers list. 2008-08-25 22:26:03 +00:00
Makefile Fix cscope filelist by removing leading ./ 2008-10-01 21:46:58 +00:00
Makefile.target Implement a HCI passthrough to host. 2008-09-28 23:49:55 +00:00
mips-dis.c Fix most warnings that would be caused by gcc flag -Wundef 2008-09-06 17:47:39 +00:00
mips.ld Linker scripts for MIPS hosts. 2007-05-05 19:24:38 +00:00
mipsel.ld Linker scripts for MIPS hosts. 2007-05-05 19:24:38 +00:00
monitor.c Allow the monitor to be suspended during non-blocking op 2008-10-06 13:52:44 +00:00
nbd.c Use common objects for qemu-img and qemu-nbd 2008-09-15 15:51:35 +00:00
nbd.h qemu-nbd: remove useless parameter from nbd_negotiate() (Laurent Vivier) 2008-09-10 15:23:19 +00:00
net-checksum.c Add IP checksumming functions to qemu (Gerd Hoffmann) 2008-07-29 19:40:04 +00:00
net.h Add a "null" bluetooth HCI and a header file for bluetooth. 2008-09-28 23:19:47 +00:00
osdep.c Use common objects for qemu-img and qemu-nbd 2008-09-15 15:51:35 +00:00
osdep.h Move offsetof to osdep.h, remove local defintions. 2008-09-16 13:36:57 +00:00
ppc64.ld Correct version of Heikki Lindholms ppc64.ld script 2008-08-20 22:39:24 +00:00
ppc-dis.c find -type f | xargs sed -i 's/[\t ]$//g' # on most files 2007-09-16 21:08:06 +00:00
ppc.ld Update ppc.ld to work with newer binutils. 2007-04-28 19:00:30 +00:00
qemu_socket.h Use common objects for qemu-img and qemu-nbd 2008-09-15 15:51:35 +00:00
qemu-aio.h Refactor AIO to allow multiple AIO implementations 2008-09-22 19:17:18 +00:00
qemu-binfmt-conf.sh Code provision for n32/n64 mips userland emulation. Not functional yet. 2007-09-30 01:58:33 +00:00
qemu-char.h qemu-char.h: Fix IOCTL values 2008-08-22 21:25:00 +00:00
qemu-common.h Add a "null" bluetooth HCI and a header file for bluetooth. 2008-09-28 23:19:47 +00:00
qemu-doc.texi Update Sparc docs, add -cpu flag 2008-10-04 20:43:39 +00:00
qemu-img.c Fix OpenBSD linker warnings in qemu-img 2008-08-24 10:30:33 +00:00
qemu-img.texi New qemu-img convert -B option, by Marc Bevand. 2008-06-05 21:53:49 +00:00
qemu-lock.h Multithreaded locking fixes. 2008-06-07 20:50:51 +00:00
qemu-log.h Fix some warnings that would be generated by gcc -Wredundant-decls 2008-08-30 09:51:20 +00:00
qemu-malloc.c Fix error introduced by r5044 2008-08-25 20:03:28 +00:00
qemu-nbd.c qemu-nbd: remove useless parameter from nbd_negotiate() (Laurent Vivier) 2008-09-10 15:23:19 +00:00
qemu-nbd.texi Fix formatting of documentation (Stefan Weil) 2008-09-22 20:41:57 +00:00
qemu-tech.texi Spelling fixes, by Stefan Weil. 2008-06-03 19:51:57 +00:00
qemu-timer.h Break up vl.h. 2007-11-17 17:14:51 +00:00
qemu-tool.c Use common objects for qemu-img and qemu-nbd 2008-09-15 15:51:35 +00:00
readline.c Handle history additions properly, by Andreas Schwab. 2007-12-17 20:31:43 +00:00
README update 2005-02-10 21:46:47 +00:00
s390-dis.c Revert licensing to "GPLv2 or later", by Ulrich Hecht. 2008-01-17 13:56:59 +00:00
s390.ld update 2003-04-29 21:34:02 +00:00
sdl_keysym.h Make keysym tables const 2008-10-02 18:26:42 +00:00
sdl.c add DisplayState->idle (Samuel Thibault) 2008-08-21 20:08:55 +00:00
sh4-dis.c Fix warnings that would be caused by gcc flag -Wwrite-strings 2008-09-14 06:45:34 +00:00
softmmu_defs.h Fix some warnings that would be generated by gcc -Wredundant-decls 2008-08-30 09:51:20 +00:00
softmmu_exec.h Fix some warnings that would be generated by gcc -Wredundant-decls 2008-08-30 09:51:20 +00:00
softmmu_header.h Fix some warnings that would be generated by gcc -Wredundant-decls 2008-08-30 09:51:20 +00:00
softmmu_template.h Add instruction counter. 2008-06-29 01:03:05 +00:00
softmmu-semi.h Suppress gcc 4.x -Wpointer-sign (included in -Wall) warnings 2008-09-20 08:07:15 +00:00
sparc64.ld Map code buffers below 2G on Sparc64 2008-07-26 15:05:57 +00:00
sparc-dis.c Change some qualifiers to static 2008-10-01 18:13:13 +00:00
sparc.ld More detabification 2007-10-06 11:28:21 +00:00
sys-queue.h Move audio/sys-queue.h => sys-queue.h 2008-07-29 20:08:37 +00:00
sysemu.h Introduce v3 of savevm protocol 2008-10-06 14:53:52 +00:00
tap-win32.c Use WIN32_LEAN_AND_MEAN, by Stefan Weil. 2007-12-17 04:42:29 +00:00
texi2pod.pl Update texi2pod.pl. 2008-02-04 14:47:49 +00:00
thunk.c Make bitmask tables static const 2008-10-05 10:51:10 +00:00
thunk.h Make bitmask tables static const 2008-10-05 10:51:10 +00:00
TODO update 2008-05-13 18:26:52 +00:00
translate-all.c Small cleanup of gen_intermediate_code(_internal), by Laurent Desnogues. 2008-07-18 18:01:29 +00:00
uboot_image.h Simple u-boot image loading support. 2007-03-06 23:52:01 +00:00
usb-linux.c Don't use sprintf() or strcpy() 2008-09-22 15:04:31 +00:00
VERSION version change 2008-01-06 17:10:54 +00:00
vgafont.h Some little fixes on QEMU 2008-09-06 16:31:30 +00:00
vl.c Introduce v3 of savevm protocol 2008-10-06 14:53:52 +00:00
vnc_keysym.h Make keysym tables const 2008-10-02 18:26:42 +00:00
vnc.c Fix compiler warning when _VNC_DEBUG isn't defined. 2008-09-24 15:17:57 +00:00
vnchextile.h vnc dynamic resolution (Stefano Stabellini) 2008-09-15 16:03:41 +00:00
x86_64.ld update 2005-01-06 20:50:00 +00:00
x_keymap.c Add statics and missing #includes for prototypes. 2007-11-18 01:44:38 +00:00

Read the documentation in qemu-doc.html.

Fabrice Bellard.