[Qemu-devel] [PULL 00/28] Machine props patches

Marc-André Lureau posted 28 patches 5 years, 3 months ago
Test asan passed
Test checkpatch passed
Test docker-mingw@fedora passed
Test docker-quick@centos7 passed
Test docker-clang@ubuntu passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190104173042.32714-1-marcandre.lureau@redhat.com
There is a newer version of this series
include/hw/boards.h            |  59 ++-
include/hw/compat.h            | 299 --------------
include/hw/i386/pc.h           | 689 +++------------------------------
include/hw/qdev-core.h         |  23 +-
include/qom/object.h           |   3 +
include/sysemu/accel.h         |   4 +-
include/sysemu/hostmem.h       |   3 +-
target/arm/cpu-qom.h           |   3 +
target/arm/cpu.h               |   2 +
accel/accel.c                  |  12 -
backends/hostmem-file.c        |   8 +-
backends/hostmem-memfd.c       |   2 +-
backends/hostmem-ram.c         |   9 +-
backends/hostmem.c             |  36 ++
hw/arm/virt.c                  |  46 +--
hw/core/machine.c              | 347 ++++++++++++++++-
hw/core/qdev-properties.c      |  49 +--
hw/core/qdev.c                 |  15 +
hw/i386/pc.c                   | 674 ++++++++++++++++++++++++++++++++
hw/i386/pc_piix.c              | 508 ++++++++++++------------
hw/i386/pc_q35.c               |  36 +-
hw/ppc/spapr.c                 | 207 +++++-----
hw/s390x/s390-virtio-ccw.c     | 196 +++++-----
hw/xen/xen-common.c            |  41 +-
qom/cpu.c                      |   1 -
qom/object.c                   |  35 ++
target/arm/cpu.c               |  30 +-
target/arm/cpu64.c             |  24 +-
target/i386/cpu.c              |   1 -
target/sparc/cpu.c             |   1 -
tests/test-qdev-global-props.c |  57 +--
vl.c                           |   4 -
32 files changed, 1786 insertions(+), 1638 deletions(-)
delete mode 100644 include/hw/compat.h
[Qemu-devel] [PULL 00/28] Machine props patches
Posted by Marc-André Lureau 5 years, 3 months ago
The following changes since commit 6395fe0c2c7d9f336d87960a7c9924b630c57c91:

  Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging (2019-01-04 13:22:51 +0000)

are available in the Git repository at:

  https://github.com/elmarco/qemu.git tags/machine-props-pull-request

for you to fetch changes up to e91feab787f901b831fe11ecffe0e2f5669da714:

  hostmem: use object id for memory region name with >= 4.0 (2019-01-04 20:24:55 +0400)

----------------------------------------------------------------
Generalize machine compatibility properties

During "[PATCH v2 05/10] qom/globals: generalize
object_property_set_globals()" review, Eduardo suggested to rework the
GlobalProperty handling, so that -global is limited to QDev only and
we avoid mixing the machine compats and the user-provided -global
properties (instead of generalizing -global to various object kinds,
like I proposed in v2).

"qdev: do not mix compat props with global props" patch decouples a
bit user-provided -global from machine compat properties. This allows
to get rid of "user_provided" and "errp" fields in following patches.

A new compat property "x-use-canonical-path-for-ramblock-id" is added
to hostmem for legacy canonical path names, set to true for -file and
-memfd with qemu < 4.0.

(this series was initially titled "[PATCH v2 00/10] hostmem: use
object "id" for memory region name with >= 3.1", but its focus is more
in refactoring the global and compatilibity properties handling now)

----------------------------------------------------------------

Marc-André Lureau (28):
  hw: apply accel compat properties without touching globals
  machines: replace COMPAT define with a static array
  hw: apply machine compat properties without touching globals
  machine: move compat properties out of globals
  hw: remove SET_MACHINE_COMPAT
  compat: replace PC_COMPAT_3_1 & HW_COMPAT_3_1 macros
  compat: replace PC_COMPAT_3_0 & HW_COMPAT_3_0 macros
  compat: replace PC_COMPAT_2_12 & HW_COMPAT_2_12 macros
  compat: replace PC_COMPAT_2_11 & HW_COMPAT_2_11 macros
  compat: replace PC_COMPAT_2_10 & HW_COMPAT_2_10 macros
  compat: replace PC_COMPAT_2_9 & HW_COMPAT_2_9 macros
  compat: replace PC_COMPAT_2_8 & HW_COMPAT_2_8 macros
  compat: replace PC_COMPAT_2_7 & HW_COMPAT_2_7 macros
  compat: replace PC_COMPAT_2_6 & HW_COMPAT_2_6 macros
  compat: replace PC_COMPAT_2_5 & HW_COMPAT_2_5 macros
  compat: replace PC_COMPAT_2_4 & HW_COMPAT_2_4 macros
  compat: replace PC_COMPAT_2_3 & HW_COMPAT_2_3 macros
  compat: replace PC_COMPAT_2_2 & HW_COMPAT_2_2 macros
  compat: replace PC_COMPAT_2_1 & HW_COMPAT_2_1 macros
  include: remove compat.h
  compat: remove remaining PC_COMPAT macros
  qdev: make a separate helper function to apply compat properties
  qdev: all globals are now user-provided
  qdev-props: convert global_props to GPtrArray
  qdev-props: remove errp from GlobalProperty
  qdev-props: call object_apply_global_props()
  arm: replace instance_post_init()
  hostmem: use object id for memory region name with >= 4.0

 include/hw/boards.h            |  59 ++-
 include/hw/compat.h            | 299 --------------
 include/hw/i386/pc.h           | 689 +++------------------------------
 include/hw/qdev-core.h         |  23 +-
 include/qom/object.h           |   3 +
 include/sysemu/accel.h         |   4 +-
 include/sysemu/hostmem.h       |   3 +-
 target/arm/cpu-qom.h           |   3 +
 target/arm/cpu.h               |   2 +
 accel/accel.c                  |  12 -
 backends/hostmem-file.c        |   8 +-
 backends/hostmem-memfd.c       |   2 +-
 backends/hostmem-ram.c         |   9 +-
 backends/hostmem.c             |  36 ++
 hw/arm/virt.c                  |  46 +--
 hw/core/machine.c              | 347 ++++++++++++++++-
 hw/core/qdev-properties.c      |  49 +--
 hw/core/qdev.c                 |  15 +
 hw/i386/pc.c                   | 674 ++++++++++++++++++++++++++++++++
 hw/i386/pc_piix.c              | 508 ++++++++++++------------
 hw/i386/pc_q35.c               |  36 +-
 hw/ppc/spapr.c                 | 207 +++++-----
 hw/s390x/s390-virtio-ccw.c     | 196 +++++-----
 hw/xen/xen-common.c            |  41 +-
 qom/cpu.c                      |   1 -
 qom/object.c                   |  35 ++
 target/arm/cpu.c               |  30 +-
 target/arm/cpu64.c             |  24 +-
 target/i386/cpu.c              |   1 -
 target/sparc/cpu.c             |   1 -
 tests/test-qdev-global-props.c |  57 +--
 vl.c                           |   4 -
 32 files changed, 1786 insertions(+), 1638 deletions(-)
 delete mode 100644 include/hw/compat.h

-- 
2.20.1.2.gb21ebb671b


Re: [Qemu-devel] [PULL 00/28] Machine props patches
Posted by Peter Maydell 5 years, 3 months ago
On Fri, 4 Jan 2019 at 17:30, Marc-André Lureau
<marcandre.lureau@redhat.com> wrote:
>
> The following changes since commit 6395fe0c2c7d9f336d87960a7c9924b630c57c91:
>
>   Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging (2019-01-04 13:22:51 +0000)
>
> are available in the Git repository at:
>
>   https://github.com/elmarco/qemu.git tags/machine-props-pull-request
>
> for you to fetch changes up to e91feab787f901b831fe11ecffe0e2f5669da714:
>
>   hostmem: use object id for memory region name with >= 4.0 (2019-01-04 20:24:55 +0400)
>
> ----------------------------------------------------------------
> Generalize machine compatibility properties
>
> During "[PATCH v2 05/10] qom/globals: generalize
> object_property_set_globals()" review, Eduardo suggested to rework the
> GlobalProperty handling, so that -global is limited to QDev only and
> we avoid mixing the machine compats and the user-provided -global
> properties (instead of generalizing -global to various object kinds,
> like I proposed in v2).
>
> "qdev: do not mix compat props with global props" patch decouples a
> bit user-provided -global from machine compat properties. This allows
> to get rid of "user_provided" and "errp" fields in following patches.
>
> A new compat property "x-use-canonical-path-for-ramblock-id" is added
> to hostmem for legacy canonical path names, set to true for -file and
> -memfd with qemu < 4.0.
>
> (this series was initially titled "[PATCH v2 00/10] hostmem: use
> object "id" for memory region name with >= 3.1", but its focus is more
> in refactoring the global and compatilibity properties handling now)
>

Hi -- I get some compile failures here on Arm host builds:

In file included from /home/peter.maydell/qemu/target/arm/idau.h:31:0,
                 from /home/peter.maydell/qemu/target/arm/cpu.c:22:
/home/peter.maydell/qemu/target/arm/cpu.c: In function 'arm_host_initfn':
/home/peter.maydell/qemu/include/qom/object.h:518:5: error: passing
argument 1 of 'arm_cpu_post_init' from incompatible pointer type
[-Werror=incompatible-pointer-types]
     ((type *)object_dynamic_cast_assert(OBJECT(obj), (name), \
     ^
/home/peter.maydell/qemu/target/arm/cpu-qom.h:32:5: note: in expansion
of macro 'OBJECT_CHECK'
     OBJECT_CHECK(ARMCPU, (obj), TYPE_ARM_CPU)
     ^
/home/peter.maydell/qemu/target/arm/cpu.c:2118:23: note: in expansion
of macro 'ARM_CPU'
     arm_cpu_post_init(ARM_CPU(obj));
                       ^
/home/peter.maydell/qemu/target/arm/cpu.c:743:6: note: expected
'Object * {aka struct Object *}' but argument is of type 'ARMCPU *
{aka struct ARMCPU *}'
 void arm_cpu_post_init(Object *obj)
      ^

This is a build failure only on Arm hosts because the relevant
code is inside #ifdef CONFIG_KVM. The following change is
sufficient to fix this:

diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index baf430c..4c4e9e1 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -2115,7 +2115,7 @@ static void arm_host_initfn(Object *obj)
     ARMCPU *cpu = ARM_CPU(obj);

     kvm_arm_set_cpu_features_from_host(cpu);
-    arm_cpu_post_init(ARM_CPU(obj));
+    arm_cpu_post_init(obj);
 }

 static const TypeInfo host_arm_cpu_type_info = {

I'll leave it up to you to work out which commit it needs
to be squashed into.

thanks
-- PMM