[Qemu-devel] [PATCH v3 00/13] migration: objectify MigrationState

Peter Xu posted 13 patches 6 years, 10 months ago
Only 12 patches received!
There is a newer version of this series
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
[Qemu-devel] [PATCH v3 00/13] migration: objectify MigrationState
Posted by Peter Xu 6 years, 10 months ago
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


Re: [Qemu-devel] [PATCH v3 00/13] migration: objectify MigrationState
Posted by Juan Quintela 6 years, 10 months ago
Peter Xu <peterx@redhat.com> wrote:
> 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.

Hi

I haven't reviewed the qdev part of the patches (it is a landmine for
me).  But I like the result of it.

Well done, Juan.