[PATCH v3 00/11] qdev: Make array properties user accessible again

Kevin Wolf posted 11 patches 5 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20231109174240.72376-1-kwolf@redhat.com
Maintainers: Peter Maydell <peter.maydell@linaro.org>, Radoslaw Biernacki <rad@semihalf.com>, Leif Lindholm <quic_llindhol@quicinc.com>, Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>, Alistair Francis <alistair@alistair23.me>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, Paolo Bonzini <pbonzini@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Richard Henderson <richard.henderson@linaro.org>, "Michael S. Tsirkin" <mst@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Yoshinori Sato <ysato@users.sourceforge.jp>
include/hw/qdev-properties.h     |  35 ++---
include/qom/object.h             |   8 ++
hw/arm/mps2-tz.c                 |  10 +-
hw/arm/mps2.c                    |  12 +-
hw/arm/sbsa-ref.c                |   7 +-
hw/arm/vexpress.c                |  21 +--
hw/arm/virt.c                    |  31 ++--
hw/arm/xlnx-versal.c             |   9 +-
hw/core/qdev-properties-system.c |   2 +-
hw/core/qdev-properties.c        | 237 ++++++++++++++++++++-----------
hw/i386/pc.c                     |   8 +-
hw/rx/rx62n.c                    |  19 +--
qom/object.c                     |   6 +
13 files changed, 257 insertions(+), 148 deletions(-)
[PATCH v3 00/11] qdev: Make array properties user accessible again
Posted by Kevin Wolf 5 months, 3 weeks ago
Array properties have been inaccessible since commit f3558b1b both on
the command line and in QMP. This series reworks them so that they are
made accessible again in these external interfaces, this time as JSON
lists. See patch 11 for details.

v3:
- Rebased, patch 1 was already merged in the context of another series
- malloc() the elements for the temporary list in set_prop_array().
  Having the value directly in GenericList.padding resulted in bad
  alignment for some property types on 32 bit platforms.

v2:
- Patch 1: Use unsigned instead of uint32_t
- Patch 9: Fixed build error
- Patch 11: Split into a separate patch to clarify the intention
- Patch 12:
  * Improved the commit message
  * Document and statically assert alignment requirements for array
    elements (the static assertion turned out to be much uglier than I
    had hoped, but it is what it is)
  * Replace UB in pointer arithmetics with uintptr_t calculations
  * Fix properties without a .release callback
  * Check array size for integer overflow
  * Call visit_check_list() even for output visitors
- Coding style changes

Kevin Wolf (11):
  hw/i386/pc: Use qdev_prop_set_array()
  hw/arm/mps2-tz: Use qdev_prop_set_array()
  hw/arm/mps2: Use qdev_prop_set_array()
  hw/arm/sbsa-ref: Use qdev_prop_set_array()
  hw/arm/vexpress: Use qdev_prop_set_array()
  hw/arm/virt: Use qdev_prop_set_array()
  hw/arm/xlnx-versal: Use qdev_prop_set_array()
  hw/rx/rx62n: Use qdev_prop_set_array()
  qom: Add object_property_set_default_list()
  qdev: Make netdev properties work as list elements
  qdev: Rework array properties based on list visitor

 include/hw/qdev-properties.h     |  35 ++---
 include/qom/object.h             |   8 ++
 hw/arm/mps2-tz.c                 |  10 +-
 hw/arm/mps2.c                    |  12 +-
 hw/arm/sbsa-ref.c                |   7 +-
 hw/arm/vexpress.c                |  21 +--
 hw/arm/virt.c                    |  31 ++--
 hw/arm/xlnx-versal.c             |   9 +-
 hw/core/qdev-properties-system.c |   2 +-
 hw/core/qdev-properties.c        | 237 ++++++++++++++++++++-----------
 hw/i386/pc.c                     |   8 +-
 hw/rx/rx62n.c                    |  19 +--
 qom/object.c                     |   6 +
 13 files changed, 257 insertions(+), 148 deletions(-)

-- 
2.41.0
Re: [PATCH v3 00/11] qdev: Make array properties user accessible again
Posted by Philippe Mathieu-Daudé 5 months, 3 weeks ago
Hi Kevin,

On 9/11/23 18:42, Kevin Wolf wrote:
> Array properties have been inaccessible since commit f3558b1b both on
> the command line and in QMP. This series reworks them so that they are
> made accessible again in these external interfaces, this time as JSON
> lists. See patch 11 for details.

This justifies getting this merged for v8.2, right?