mbox series

[0/9] hostmem-ram: use whole path for region name with >= 3.1

Message ID 20180912125531.32131-1-marcandre.lureau@redhat.com (mailing list archive)
Headers show
Series hostmem-ram: use whole path for region name with >= 3.1 | expand

Message

Marc-André Lureau Sept. 12, 2018, 12:55 p.m. UTC
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 "component" (or basename)
of the path.

This series adds global/compat property support for objects others
than TYPE_DEVICE (only TYPE_USER_CREATABLE for now), and a new compat
property "x-component-name" to hostmem-ram. Machines >= 3.1 will use
the whole path for the -ram memory name (like -file and -memfd).

Marc-André Lureau (9):
  qom/user-creatable: add a few helper macros
  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
  tests: add user-creatable test to test-qdev-global-props
  hw/i386: add pc-i440fx-3.1 & pc-q35-3.1
  hostmem-ram: use whole path for memory region name with >= 3.1

 include/hw/compat.h                           |   6 +-
 include/hw/i386/pc.h                          |   5 +-
 include/hw/qdev-core.h                        |  20 ---
 include/hw/qdev-properties.h                  |  34 +---
 include/qom/globals.h                         |  32 ++++
 include/qom/object_interfaces.h               |   4 +
 accel/accel.c                                 |   9 +-
 backends/hostmem-ram.c                        |  47 +++++-
 hw/core/machine.c                             |   2 +-
 hw/core/qdev-properties.c                     |  97 -----------
 hw/core/qdev.c                                |   6 -
 hw/i386/pc_piix.c                             |  15 +-
 hw/i386/pc_q35.c                              |  13 +-
 qom/cpu.c                                     |   2 +-
 qom/globals.c                                 |  81 ++++++++++
 qom/object.c                                  |   6 +-
 qom/object_interfaces.c                       |   9 +-
 target/i386/cpu.c                             |   2 +-
 target/sparc/cpu.c                            |   2 +-
 ...dev-global-props.c => test-global-props.c} | 150 +++++++++++++++---
 vl.c                                          |   8 +-
 qom/Makefile.objs                             |   2 +-
 tests/Makefile.include                        |   4 +-
 23 files changed, 350 insertions(+), 206 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%)

Comments

Marc-André Lureau Oct. 2, 2018, 10:24 a.m. UTC | #1
Hi

On Wed, Sep 12, 2018 at 4:57 PM Marc-André Lureau
<marcandre.lureau@redhat.com> wrote:
>
> 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 "component" (or basename)
> of the path.
>
> This series adds global/compat property support for objects others
> than TYPE_DEVICE (only TYPE_USER_CREATABLE for now), and a new compat
> property "x-component-name" to hostmem-ram. Machines >= 3.1 will use
> the whole path for the -ram memory name (like -file and -memfd).

The series now has a minor conflict in vl.c. I can resend if necessary.

Anyone to review the qdev/qom changes?

thanks

>
> Marc-André Lureau (9):
>   qom/user-creatable: add a few helper macros
>   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
>   tests: add user-creatable test to test-qdev-global-props
>   hw/i386: add pc-i440fx-3.1 & pc-q35-3.1
>   hostmem-ram: use whole path for memory region name with >= 3.1
>
>  include/hw/compat.h                           |   6 +-
>  include/hw/i386/pc.h                          |   5 +-
>  include/hw/qdev-core.h                        |  20 ---
>  include/hw/qdev-properties.h                  |  34 +---
>  include/qom/globals.h                         |  32 ++++
>  include/qom/object_interfaces.h               |   4 +
>  accel/accel.c                                 |   9 +-
>  backends/hostmem-ram.c                        |  47 +++++-
>  hw/core/machine.c                             |   2 +-
>  hw/core/qdev-properties.c                     |  97 -----------
>  hw/core/qdev.c                                |   6 -
>  hw/i386/pc_piix.c                             |  15 +-
>  hw/i386/pc_q35.c                              |  13 +-
>  qom/cpu.c                                     |   2 +-
>  qom/globals.c                                 |  81 ++++++++++
>  qom/object.c                                  |   6 +-
>  qom/object_interfaces.c                       |   9 +-
>  target/i386/cpu.c                             |   2 +-
>  target/sparc/cpu.c                            |   2 +-
>  ...dev-global-props.c => test-global-props.c} | 150 +++++++++++++++---
>  vl.c                                          |   8 +-
>  qom/Makefile.objs                             |   2 +-
>  tests/Makefile.include                        |   4 +-
>  23 files changed, 350 insertions(+), 206 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.rc1
>
>