qemu/include
Peter Xu f37bc03623 migration: allow to prioritize save state entries
During migration, save state entries are saved/loaded without a specific
order - we just traverse the savevm_state.handlers list and do it one by
one. This might not be enough.

There are requirements that we need to load specific device's vmstate
first before others. For example, VT-d IOMMU contains DMA address
remapping information, which is required by all the PCI devices to do
address translations. We need to make sure IOMMU's device state is
loaded before the rest of the PCI devices, so that DMA address
translation can work properly.

This patch provide a VMStateDescription.priority value to allow specify
the priority of the saved states. The loadvm operation will be done with
those devices with higher vmsd priority.

Before this patch, we are possibly achieving the ordering requirement by
an assumption that the ordering will be the same with the ordering that
objects are created. A better way is to mark it out explicitly in the
VMStateDescription table, like what this patch does.

Current ordering logic is still naive and slow, but after all that's not
a critical path so IMO it's a workable solution for now.

Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2017-01-10 05:56:57 +02:00
..
block block: Rename raw-{posix,win32} to file-*.c 2017-01-09 13:30:53 +01:00
crypto crypto: add CTR mode support 2016-10-19 10:09:24 +01:00
disas disas: Fix ATTRIBUTE_UNUSED define clash with ALSA headers 2016-07-19 16:40:39 +01:00
exec exec: introduce MemoryRegionCache 2016-12-22 16:00:23 +01:00
fpu fpu: add mechanism to check for invalid long double formats 2016-09-15 12:43:18 +01:00
hw hw/arm/virt-acpi-build: Don't incorrectly claim architectural timer to be edge-triggered 2017-01-09 11:40:23 +00:00
io io: add ability to set a name for IO channels 2016-10-27 09:13:10 +02:00
libdecnumber Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
migration migration: allow to prioritize save state entries 2017-01-10 05:56:57 +02:00
monitor qdev: add function qdev_set_id() 2016-11-22 10:29:37 -08:00
net Remove unused function declarations 2016-09-15 15:32:22 +03:00
qapi qdict: implement a qdict_crumple method for un-flattening a dict 2016-10-25 17:56:14 +02:00
qemu coroutine: Introduce qemu_coroutine_enter_if_inactive() 2017-01-09 13:30:52 +01:00
qom *_run_on_cpu: introduce run_on_cpu_data type 2016-10-31 15:00:25 +01:00
standard-headers kvm: sync linux headers 2016-12-22 16:00:26 +01:00
sysemu record/replay: add network support 2017-01-06 10:38:00 +08:00
ui spice/gl: render DisplaySurface via opengl 2016-09-28 12:49:36 +02:00
elf.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
glib-compat.h tests: send error_report to test log 2016-11-01 16:06:57 +01:00
qemu-common.h tcg: Add EXCP_ATOMIC 2016-10-26 08:29:00 -07:00
qemu-io.h qemu-io: Use BlockBackend 2015-02-16 15:07:19 +00:00
trace-tcg.h trace: get rid of generated-events.h/generated-events.c 2016-10-12 09:54:52 +02:00
trace.h trace: get rid of generated-events.h/generated-events.c 2016-10-12 09:54:52 +02:00