qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v2 00/10] hostmem: use object "id" for memory region


From: Marc-André Lureau
Subject: [Qemu-devel] [PATCH v2 00/10] hostmem: use object "id" for memory region name with >= 3.1
Date: Tue, 30 Oct 2018 19:04:43 +0400

Hi,

The migration code expects the RAM block name to match between the
source and destination.  However the backend type may change, so it is
possible (so far) to migrate from a hostmem-file to a hostmem-memfd
for example.

However, hostmem backends use inconsistent RAM naming, which can cause
a name mismatch. hostmem-file and hostmem-memfd use the whole object
path as memory name, while -ram use only the object "id".

This series adds global property support for objects others than
TYPE_DEVICE (only TYPE_USER_CREATABLE for now), and a new compat
property "x-use-canonical-path-for-ramblock-id" to hostmem for legacy
canonical path names, set to true for -file and -memfd with qemu < 3.1.

v2:
- replace "qom/user-creatable: add a few helper macros" patch for a
  more optimized "qom: make user_creatable_complete() specific to
  UserCreatable"
- rename register_global_list() to register_global_properties()
- call object_property_set_globals() after post-init
- add and use a ObjectClass.set_globals flag, instead of dynamically
  check object class in object_property_set_globals()
- use object "id" in >= 3.1 instead of canonical path, add compat
  property "x-use-canonical-path-for-ramblock-id" in base hostmem
  class.

Marc-André Lureau (10):
  qom: make user_creatable_complete() specific to UserCreatable
  accel: register global_props like machine globals
  qdev: move qdev_prop_register_global_list() to tests
  qom/globals: move qdev globals to qom
  qom/globals: generalize object_property_set_globals()
  qom/object: set globals when initializing object
  qom/object: add set_globals flags
  tests: add user-creatable test to test-qdev-global-props
  hw/i386: add pc-i440fx-3.1 & pc-q35-3.1
  hostmem: use object id for memory region name with >= 3.1

 include/hw/compat.h                           |  11 +-
 include/hw/i386/pc.h                          |   2 +-
 include/hw/qdev-core.h                        |  20 ---
 include/hw/qdev-properties.h                  |  34 +---
 include/qom/globals.h                         |  32 ++++
 include/qom/object.h                          |   1 +
 include/qom/object_interfaces.h               |   4 +-
 include/sysemu/hostmem.h                      |   3 +-
 accel/accel.c                                 |   9 +-
 backends/hostmem-file.c                       |   8 +-
 backends/hostmem-memfd.c                      |   2 +-
 backends/hostmem-ram.c                        |   9 +-
 backends/hostmem.c                            |  30 ++++
 hw/core/machine.c                             |   2 +-
 hw/core/qdev-properties.c                     |  97 -----------
 hw/core/qdev.c                                |   7 +-
 hw/i386/pc_piix.c                             |  15 +-
 hw/i386/pc_q35.c                              |  13 +-
 hw/misc/ivshmem.c                             |   2 +-
 hw/virtio/virtio-rng.c                        |   2 +-
 qom/cpu.c                                     |   2 +-
 qom/globals.c                                 |  76 +++++++++
 qom/object.c                                  |  17 +-
 qom/object_interfaces.c                       |  21 ++-
 target/i386/cpu.c                             |   2 +-
 target/sparc/cpu.c                            |   2 +-
 ...dev-global-props.c => test-global-props.c} | 150 +++++++++++++++---
 vl.c                                          |   6 +-
 qom/Makefile.objs                             |   2 +-
 tests/Makefile.include                        |   4 +-
 30 files changed, 362 insertions(+), 223 deletions(-)
 create mode 100644 include/qom/globals.h
 create mode 100644 qom/globals.c
 rename tests/{test-qdev-global-props.c => test-global-props.c} (71%)

-- 
2.19.0.271.gfe8321ec05




reply via email to

[Prev in Thread] Current Thread [Next in Thread]