mbox series

[v4,00/32] qdev property code cleanup

Message ID 20201211220529.2290218-1-ehabkost@redhat.com
Headers show
Series qdev property code cleanup | expand

Message

Eduardo Habkost Dec. 11, 2020, 10:04 p.m. UTC
This code contains the first 32 patches from the series:

  Subject: [PATCH v3 00/53] Make qdev static property API usable by any QOM type
  https://lore.kernel.org/qemu-devel/20201112214350.872250-1-ehabkost@redhat.com

I'm submitting this separately so we can merge the qdev-specific
cleanup while we discuss our long term plans for QOM properties.

Eduardo Habkost (32):
  cs4231: Get rid of empty property array
  cpu: Move cpu_common_props to hw/core/cpu.c
  qdev: Move property code to qdev-properties.[ch]
  qdev: Check dev->realized at set_size()
  sparc: Check dev->realized at sparc_set_nwindows()
  qdev: Don't use dev->id on set_size32() error message
  qdev: Make PropertyInfo.print method get Object* argument
  qdev: Make bit_prop_set() get Object* argument
  qdev: Make qdev_get_prop_ptr() get Object* arg
  qdev: Make qdev_find_global_prop() get Object* argument
  qdev: Make check_prop_still_unset() get Object* argument
  qdev: Make error_set_from_qdev_prop_error() get Object* argument
  qdev: Make qdev_propinfo_get_uint16() static
  qdev: Move UUID property to qdev-properties-system.c
  qdev: Move softmmu properties to qdev-properties-system.h
  qdev: Reuse DEFINE_PROP in all DEFINE_PROP_* macros
  sparc: Use DEFINE_PROP for nwindows property
  qdev: Get just property name at error_set_from_qdev_prop_error()
  qdev: Avoid using prop->name unnecessarily
  qdev: Add name parameter to qdev_class_add_property()
  qdev: Add name argument to PropertyInfo.create method
  qdev: Wrap getters and setters in separate helpers
  qdev: Move dev->realized check to qdev_property_set()
  qdev: Make PropertyInfo.create return ObjectProperty*
  qdev: Make qdev_class_add_property() more flexible
  qdev: Separate generic and device-specific property registration
  qdev: Rename qdev_propinfo_* to field_prop_*
  qdev: Move qdev_prop_tpm declaration to tpm_prop.h
  qdev: Rename qdev_prop_* to prop_info_*
  qdev: Rename qdev_get_prop_ptr() to object_field_prop_ptr()
  qdev: Avoid unnecessary DeviceState* variable at set_prop_arraylen()
  tests: Add unit test for qdev array properties

 audio/audio.h                       |   1 +
 hw/core/qdev-prop-internal.h        |  76 +++-
 hw/tpm/tpm_prop.h                   |   2 +
 include/hw/block/block.h            |   1 +
 include/hw/core/cpu.h               |   1 -
 include/hw/qdev-core.h              |  37 --
 include/hw/qdev-properties-system.h |  77 ++++
 include/hw/qdev-properties.h        | 289 ++++++---------
 include/net/net.h                   |   1 +
 backends/tpm/tpm_util.c             |  16 +-
 cpu.c                               |  15 -
 hw/acpi/vmgenid.c                   |   1 +
 hw/arm/pxa2xx.c                     |   1 +
 hw/arm/strongarm.c                  |   1 +
 hw/audio/cs4231.c                   |   5 -
 hw/block/fdc.c                      |   1 +
 hw/block/m25p80.c                   |   1 +
 hw/block/nand.c                     |   1 +
 hw/block/onenand.c                  |   1 +
 hw/block/pflash_cfi01.c             |   1 +
 hw/block/pflash_cfi02.c             |   1 +
 hw/block/vhost-user-blk.c           |   1 +
 hw/block/xen-block.c                |  11 +-
 hw/char/avr_usart.c                 |   1 +
 hw/char/bcm2835_aux.c               |   1 +
 hw/char/cadence_uart.c              |   1 +
 hw/char/cmsdk-apb-uart.c            |   1 +
 hw/char/debugcon.c                  |   1 +
 hw/char/digic-uart.c                |   1 +
 hw/char/escc.c                      |   1 +
 hw/char/etraxfs_ser.c               |   1 +
 hw/char/exynos4210_uart.c           |   1 +
 hw/char/grlib_apbuart.c             |   1 +
 hw/char/ibex_uart.c                 |   1 +
 hw/char/imx_serial.c                |   1 +
 hw/char/ipoctal232.c                |   1 +
 hw/char/lm32_juart.c                |   1 +
 hw/char/lm32_uart.c                 |   1 +
 hw/char/mcf_uart.c                  |   1 +
 hw/char/milkymist-uart.c            |   1 +
 hw/char/nrf51_uart.c                |   1 +
 hw/char/parallel.c                  |   1 +
 hw/char/pl011.c                     |   1 +
 hw/char/renesas_sci.c               |   1 +
 hw/char/sclpconsole-lm.c            |   1 +
 hw/char/sclpconsole.c               |   1 +
 hw/char/serial-pci-multi.c          |   1 +
 hw/char/serial.c                    |   1 +
 hw/char/spapr_vty.c                 |   1 +
 hw/char/stm32f2xx_usart.c           |   1 +
 hw/char/terminal3270.c              |   1 +
 hw/char/virtio-console.c            |   1 +
 hw/char/xilinx_uartlite.c           |   1 +
 hw/core/cpu.c                       |  15 +
 hw/core/qdev-properties-system.c    | 256 ++++++-------
 hw/core/qdev-properties.c           | 552 +++++++++++++++-------------
 hw/core/qdev.c                      | 120 ------
 hw/hyperv/vmbus.c                   |   1 +
 hw/i386/kvm/i8254.c                 |   1 +
 hw/ide/qdev.c                       |   1 +
 hw/intc/arm_gicv3_common.c          |   2 +-
 hw/intc/rx_icu.c                    |   4 +-
 hw/ipmi/ipmi_bmc_extern.c           |   1 +
 hw/ipmi/ipmi_bmc_sim.c              |   1 +
 hw/misc/allwinner-sid.c             |   1 +
 hw/misc/arm_sysctl.c                |   4 +-
 hw/misc/ivshmem.c                   |   1 +
 hw/misc/mac_via.c                   |   1 +
 hw/misc/sifive_u_otp.c              |   1 +
 hw/net/e1000e.c                     |   6 +-
 hw/net/rocker/rocker.c              |   1 +
 hw/nvram/eeprom_at24c.c             |   1 +
 hw/nvram/spapr_nvram.c              |   1 +
 hw/pci-bridge/gen_pcie_root_port.c  |   1 +
 hw/pci/pci.c                        |   1 +
 hw/ppc/pnv_pnor.c                   |   1 +
 hw/rdma/vmw/pvrdma_main.c           |   1 +
 hw/rtc/mc146818rtc.c                |   1 +
 hw/s390x/css.c                      |  13 +-
 hw/s390x/s390-pci-bus.c             |  10 +-
 hw/scsi/scsi-disk.c                 |   1 +
 hw/scsi/scsi-generic.c              |   1 +
 hw/scsi/vhost-user-scsi.c           |   1 +
 hw/sd/sd.c                          |   1 +
 hw/usb/ccid-card-passthru.c         |   1 +
 hw/usb/dev-serial.c                 |   1 +
 hw/usb/redirect.c                   |   1 +
 hw/vfio/pci-quirks.c                |  11 +-
 hw/vfio/pci.c                       |   1 +
 hw/virtio/vhost-user-fs.c           |   1 +
 hw/virtio/vhost-user-vsock.c        |   1 +
 hw/virtio/virtio-iommu-pci.c        |   1 +
 hw/xen/xen_pt.c                     |   1 +
 migration/migration.c               |   1 +
 softmmu/qdev-monitor.c              |   1 +
 target/arm/cpu.c                    |   2 +-
 target/sparc/cpu.c                  |   5 +-
 tests/test-qdev-global-props.c      |  61 +++
 98 files changed, 838 insertions(+), 826 deletions(-)
 create mode 100644 include/hw/qdev-properties-system.h

Comments

Eduardo Habkost Dec. 14, 2020, 7:42 p.m. UTC | #1
On Fri, Dec 11, 2020 at 05:04:57PM -0500, Eduardo Habkost wrote:
> This code contains the first 32 patches from the series:
> 
>   Subject: [PATCH v3 00/53] Make qdev static property API usable by any QOM type
>   https://lore.kernel.org/qemu-devel/20201112214350.872250-1-ehabkost@redhat.com
> 
> I'm submitting this separately so we can merge the qdev-specific
> cleanup while we discuss our long term plans for QOM properties.
> 
> Eduardo Habkost (32):
>   cs4231: Get rid of empty property array
>   cpu: Move cpu_common_props to hw/core/cpu.c
>   qdev: Move property code to qdev-properties.[ch]
>   qdev: Check dev->realized at set_size()
>   sparc: Check dev->realized at sparc_set_nwindows()
>   qdev: Don't use dev->id on set_size32() error message
>   qdev: Make PropertyInfo.print method get Object* argument
>   qdev: Make bit_prop_set() get Object* argument
>   qdev: Make qdev_get_prop_ptr() get Object* arg
>   qdev: Make qdev_find_global_prop() get Object* argument
>   qdev: Make check_prop_still_unset() get Object* argument
>   qdev: Make error_set_from_qdev_prop_error() get Object* argument
>   qdev: Make qdev_propinfo_get_uint16() static
>   qdev: Move UUID property to qdev-properties-system.c

I'm queueing patches 1-14 (above) on machine-next.

>   qdev: Move softmmu properties to qdev-properties-system.h
>   qdev: Reuse DEFINE_PROP in all DEFINE_PROP_* macros
>   sparc: Use DEFINE_PROP for nwindows property
>   qdev: Get just property name at error_set_from_qdev_prop_error()
>   qdev: Avoid using prop->name unnecessarily
>   qdev: Add name parameter to qdev_class_add_property()
>   qdev: Add name argument to PropertyInfo.create method
>   qdev: Wrap getters and setters in separate helpers
>   qdev: Move dev->realized check to qdev_property_set()
>   qdev: Make PropertyInfo.create return ObjectProperty*
>   qdev: Make qdev_class_add_property() more flexible
>   qdev: Separate generic and device-specific property registration
>   qdev: Rename qdev_propinfo_* to field_prop_*
>   qdev: Move qdev_prop_tpm declaration to tpm_prop.h
>   qdev: Rename qdev_prop_* to prop_info_*
>   qdev: Rename qdev_get_prop_ptr() to object_field_prop_ptr()
>   qdev: Avoid unnecessary DeviceState* variable at set_prop_arraylen()
>   tests: Add unit test for qdev array properties
>
Eduardo Habkost Dec. 15, 2020, 3:40 p.m. UTC | #2
On Mon, Dec 14, 2020 at 02:42:44PM -0500, Eduardo Habkost wrote:
> On Fri, Dec 11, 2020 at 05:04:57PM -0500, Eduardo Habkost wrote:
> > This code contains the first 32 patches from the series:
> > 
> >   Subject: [PATCH v3 00/53] Make qdev static property API usable by any QOM type
> >   https://lore.kernel.org/qemu-devel/20201112214350.872250-1-ehabkost@redhat.com
> > 
> > I'm submitting this separately so we can merge the qdev-specific
> > cleanup while we discuss our long term plans for QOM properties.
> > 
> > Eduardo Habkost (32):
> >   cs4231: Get rid of empty property array
> >   cpu: Move cpu_common_props to hw/core/cpu.c
> >   qdev: Move property code to qdev-properties.[ch]
> >   qdev: Check dev->realized at set_size()
> >   sparc: Check dev->realized at sparc_set_nwindows()
> >   qdev: Don't use dev->id on set_size32() error message
> >   qdev: Make PropertyInfo.print method get Object* argument
> >   qdev: Make bit_prop_set() get Object* argument
> >   qdev: Make qdev_get_prop_ptr() get Object* arg
> >   qdev: Make qdev_find_global_prop() get Object* argument
> >   qdev: Make check_prop_still_unset() get Object* argument
> >   qdev: Make error_set_from_qdev_prop_error() get Object* argument
> >   qdev: Make qdev_propinfo_get_uint16() static
> >   qdev: Move UUID property to qdev-properties-system.c
> 
> I'm queueing patches 1-14 (above) on machine-next.
> 
> >   qdev: Move softmmu properties to qdev-properties-system.h
> >   qdev: Reuse DEFINE_PROP in all DEFINE_PROP_* macros
> >   sparc: Use DEFINE_PROP for nwindows property
> >   qdev: Get just property name at error_set_from_qdev_prop_error()
> >   qdev: Avoid using prop->name unnecessarily
> >   qdev: Add name parameter to qdev_class_add_property()
> >   qdev: Add name argument to PropertyInfo.create method
> >   qdev: Wrap getters and setters in separate helpers
> >   qdev: Move dev->realized check to qdev_property_set()
> >   qdev: Make PropertyInfo.create return ObjectProperty*
> >   qdev: Make qdev_class_add_property() more flexible

I'm queueing patches 15-25 (above) on machine-next.

> >   qdev: Separate generic and device-specific property registration
> >   qdev: Rename qdev_propinfo_* to field_prop_*
> >   qdev: Move qdev_prop_tpm declaration to tpm_prop.h
> >   qdev: Rename qdev_prop_* to prop_info_*
> >   qdev: Rename qdev_get_prop_ptr() to object_field_prop_ptr()
> >   qdev: Avoid unnecessary DeviceState* variable at set_prop_arraylen()
> >   tests: Add unit test for qdev array properties
> >
Eduardo Habkost Dec. 15, 2020, 4:57 p.m. UTC | #3
On Tue, Dec 15, 2020 at 10:40:20AM -0500, Eduardo Habkost wrote:
> On Mon, Dec 14, 2020 at 02:42:44PM -0500, Eduardo Habkost wrote:
> > On Fri, Dec 11, 2020 at 05:04:57PM -0500, Eduardo Habkost wrote:
> > > This code contains the first 32 patches from the series:
> > > 
> > >   Subject: [PATCH v3 00/53] Make qdev static property API usable by any QOM type
> > >   https://lore.kernel.org/qemu-devel/20201112214350.872250-1-ehabkost@redhat.com
> > > 
> > > I'm submitting this separately so we can merge the qdev-specific
> > > cleanup while we discuss our long term plans for QOM properties.
> > > 
> > > Eduardo Habkost (32):
> > >   cs4231: Get rid of empty property array
> > >   cpu: Move cpu_common_props to hw/core/cpu.c
> > >   qdev: Move property code to qdev-properties.[ch]
> > >   qdev: Check dev->realized at set_size()
> > >   sparc: Check dev->realized at sparc_set_nwindows()
> > >   qdev: Don't use dev->id on set_size32() error message
> > >   qdev: Make PropertyInfo.print method get Object* argument
> > >   qdev: Make bit_prop_set() get Object* argument
> > >   qdev: Make qdev_get_prop_ptr() get Object* arg
> > >   qdev: Make qdev_find_global_prop() get Object* argument
> > >   qdev: Make check_prop_still_unset() get Object* argument
> > >   qdev: Make error_set_from_qdev_prop_error() get Object* argument
> > >   qdev: Make qdev_propinfo_get_uint16() static
> > >   qdev: Move UUID property to qdev-properties-system.c
> > 
> > I'm queueing patches 1-14 (above) on machine-next.
> > 
> > >   qdev: Move softmmu properties to qdev-properties-system.h
> > >   qdev: Reuse DEFINE_PROP in all DEFINE_PROP_* macros
> > >   sparc: Use DEFINE_PROP for nwindows property
> > >   qdev: Get just property name at error_set_from_qdev_prop_error()
> > >   qdev: Avoid using prop->name unnecessarily
> > >   qdev: Add name parameter to qdev_class_add_property()
> > >   qdev: Add name argument to PropertyInfo.create method
> > >   qdev: Wrap getters and setters in separate helpers
> > >   qdev: Move dev->realized check to qdev_property_set()
> > >   qdev: Make PropertyInfo.create return ObjectProperty*
> > >   qdev: Make qdev_class_add_property() more flexible
> 
> I'm queueing patches 15-25 (above) on machine-next.
> 

I'm also queueing the following:

> > >   qdev: Move qdev_prop_tpm declaration to tpm_prop.h
> > >   qdev: Rename qdev_get_prop_ptr() to object_field_prop_ptr()
> > >   qdev: Avoid unnecessary DeviceState* variable at set_prop_arraylen()