v3 contains too much new things. So here comes a new cover letter with richer information.
The main goal of this series is to let MigrationState be a QDev. It helps in many use cases. First of all, we can remove many legacy tricky functions. To name some: savevm_skip_section_footers(), savevm_skip_configuration(), etc. They didn't do much thing but setup a bool value. If MigrationState can be a QDev, then these things can be setup by the HW_COMPAT_* magic with some lines like: { .driver = "migration", .property = "send-configuration", .value = "off", } Next, if this can be merged and okay, we can move on to convert more things into properties for migration. A very attractive use case of it is, we will be able to do this for migration: -global migration.postcopy=on Then we don't need to use either HMP/QMP interface to enable it. It greatly simplifies the migration test scripts. Why QDev not QObject? The answer is simple: all the magic that we want for migration is bound to QDev (HW_COMPAT, "-global"). If one day we want to move these features from QDev to QObject, that'll be fine and easy for MigrationState. But before that, let's have MigrationState a QDev. :-) Here's what individual patch does: patch 1-8: introduce AccelState.global_props list. This is an idea suggested by Eduardo in general, it is just more complicated than I thought. Here each patch has rich commit message to read (especially patch 6). Things to mention: - patch 5 fixes a test break - patch 8 added a trace so that I can verify all the x86 cpu properties are applied correctly on tcg/x86/pc-i440fx-*. patch 9-13: the original patches for the objectify of MigrationState. Please kindly review. Thanks. Peter Xu (13): machine: export register_compat_prop() qdev: enhance global_prop_list_add() qdev: remove qdev_prop_register_global() accel: introduce AccelState.global_props tests: avoid check GlobalProperty.used kvm: let kvm use AccelState.global_props tcg: use AccelState.global_props trace: add qdev_global_prop_apply migration: let MigrationState be a qdev migration: move global_state.optional out migration: move only_migratable to MigrationState migration: move skip_configuration out migration: move skip_section_footers Makefile.objs | 1 + accel.c | 50 +++++++++++++++++++++++ hw/core/machine.c | 20 +++------ hw/core/qdev-properties.c | 56 +++++++++++++++++++++++-- hw/core/trace-events | 2 + hw/i386/pc_piix.c | 11 +++-- hw/ppc/spapr.c | 3 -- hw/xen/xen-common.c | 9 ++-- include/hw/compat.h | 12 ++++++ include/hw/qdev-properties.h | 17 +++++++- include/migration/global_state.h | 1 - include/migration/misc.h | 4 +- include/sysemu/accel.h | 20 +++++++++ include/sysemu/sysemu.h | 1 - kvm-all.c | 30 ++++++++++++++ migration/global_state.c | 9 +--- migration/migration.c | 88 ++++++++++++++++++++++++++++++---------- migration/migration.h | 33 +++++++++++++++ migration/savevm.c | 28 ++++--------- qom/cpu.c | 8 +--- target/i386/cpu.c | 77 +---------------------------------- target/i386/cpu.h | 11 ----- tests/test-qdev-global-props.c | 12 ------ vl.c | 54 ++++++++++-------------- 24 files changed, 339 insertions(+), 218 deletions(-) create mode 100644 hw/core/trace-events -- 2.7.4