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