[PATCH-for-9.0 v2 5/8] hw: Prefer qdev_prop_set_bit over object_property_set_bool for QDev

Philippe Mathieu-Daudé posted 8 patches 1 year ago
Maintainers: "Michael S. Tsirkin" <mst@redhat.com>, Igor Mammedov <imammedo@redhat.com>, Ani Sinha <anisinha@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Aurelien Jarno <aurelien@aurel32.net>, Niek Linnenbank <nieklinnenbank@gmail.com>, Beniamino Galvani <b.galvani@gmail.com>, Peter Maydell <peter.maydell@linaro.org>, Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, "Cédric Le Goater" <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>, Joel Stanley <joel@jms.id.au>, Jean-Christophe Dubois <jcd@tribudubois.net>, Andrey Smirnov <andrew.smirnov@gmail.com>, Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 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>, Nicholas Piggin <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, David Gibson <david@gibson.dropbear.id.au>, Harsh Prateek Bora <harshpb@linux.ibm.com>, Yoshinori Sato <ysato@users.sourceforge.jp>, Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Artyom Tarasenko <atar4qemu@gmail.com>
[PATCH-for-9.0 v2 5/8] hw: Prefer qdev_prop_set_bit over object_property_set_bool for QDev
Posted by Philippe Mathieu-Daudé 1 year ago
The QOM API is lower level than the QDev one. When an instance is
QDev and setting the property can not fail (using &error_abort),
prefer qdev_prop_set_bit() over object_property_set_bool().

Mechanical transformation using the following coccinelle patch:

  @@
  expression o, p, v;
  @@
  -            object_property_set_bool(OBJECT(o), p, v, &error_abort)
  +            qdev_prop_set_bit(DEVICE(o), p, v)
  @@@@
  -            object_property_set_bool(o, p, v, &error_abort)
  +            qdev_prop_set_bit(DEVICE(o), p, v)

manually adding the missing "hw/qdev-properties.h" header.

In hw/arm/armsse.c we use the available 'cpudev' instead of 'cpuobj'.

Suggested-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/acpi/cpu_hotplug.c               |  7 +++----
 hw/acpi/ich9.c                      |  4 ++--
 hw/acpi/piix4.c                     |  4 ++--
 hw/arm/armsse.c                     |  3 +--
 hw/arm/armv7m.c                     |  3 +--
 hw/arm/aspeed_ast2400.c             |  3 +--
 hw/arm/aspeed_ast2600.c             |  9 +++------
 hw/arm/bcm2835_peripherals.c        |  3 +--
 hw/arm/bcm2836.c                    |  4 ++--
 hw/arm/boot.c                       |  4 ++--
 hw/arm/fsl-imx25.c                  |  3 +--
 hw/arm/fsl-imx31.c                  |  3 +--
 hw/arm/fsl-imx6.c                   | 12 ++++--------
 hw/arm/fsl-imx6ul.c                 |  8 ++++----
 hw/arm/fsl-imx7.c                   | 10 ++++------
 hw/arm/npcm7xx.c                    |  9 +++------
 hw/arm/xlnx-versal.c                |  9 +++------
 hw/arm/xlnx-zynqmp.c                |  9 +++------
 hw/core/bus.c                       |  2 +-
 hw/core/qdev.c                      |  2 +-
 hw/i386/pc_piix.c                   | 19 ++++++-------------
 hw/microblaze/petalogix_ml605_mmu.c |  5 ++---
 hw/microblaze/xlnx-zynqmp-pmu.c     | 18 +++++++-----------
 hw/mips/cps.c                       |  3 +--
 hw/ppc/e500.c                       |  3 +--
 hw/ppc/spapr_pci.c                  |  3 +--
 hw/rx/rx-gdbsim.c                   |  4 ++--
 hw/sparc/sun4m.c                    |  3 +--
 28 files changed, 64 insertions(+), 105 deletions(-)

diff --git a/hw/acpi/cpu_hotplug.c b/hw/acpi/cpu_hotplug.c
index 634bbecb31..1338c037b5 100644
--- a/hw/acpi/cpu_hotplug.c
+++ b/hw/acpi/cpu_hotplug.c
@@ -12,6 +12,7 @@
 #include "qemu/osdep.h"
 #include "hw/acpi/cpu_hotplug.h"
 #include "qapi/error.h"
+#include "hw/qdev-properties.h"
 #include "hw/core/cpu.h"
 #include "hw/i386/pc.h"
 #include "hw/pci/pci.h"
@@ -41,8 +42,7 @@ static void cpu_status_write(void *opaque, hwaddr addr, uint64_t data,
      */
     if (addr == 0 && data == 0) {
         AcpiCpuHotplug *cpus = opaque;
-        object_property_set_bool(cpus->device, "cpu-hotplug-legacy", false,
-                                 &error_abort);
+        qdev_prop_set_bit(DEVICE(cpus->device), "cpu-hotplug-legacy", false);
     }
 }
 
@@ -66,8 +66,7 @@ static void acpi_set_cpu_present_bit(AcpiCpuHotplug *g, CPUState *cpu)
 
     cpu_id = k->get_arch_id(cpu);
     if ((cpu_id / 8) >= ACPI_GPE_PROC_LEN) {
-        object_property_set_bool(g->device, "cpu-hotplug-legacy", false,
-                                 &error_abort);
+        qdev_prop_set_bit(DEVICE(g->device), "cpu-hotplug-legacy", false);
         return;
     }
 
diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c
index 25e2c7243e..64b00673fe 100644
--- a/hw/acpi/ich9.c
+++ b/hw/acpi/ich9.c
@@ -30,6 +30,7 @@
 #include "hw/pci/pci.h"
 #include "migration/vmstate.h"
 #include "qemu/timer.h"
+#include "hw/qdev-properties.h"
 #include "hw/core/cpu.h"
 #include "sysemu/reset.h"
 #include "sysemu/runstate.h"
@@ -197,8 +198,7 @@ static bool vmstate_test_use_cpuhp(void *opaque)
 static int vmstate_cpuhp_pre_load(void *opaque)
 {
     ICH9LPCPMRegs *s = opaque;
-    Object *obj = OBJECT(s->gpe_cpu.device);
-    object_property_set_bool(obj, "cpu-hotplug-legacy", false, &error_abort);
+    qdev_prop_set_bit(DEVICE(s->gpe_cpu.device), "cpu-hotplug-legacy", false);
     return 0;
 }
 
diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
index dd523d2e4c..215929ac6a 100644
--- a/hw/acpi/piix4.c
+++ b/hw/acpi/piix4.c
@@ -203,8 +203,8 @@ static bool vmstate_test_use_cpuhp(void *opaque)
 
 static int vmstate_cpuhp_pre_load(void *opaque)
 {
-    Object *obj = OBJECT(opaque);
-    object_property_set_bool(obj, "cpu-hotplug-legacy", false, &error_abort);
+    DeviceState *dev = DEVICE(opaque);
+    qdev_prop_set_bit(dev, "cpu-hotplug-legacy", false);
     return 0;
 }
 
diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c
index 4672df180f..546b15e658 100644
--- a/hw/arm/armsse.c
+++ b/hw/arm/armsse.c
@@ -1022,8 +1022,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
          * later if necessary.
          */
         if (extract32(info->cpuwait_rst, i, 1)) {
-            object_property_set_bool(cpuobj, "start-powered-off", true,
-                                     &error_abort);
+            qdev_prop_set_bit(cpudev, "start-powered-off", true);
         }
         if (!s->cpu_fpu[i]) {
             if (!object_property_set_bool(cpuobj, "vfp", false, errp)) {
diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c
index cbaebe9bf8..3a6d72b0f3 100644
--- a/hw/arm/armv7m.c
+++ b/hw/arm/armv7m.c
@@ -328,8 +328,7 @@ static void armv7m_realize(DeviceState *dev, Error **errp)
             return;
         }
     }
-    object_property_set_bool(OBJECT(s->cpu), "start-powered-off",
-                             s->start_powered_off, &error_abort);
+    qdev_prop_set_bit(DEVICE(s->cpu), "start-powered-off", s->start_powered_off);
 
     /*
      * Real M-profile hardware can be configured with a different number of
diff --git a/hw/arm/aspeed_ast2400.c b/hw/arm/aspeed_ast2400.c
index a4334c81b8..4a247bfcbb 100644
--- a/hw/arm/aspeed_ast2400.c
+++ b/hw/arm/aspeed_ast2400.c
@@ -420,8 +420,7 @@ static void aspeed_ast2400_soc_realize(DeviceState *dev, Error **errp)
 
     /* Net */
     for (i = 0; i < sc->macs_num; i++) {
-        object_property_set_bool(OBJECT(&s->ftgmac100[i]), "aspeed", true,
-                                 &error_abort);
+        qdev_prop_set_bit(DEVICE(&s->ftgmac100[i]), "aspeed", true);
         if (!sysbus_realize(SYS_BUS_DEVICE(&s->ftgmac100[i]), errp)) {
             return;
         }
diff --git a/hw/arm/aspeed_ast2600.c b/hw/arm/aspeed_ast2600.c
index b965fbab5e..5ec8ad73cd 100644
--- a/hw/arm/aspeed_ast2600.c
+++ b/hw/arm/aspeed_ast2600.c
@@ -317,10 +317,8 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
 
         object_property_set_int(OBJECT(&a->cpu[i]), "cntfrq", 1125000000,
                                 &error_abort);
-        object_property_set_bool(OBJECT(&a->cpu[i]), "neon", false,
-                                &error_abort);
-        object_property_set_bool(OBJECT(&a->cpu[i]), "vfp-d32", false,
-                                &error_abort);
+        qdev_prop_set_bit(DEVICE(&a->cpu[i]), "neon", false);
+        qdev_prop_set_bit(DEVICE(&a->cpu[i]), "vfp-d32", false);
         object_property_set_link(OBJECT(&a->cpu[i]), "memory",
                                  OBJECT(s->memory), &error_abort);
 
@@ -500,8 +498,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
 
     /* Net */
     for (i = 0; i < sc->macs_num; i++) {
-        object_property_set_bool(OBJECT(&s->ftgmac100[i]), "aspeed", true,
-                                 &error_abort);
+        qdev_prop_set_bit(DEVICE(&s->ftgmac100[i]), "aspeed", true);
         if (!sysbus_realize(SYS_BUS_DEVICE(&s->ftgmac100[i]), errp)) {
             return;
         }
diff --git a/hw/arm/bcm2835_peripherals.c b/hw/arm/bcm2835_peripherals.c
index 0233038b95..c07ca8817b 100644
--- a/hw/arm/bcm2835_peripherals.c
+++ b/hw/arm/bcm2835_peripherals.c
@@ -303,8 +303,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
                              &error_abort);
     object_property_set_uint(OBJECT(&s->sdhci), "capareg",
                              BCM2835_SDHC_CAPAREG, &error_abort);
-    object_property_set_bool(OBJECT(&s->sdhci), "pending-insert-quirk", true,
-                             &error_abort);
+    qdev_prop_set_bit(DEVICE(&s->sdhci), "pending-insert-quirk", true);
     if (!sysbus_realize(SYS_BUS_DEVICE(&s->sdhci), errp)) {
         return;
     }
diff --git a/hw/arm/bcm2836.c b/hw/arm/bcm2836.c
index b0674a22a6..1fdc3be6bb 100644
--- a/hw/arm/bcm2836.c
+++ b/hw/arm/bcm2836.c
@@ -135,8 +135,8 @@ static void bcm2836_realize(DeviceState *dev, Error **errp)
                                 bc->peri_base, &error_abort);
 
         /* start powered off if not enabled */
-        object_property_set_bool(OBJECT(&s->cpu[n].core), "start-powered-off",
-                                 n >= s->enabled_cpus, &error_abort);
+        qdev_prop_set_bit(DEVICE(&s->cpu[n].core), "start-powered-off",
+                          n >= s->enabled_cpus);
 
         if (!qdev_realize(DEVICE(&s->cpu[n].core), NULL, errp)) {
             return;
diff --git a/hw/arm/boot.c b/hw/arm/boot.c
index 84ea6a807a..ebed887e5e 100644
--- a/hw/arm/boot.c
+++ b/hw/arm/boot.c
@@ -12,6 +12,7 @@
 #include "qemu/error-report.h"
 #include "qapi/error.h"
 #include <libfdt.h>
+#include "hw/qdev-properties.h"
 #include "hw/arm/boot.h"
 #include "hw/arm/linux-boot-if.h"
 #include "sysemu/kvm.h"
@@ -1287,8 +1288,7 @@ void arm_load_kernel(ARMCPU *cpu, MachineState *ms, struct arm_boot_info *info)
              * CPU.
              */
             if (cs != first_cpu) {
-                object_property_set_bool(cpuobj, "start-powered-off", true,
-                                         &error_abort);
+                qdev_prop_set_bit(DEVICE(cpuobj), "start-powered-off", true);
             }
         }
     }
diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
index 9aabbf7f58..fc6a7c8a8b 100644
--- a/hw/arm/fsl-imx25.c
+++ b/hw/arm/fsl-imx25.c
@@ -272,8 +272,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
     }
 
     /* Watchdog */
-    object_property_set_bool(OBJECT(&s->wdt), "pretimeout-support", true,
-                             &error_abort);
+    qdev_prop_set_bit(DEVICE(&s->wdt), "pretimeout-support", true);
     sysbus_realize(SYS_BUS_DEVICE(&s->wdt), &error_abort);
     sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt), 0, FSL_IMX25_WDT_ADDR);
     sysbus_connect_irq(SYS_BUS_DEVICE(&s->wdt), 0,
diff --git a/hw/arm/fsl-imx31.c b/hw/arm/fsl-imx31.c
index def27bb913..71f50ca802 100644
--- a/hw/arm/fsl-imx31.c
+++ b/hw/arm/fsl-imx31.c
@@ -171,8 +171,7 @@ static void fsl_imx31_realize(DeviceState *dev, Error **errp)
             { FSL_IMX31_GPIO3_ADDR, FSL_IMX31_GPIO3_IRQ }
         };
 
-        object_property_set_bool(OBJECT(&s->gpio[i]), "has-edge-sel", false,
-                                 &error_abort);
+        qdev_prop_set_bit(DEVICE(&s->gpio[i]), "has-edge-sel", false);
         if (!sysbus_realize(SYS_BUS_DEVICE(&s->gpio[i]), errp)) {
             return;
         }
diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
index 7dc42cbfe6..17c399a37e 100644
--- a/hw/arm/fsl-imx6.c
+++ b/hw/arm/fsl-imx6.c
@@ -128,8 +128,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
 
         /* All CPU but CPU 0 start in power off mode */
         if (i) {
-            object_property_set_bool(OBJECT(&s->cpu[i]), "start-powered-off",
-                                     true, &error_abort);
+            qdev_prop_set_bit(DEVICE(&s->cpu[i]), "start-powered-off", true);
         }
 
         if (!qdev_realize(DEVICE(&s->cpu[i]), NULL, errp)) {
@@ -288,10 +287,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
             },
         };
 
-        object_property_set_bool(OBJECT(&s->gpio[i]), "has-edge-sel", true,
-                                 &error_abort);
-        object_property_set_bool(OBJECT(&s->gpio[i]), "has-upper-pin-irq",
-                                 true, &error_abort);
+        qdev_prop_set_bit(DEVICE(&s->gpio[i]), "has-edge-sel", true);
+        qdev_prop_set_bit(DEVICE(&s->gpio[i]), "has-upper-pin-irq", true);
         if (!sysbus_realize(SYS_BUS_DEVICE(&s->gpio[i]), errp)) {
             return;
         }
@@ -412,8 +409,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
             FSL_IMX6_WDOG2_IRQ,
         };
 
-        object_property_set_bool(OBJECT(&s->wdt[i]), "pretimeout-support",
-                                 true, &error_abort);
+        qdev_prop_set_bit(DEVICE(&s->wdt[i]), "pretimeout-support", true);
         sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), &error_abort);
 
         sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt[i]), 0, FSL_IMX6_WDOGn_ADDR[i]);
diff --git a/hw/arm/fsl-imx6ul.c b/hw/arm/fsl-imx6ul.c
index e37b69a5e1..4f4f2a6f41 100644
--- a/hw/arm/fsl-imx6ul.c
+++ b/hw/arm/fsl-imx6ul.c
@@ -410,8 +410,8 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
      * and we have to set all properties before calling sysbus_realize().
      */
     for (i = 0; i < FSL_IMX6UL_NUM_ETHS; i++) {
-        object_property_set_bool(OBJECT(&s->eth[i]), "phy-connected",
-                                 s->phy_connected[i], &error_abort);
+        qdev_prop_set_bit(DEVICE(&s->eth[i]), "phy-connected",
+                          s->phy_connected[i]);
         /*
          * If the MDIO bus on this controller is not connected, assume the
          * other controller provides support for it.
@@ -542,8 +542,8 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
             FSL_IMX6UL_WDOG3_IRQ,
         };
 
-        object_property_set_bool(OBJECT(&s->wdt[i]), "pretimeout-support",
-                                 true, &error_abort);
+        qdev_prop_set_bit(DEVICE(&s->wdt[i]), "pretimeout-support",
+                          true);
         sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), &error_abort);
 
         sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt[i]), 0,
diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c
index 474cfdc87c..3138ffeb08 100644
--- a/hw/arm/fsl-imx7.c
+++ b/hw/arm/fsl-imx7.c
@@ -192,8 +192,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
              * Secondary CPUs start in powered-down state (and can be
              * powered up via the SRC system reset controller)
              */
-            object_property_set_bool(o, "start-powered-off", true,
-                                     &error_abort);
+            qdev_prop_set_bit(DEVICE(o), "start-powered-off", true);
         }
 
         qdev_realize(DEVICE(o), NULL, &error_abort);
@@ -424,8 +423,8 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
      * and we have to set all properties before calling sysbus_realize().
      */
     for (i = 0; i < FSL_IMX7_NUM_ETHS; i++) {
-        object_property_set_bool(OBJECT(&s->eth[i]), "phy-connected",
-                                 s->phy_connected[i], &error_abort);
+        qdev_prop_set_bit(DEVICE(&s->eth[i]), "phy-connected",
+                          s->phy_connected[i]);
         /*
          * If the MDIO bus on this controller is not connected, assume the
          * other controller provides support for it.
@@ -513,8 +512,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
             FSL_IMX7_WDOG4_IRQ,
         };
 
-        object_property_set_bool(OBJECT(&s->wdt[i]), "pretimeout-support",
-                                 true, &error_abort);
+        qdev_prop_set_bit(DEVICE(&s->wdt[i]), "pretimeout-support", true);
         sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), &error_abort);
 
         sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt[i]), 0, FSL_IMX7_WDOGn_ADDR[i]);
diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c
index 15ff21d047..7022df3cfa 100644
--- a/hw/arm/npcm7xx.c
+++ b/hw/arm/npcm7xx.c
@@ -478,12 +478,10 @@ static void npcm7xx_realize(DeviceState *dev, Error **errp)
                                 &error_abort);
         object_property_set_int(OBJECT(&s->cpu[i]), "reset-cbar",
                                 NPCM7XX_GIC_CPU_IF_ADDR, &error_abort);
-        object_property_set_bool(OBJECT(&s->cpu[i]), "reset-hivecs", true,
-                                 &error_abort);
+        qdev_prop_set_bit(DEVICE(&s->cpu[i]), "reset-hivecs", true);
 
         /* Disable security extensions. */
-        object_property_set_bool(OBJECT(&s->cpu[i]), "has_el3", false,
-                                 &error_abort);
+        qdev_prop_set_bit(DEVICE(&s->cpu[i]), "has_el3", false);
 
         if (!qdev_realize(DEVICE(&s->cpu[i]), NULL, errp)) {
             return;
@@ -613,8 +611,7 @@ static void npcm7xx_realize(DeviceState *dev, Error **errp)
     }
 
     /* USB Host */
-    object_property_set_bool(OBJECT(&s->ehci), "companion-enable", true,
-                             &error_abort);
+    qdev_prop_set_bit(DEVICE(&s->ehci), "companion-enable", true);
     sysbus_realize(SYS_BUS_DEVICE(&s->ehci), &error_abort);
     sysbus_mmio_map(SYS_BUS_DEVICE(&s->ehci), 0, NPCM7XX_EHCI_BA);
     sysbus_connect_irq(SYS_BUS_DEVICE(&s->ehci), 0,
diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c
index 9600551c44..e3b730f5f5 100644
--- a/hw/arm/xlnx-versal.c
+++ b/hw/arm/xlnx-versal.c
@@ -48,8 +48,7 @@ static void versal_create_apu_cpus(Versal *s)
         obj = OBJECT(&s->fpd.apu.cpu[i]);
         if (i) {
             /* Secondary CPUs start in powered-down state */
-            object_property_set_bool(obj, "start-powered-off", true,
-                                     &error_abort);
+            qdev_prop_set_bit(DEVICE(obj), "start-powered-off", true);
         }
 
         object_property_set_int(obj, "core-count", ARRAY_SIZE(s->fpd.apu.cpu),
@@ -150,8 +149,7 @@ static void versal_create_rpu_cpus(Versal *s)
                                 "rpu-cpu[*]", &s->lpd.rpu.cpu[i],
                                 XLNX_VERSAL_RCPU_TYPE);
         obj = OBJECT(&s->lpd.rpu.cpu[i]);
-        object_property_set_bool(obj, "start-powered-off", true,
-                                 &error_abort);
+        qdev_prop_set_bit(DEVICE(obj), "start-powered-off", true);
 
         object_property_set_int(obj, "mp-affinity", 0x100 | i, &error_abort);
         object_property_set_int(obj, "core-count", ARRAY_SIZE(s->lpd.rpu.cpu),
@@ -536,8 +534,7 @@ static void versal_create_ospi(Versal *s, qemu_irq *pic)
                             &s->pmc.iou.ospi.dma_src,
                             TYPE_XLNX_CSU_DMA);
 
-    object_property_set_bool(OBJECT(&s->pmc.iou.ospi.dma_src), "is-dst",
-                             false, &error_abort);
+    qdev_prop_set_bit(DEVICE(&s->pmc.iou.ospi.dma_src), "is-dst", false);
 
     object_property_set_link(OBJECT(&s->pmc.iou.ospi.dma_src),
                             "dma", OBJECT(mr_dac), &error_abort);
diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
index 5905a33015..f3ca3a7527 100644
--- a/hw/arm/xlnx-zynqmp.c
+++ b/hw/arm/xlnx-zynqmp.c
@@ -237,14 +237,12 @@ static void xlnx_zynqmp_create_rpu(MachineState *ms, XlnxZynqMPState *s,
             /*
              * Secondary CPUs start in powered-down state.
              */
-            object_property_set_bool(OBJECT(&s->rpu_cpu[i]),
-                                     "start-powered-off", true, &error_abort);
+            qdev_prop_set_bit(DEVICE(&s->rpu_cpu[i]), "start-powered-off", true);
         } else {
             s->boot_cpu_ptr = &s->rpu_cpu[i];
         }
 
-        object_property_set_bool(OBJECT(&s->rpu_cpu[i]), "reset-hivecs", true,
-                                 &error_abort);
+        qdev_prop_set_bit(DEVICE(&s->rpu_cpu[i]), "reset-hivecs", true);
         if (!qdev_realize(DEVICE(&s->rpu_cpu[i]), NULL, errp)) {
             return;
         }
@@ -518,8 +516,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp)
             /*
              * Secondary CPUs start in powered-down state.
              */
-            object_property_set_bool(OBJECT(&s->apu_cpu[i]),
-                                     "start-powered-off", true, &error_abort);
+            qdev_prop_set_bit(DEVICE(&s->apu_cpu[i]), "start-powered-off", true);
         } else {
             s->boot_cpu_ptr = &s->apu_cpu[i];
         }
diff --git a/hw/core/bus.c b/hw/core/bus.c
index c7831b5293..a24ebe5886 100644
--- a/hw/core/bus.c
+++ b/hw/core/bus.c
@@ -176,7 +176,7 @@ bool qbus_realize(BusState *bus, Error **errp)
 
 void qbus_unrealize(BusState *bus)
 {
-    object_property_set_bool(OBJECT(bus), "realized", false, &error_abort);
+    qdev_prop_set_bit(DEVICE(bus), "realized", false);
 }
 
 static bool bus_get_realized(Object *obj, Error **errp)
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 43d863b0c5..f4aa99ed77 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -303,7 +303,7 @@ bool qdev_realize_and_unref(DeviceState *dev, BusState *bus, Error **errp)
 
 void qdev_unrealize(DeviceState *dev)
 {
-    object_property_set_bool(OBJECT(dev), "realized", false, &error_abort);
+    qdev_prop_set_bit(dev, "realized", false);
 }
 
 static int qdev_assert_realized_properly_cb(Object *obj, void *opaque)
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index eace854335..6733652120 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -263,20 +263,13 @@ static void pc_init1(MachineState *machine,
         size_t i;
 
         pci_dev = pci_new_multifunction(-1, pcms->south_bridge);
-        object_property_set_bool(OBJECT(pci_dev), "has-usb",
-                                 machine_usb(machine), &error_abort);
-        object_property_set_bool(OBJECT(pci_dev), "has-acpi",
-                                 x86_machine_is_acpi_enabled(x86ms),
-                                 &error_abort);
-        object_property_set_bool(OBJECT(pci_dev), "has-pic", false,
-                                 &error_abort);
-        object_property_set_bool(OBJECT(pci_dev), "has-pit", false,
-                                 &error_abort);
-        qdev_prop_set_uint32(DEVICE(pci_dev), "smb_io_base", 0xb100);
-        object_property_set_bool(OBJECT(pci_dev), "smm-enabled",
-                                 x86_machine_is_smm_enabled(x86ms),
-                                 &error_abort);
         dev = DEVICE(pci_dev);
+        qdev_prop_set_bit(dev, "has-usb", machine_usb(machine));
+        qdev_prop_set_bit(dev, "has-acpi", x86_machine_is_acpi_enabled(x86ms));
+        qdev_prop_set_bit(dev, "has-pic", false);
+        qdev_prop_set_bit(dev, "has-pit", false);
+        qdev_prop_set_uint32(DEVICE(pci_dev), "smb_io_base", 0xb100);
+        qdev_prop_set_bit(dev, "smm-enabled", x86_machine_is_smm_enabled(x86ms));
         for (i = 0; i < ISA_NUM_IRQS; i++) {
             qdev_connect_gpio_out_named(dev, "isa-irqs", i, x86ms->gsi[i]);
         }
diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_ml605_mmu.c
index fb7889cf67..626f9b0b56 100644
--- a/hw/microblaze/petalogix_ml605_mmu.c
+++ b/hw/microblaze/petalogix_ml605_mmu.c
@@ -88,9 +88,8 @@ petalogix_ml605_init(MachineState *machine)
      * root instructions
      */
     object_property_set_int(OBJECT(cpu), "use-fpu", 1, &error_abort);
-    object_property_set_bool(OBJECT(cpu), "dcache-writeback", true,
-                             &error_abort);
-    object_property_set_bool(OBJECT(cpu), "endianness", true, &error_abort);
+    qdev_prop_set_bit(DEVICE(cpu), "dcache-writeback", true);
+    qdev_prop_set_bit(DEVICE(cpu), "endianness", true);
     qdev_realize(DEVICE(cpu), NULL, &error_abort);
 
     /* Attach emulated BRAM through the LMB.  */
diff --git a/hw/microblaze/xlnx-zynqmp-pmu.c b/hw/microblaze/xlnx-zynqmp-pmu.c
index 5a2016672a..19cc5efee3 100644
--- a/hw/microblaze/xlnx-zynqmp-pmu.c
+++ b/hw/microblaze/xlnx-zynqmp-pmu.c
@@ -18,6 +18,7 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "exec/address-spaces.h"
+#include "hw/qdev-properties.h"
 #include "hw/boards.h"
 #include "cpu.h"
 #include "boot.h"
@@ -79,19 +80,14 @@ static void xlnx_zynqmp_pmu_soc_realize(DeviceState *dev, Error **errp)
 
     object_property_set_uint(OBJECT(&s->cpu), "base-vectors",
                              XLNX_ZYNQMP_PMU_ROM_ADDR, &error_abort);
-    object_property_set_bool(OBJECT(&s->cpu), "use-stack-protection", true,
-                             &error_abort);
+    qdev_prop_set_bit(DEVICE(&s->cpu), "use-stack-protection", true);
     object_property_set_uint(OBJECT(&s->cpu), "use-fpu", 0, &error_abort);
     object_property_set_uint(OBJECT(&s->cpu), "use-hw-mul", 0, &error_abort);
-    object_property_set_bool(OBJECT(&s->cpu), "use-barrel", true,
-                             &error_abort);
-    object_property_set_bool(OBJECT(&s->cpu), "use-msr-instr", true,
-                             &error_abort);
-    object_property_set_bool(OBJECT(&s->cpu), "use-pcmp-instr", true,
-                             &error_abort);
-    object_property_set_bool(OBJECT(&s->cpu), "use-mmu", false, &error_abort);
-    object_property_set_bool(OBJECT(&s->cpu), "endianness", true,
-                             &error_abort);
+    qdev_prop_set_bit(DEVICE(&s->cpu), "use-barrel", true);
+    qdev_prop_set_bit(DEVICE(&s->cpu), "use-msr-instr", true);
+    qdev_prop_set_bit(DEVICE(&s->cpu), "use-pcmp-instr", true);
+    qdev_prop_set_bit(DEVICE(&s->cpu), "use-mmu", false);
+    qdev_prop_set_bit(DEVICE(&s->cpu), "endianness", true);
     object_property_set_str(OBJECT(&s->cpu), "version", "8.40.b",
                             &error_abort);
     object_property_set_uint(OBJECT(&s->cpu), "pvr", 0, &error_abort);
diff --git a/hw/mips/cps.c b/hw/mips/cps.c
index 4f12e23ab5..ee2a8d5563 100644
--- a/hw/mips/cps.c
+++ b/hw/mips/cps.c
@@ -78,8 +78,7 @@ static void mips_cps_realize(DeviceState *dev, Error **errp)
         CPUMIPSState *env = &cpu->env;
 
         /* All VPs are halted on reset. Leave powering up to CPC. */
-        object_property_set_bool(OBJECT(cpu), "start-powered-off", true,
-                                 &error_abort);
+        qdev_prop_set_bit(DEVICE(cpu), "start-powered-off", true);
 
         /* All cores use the same clock tree */
         qdev_connect_clock_in(DEVICE(cpu), "clk-in", s->clock);
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index 566f1200dd..a63d48c512 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -954,8 +954,7 @@ void ppce500_init(MachineState *machine)
          * Secondary CPU starts in halted state for now. Needs to change
          * when implementing non-kernel boot.
          */
-        object_property_set_bool(OBJECT(cs), "start-powered-off", i != 0,
-                                 &error_abort);
+        qdev_prop_set_bit(DEVICE(cs), "start-powered-off", i != 0);
         qdev_realize_and_unref(DEVICE(cs), NULL, &error_fatal);
 
         if (!firstenv) {
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 6760823e13..266cf6c9e6 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -2490,8 +2490,7 @@ static int spapr_switch_one_vga(DeviceState *dev, void *opaque)
         || object_dynamic_cast(OBJECT(dev), "secondary-vga")
         || object_dynamic_cast(OBJECT(dev), "bochs-display")
         || object_dynamic_cast(OBJECT(dev), "virtio-vga")) {
-        object_property_set_bool(OBJECT(dev), "big-endian-framebuffer", be,
-                                 &error_abort);
+        qdev_prop_set_bit(dev, "big-endian-framebuffer", be);
     }
     return 0;
 }
diff --git a/hw/rx/rx-gdbsim.c b/hw/rx/rx-gdbsim.c
index 47c17026c7..53d3d560c8 100644
--- a/hw/rx/rx-gdbsim.c
+++ b/hw/rx/rx-gdbsim.c
@@ -21,6 +21,7 @@
 #include "qemu/error-report.h"
 #include "qemu/guest-random.h"
 #include "qapi/error.h"
+#include "hw/qdev-properties.h"
 #include "hw/loader.h"
 #include "hw/rx/rx62n.h"
 #include "sysemu/qtest.h"
@@ -103,8 +104,7 @@ static void rx_gdbsim_init(MachineState *machine)
                              &error_abort);
     object_property_set_uint(OBJECT(&s->mcu), "xtal-frequency-hz",
                              rxc->xtal_freq_hz, &error_abort);
-    object_property_set_bool(OBJECT(&s->mcu), "load-kernel",
-                             kernel_filename != NULL, &error_abort);
+    qdev_prop_set_bit(DEVICE(&s->mcu), "load-kernel", kernel_filename != NULL);
 
     if (!kernel_filename) {
         if (machine->firmware) {
diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index 64895aebe3..d631d555d8 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -803,8 +803,7 @@ static void cpu_devinit(const char *cpu_type, unsigned int id,
     env = &cpu->env;
 
     qemu_register_reset(sun4m_cpu_reset, cpu);
-    object_property_set_bool(OBJECT(cpu), "start-powered-off", id != 0,
-                             &error_abort);
+    qdev_prop_set_bit(DEVICE(cpu), "start-powered-off", id != 0);
     qdev_realize_and_unref(DEVICE(cpu), NULL, &error_fatal);
     cpu_sparc_set_id(env, id);
     *cpu_irqs = qemu_allocate_irqs(cpu_set_irq, cpu, MAX_PILS);
-- 
2.41.0


Re: [PATCH-for-9.0 v2 5/8] hw: Prefer qdev_prop_set_bit over object_property_set_bool for QDev
Posted by Peter Maydell 11 months, 2 weeks ago
On Thu, 23 Nov 2023 at 14:38, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
>
> The QOM API is lower level than the QDev one. When an instance is
> QDev and setting the property can not fail (using &error_abort),
> prefer qdev_prop_set_bit() over object_property_set_bool().
>
> Mechanical transformation using the following coccinelle patch:
>
>   @@
>   expression o, p, v;
>   @@
>   -            object_property_set_bool(OBJECT(o), p, v, &error_abort)
>   +            qdev_prop_set_bit(DEVICE(o), p, v)
>   @@@@
>   -            object_property_set_bool(o, p, v, &error_abort)
>   +            qdev_prop_set_bit(DEVICE(o), p, v)
>
> manually adding the missing "hw/qdev-properties.h" header.
>
> In hw/arm/armsse.c we use the available 'cpudev' instead of 'cpuobj'.
>
> Suggested-by: Markus Armbruster <armbru@redhat.com>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>

> @@ -1287,8 +1288,7 @@ void arm_load_kernel(ARMCPU *cpu, MachineState *ms, struct arm_boot_info *info)
>               * CPU.
>               */
>              if (cs != first_cpu) {
> -                object_property_set_bool(cpuobj, "start-powered-off", true,
> -                                         &error_abort);
> +                qdev_prop_set_bit(DEVICE(cpuobj), "start-powered-off", true);
>              }
>          }
>      }

This makes this code look a bit weird. Currently we have a loop
which has an "Object *cpuobj" which it uses to set properties,
in both cases using the object_property_* APIs. With this change,
we do half the job using a QOM API and the other half using
a qdev API. It would be good to follow up by converting the
other property-set so we can have a local Device * instead of
the Object *.


> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index eace854335..6733652120 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -263,20 +263,13 @@ static void pc_init1(MachineState *machine,
>          size_t i;
>
>          pci_dev = pci_new_multifunction(-1, pcms->south_bridge);
> -        object_property_set_bool(OBJECT(pci_dev), "has-usb",
> -                                 machine_usb(machine), &error_abort);
> -        object_property_set_bool(OBJECT(pci_dev), "has-acpi",
> -                                 x86_machine_is_acpi_enabled(x86ms),
> -                                 &error_abort);
> -        object_property_set_bool(OBJECT(pci_dev), "has-pic", false,
> -                                 &error_abort);
> -        object_property_set_bool(OBJECT(pci_dev), "has-pit", false,
> -                                 &error_abort);
> -        qdev_prop_set_uint32(DEVICE(pci_dev), "smb_io_base", 0xb100);
> -        object_property_set_bool(OBJECT(pci_dev), "smm-enabled",
> -                                 x86_machine_is_smm_enabled(x86ms),
> -                                 &error_abort);
>          dev = DEVICE(pci_dev);
> +        qdev_prop_set_bit(dev, "has-usb", machine_usb(machine));
> +        qdev_prop_set_bit(dev, "has-acpi", x86_machine_is_acpi_enabled(x86ms));
> +        qdev_prop_set_bit(dev, "has-pic", false);
> +        qdev_prop_set_bit(dev, "has-pit", false);
> +        qdev_prop_set_uint32(DEVICE(pci_dev), "smb_io_base", 0xb100);

This line also can just use "dev".

> +        qdev_prop_set_bit(dev, "smm-enabled", x86_machine_is_smm_enabled(x86ms));
>          for (i = 0; i < ISA_NUM_IRQS; i++) {
>              qdev_connect_gpio_out_named(dev, "isa-irqs", i, x86ms->gsi[i]);
>          }

Otherwise
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

thanks
-- PMM
Re: [PATCH-for-9.0 v2 5/8] hw: Prefer qdev_prop_set_bit over object_property_set_bool for QDev
Posted by Harsh Prateek Bora 1 year ago

On 11/23/23 20:08, Philippe Mathieu-Daudé wrote:
> The QOM API is lower level than the QDev one. When an instance is
> QDev and setting the property can not fail (using &error_abort),
> prefer qdev_prop_set_bit() over object_property_set_bool().
> 
> Mechanical transformation using the following coccinelle patch:
> 
>    @@
>    expression o, p, v;
>    @@
>    -            object_property_set_bool(OBJECT(o), p, v, &error_abort)
>    +            qdev_prop_set_bit(DEVICE(o), p, v)
>    @@@@
>    -            object_property_set_bool(o, p, v, &error_abort)
>    +            qdev_prop_set_bit(DEVICE(o), p, v)
> 
> manually adding the missing "hw/qdev-properties.h" header.
> 
> In hw/arm/armsse.c we use the available 'cpudev' instead of 'cpuobj'.
> 
> Suggested-by: Markus Armbruster <armbru@redhat.com>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   hw/acpi/cpu_hotplug.c               |  7 +++----
>   hw/acpi/ich9.c                      |  4 ++--
>   hw/acpi/piix4.c                     |  4 ++--
>   hw/arm/armsse.c                     |  3 +--
>   hw/arm/armv7m.c                     |  3 +--
>   hw/arm/aspeed_ast2400.c             |  3 +--
>   hw/arm/aspeed_ast2600.c             |  9 +++------
>   hw/arm/bcm2835_peripherals.c        |  3 +--
>   hw/arm/bcm2836.c                    |  4 ++--
>   hw/arm/boot.c                       |  4 ++--
>   hw/arm/fsl-imx25.c                  |  3 +--
>   hw/arm/fsl-imx31.c                  |  3 +--
>   hw/arm/fsl-imx6.c                   | 12 ++++--------
>   hw/arm/fsl-imx6ul.c                 |  8 ++++----
>   hw/arm/fsl-imx7.c                   | 10 ++++------
>   hw/arm/npcm7xx.c                    |  9 +++------
>   hw/arm/xlnx-versal.c                |  9 +++------
>   hw/arm/xlnx-zynqmp.c                |  9 +++------
>   hw/core/bus.c                       |  2 +-
>   hw/core/qdev.c                      |  2 +-
>   hw/i386/pc_piix.c                   | 19 ++++++-------------
>   hw/microblaze/petalogix_ml605_mmu.c |  5 ++---
>   hw/microblaze/xlnx-zynqmp-pmu.c     | 18 +++++++-----------
>   hw/mips/cps.c                       |  3 +--
>   hw/ppc/e500.c                       |  3 +--
>   hw/ppc/spapr_pci.c                  |  3 +--

For spapr:
Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com>

>   hw/rx/rx-gdbsim.c                   |  4 ++--
>   hw/sparc/sun4m.c                    |  3 +--
>   28 files changed, 64 insertions(+), 105 deletions(-)
> 
> diff --git a/hw/acpi/cpu_hotplug.c b/hw/acpi/cpu_hotplug.c
> index 634bbecb31..1338c037b5 100644
> --- a/hw/acpi/cpu_hotplug.c
> +++ b/hw/acpi/cpu_hotplug.c
> @@ -12,6 +12,7 @@
>   #include "qemu/osdep.h"
>   #include "hw/acpi/cpu_hotplug.h"
>   #include "qapi/error.h"
> +#include "hw/qdev-properties.h"
>   #include "hw/core/cpu.h"
>   #include "hw/i386/pc.h"
>   #include "hw/pci/pci.h"
> @@ -41,8 +42,7 @@ static void cpu_status_write(void *opaque, hwaddr addr, uint64_t data,
>        */
>       if (addr == 0 && data == 0) {
>           AcpiCpuHotplug *cpus = opaque;
> -        object_property_set_bool(cpus->device, "cpu-hotplug-legacy", false,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(cpus->device), "cpu-hotplug-legacy", false);
>       }
>   }
>   
> @@ -66,8 +66,7 @@ static void acpi_set_cpu_present_bit(AcpiCpuHotplug *g, CPUState *cpu)
>   
>       cpu_id = k->get_arch_id(cpu);
>       if ((cpu_id / 8) >= ACPI_GPE_PROC_LEN) {
> -        object_property_set_bool(g->device, "cpu-hotplug-legacy", false,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(g->device), "cpu-hotplug-legacy", false);
>           return;
>       }
>   
> diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c
> index 25e2c7243e..64b00673fe 100644
> --- a/hw/acpi/ich9.c
> +++ b/hw/acpi/ich9.c
> @@ -30,6 +30,7 @@
>   #include "hw/pci/pci.h"
>   #include "migration/vmstate.h"
>   #include "qemu/timer.h"
> +#include "hw/qdev-properties.h"
>   #include "hw/core/cpu.h"
>   #include "sysemu/reset.h"
>   #include "sysemu/runstate.h"
> @@ -197,8 +198,7 @@ static bool vmstate_test_use_cpuhp(void *opaque)
>   static int vmstate_cpuhp_pre_load(void *opaque)
>   {
>       ICH9LPCPMRegs *s = opaque;
> -    Object *obj = OBJECT(s->gpe_cpu.device);
> -    object_property_set_bool(obj, "cpu-hotplug-legacy", false, &error_abort);
> +    qdev_prop_set_bit(DEVICE(s->gpe_cpu.device), "cpu-hotplug-legacy", false);
>       return 0;
>   }
>   
> diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
> index dd523d2e4c..215929ac6a 100644
> --- a/hw/acpi/piix4.c
> +++ b/hw/acpi/piix4.c
> @@ -203,8 +203,8 @@ static bool vmstate_test_use_cpuhp(void *opaque)
>   
>   static int vmstate_cpuhp_pre_load(void *opaque)
>   {
> -    Object *obj = OBJECT(opaque);
> -    object_property_set_bool(obj, "cpu-hotplug-legacy", false, &error_abort);
> +    DeviceState *dev = DEVICE(opaque);
> +    qdev_prop_set_bit(dev, "cpu-hotplug-legacy", false);
>       return 0;
>   }
>   
> diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c
> index 4672df180f..546b15e658 100644
> --- a/hw/arm/armsse.c
> +++ b/hw/arm/armsse.c
> @@ -1022,8 +1022,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
>            * later if necessary.
>            */
>           if (extract32(info->cpuwait_rst, i, 1)) {
> -            object_property_set_bool(cpuobj, "start-powered-off", true,
> -                                     &error_abort);
> +            qdev_prop_set_bit(cpudev, "start-powered-off", true);
>           }
>           if (!s->cpu_fpu[i]) {
>               if (!object_property_set_bool(cpuobj, "vfp", false, errp)) {
> diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c
> index cbaebe9bf8..3a6d72b0f3 100644
> --- a/hw/arm/armv7m.c
> +++ b/hw/arm/armv7m.c
> @@ -328,8 +328,7 @@ static void armv7m_realize(DeviceState *dev, Error **errp)
>               return;
>           }
>       }
> -    object_property_set_bool(OBJECT(s->cpu), "start-powered-off",
> -                             s->start_powered_off, &error_abort);
> +    qdev_prop_set_bit(DEVICE(s->cpu), "start-powered-off", s->start_powered_off);
>   
>       /*
>        * Real M-profile hardware can be configured with a different number of
> diff --git a/hw/arm/aspeed_ast2400.c b/hw/arm/aspeed_ast2400.c
> index a4334c81b8..4a247bfcbb 100644
> --- a/hw/arm/aspeed_ast2400.c
> +++ b/hw/arm/aspeed_ast2400.c
> @@ -420,8 +420,7 @@ static void aspeed_ast2400_soc_realize(DeviceState *dev, Error **errp)
>   
>       /* Net */
>       for (i = 0; i < sc->macs_num; i++) {
> -        object_property_set_bool(OBJECT(&s->ftgmac100[i]), "aspeed", true,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->ftgmac100[i]), "aspeed", true);
>           if (!sysbus_realize(SYS_BUS_DEVICE(&s->ftgmac100[i]), errp)) {
>               return;
>           }
> diff --git a/hw/arm/aspeed_ast2600.c b/hw/arm/aspeed_ast2600.c
> index b965fbab5e..5ec8ad73cd 100644
> --- a/hw/arm/aspeed_ast2600.c
> +++ b/hw/arm/aspeed_ast2600.c
> @@ -317,10 +317,8 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
>   
>           object_property_set_int(OBJECT(&a->cpu[i]), "cntfrq", 1125000000,
>                                   &error_abort);
> -        object_property_set_bool(OBJECT(&a->cpu[i]), "neon", false,
> -                                &error_abort);
> -        object_property_set_bool(OBJECT(&a->cpu[i]), "vfp-d32", false,
> -                                &error_abort);
> +        qdev_prop_set_bit(DEVICE(&a->cpu[i]), "neon", false);
> +        qdev_prop_set_bit(DEVICE(&a->cpu[i]), "vfp-d32", false);
>           object_property_set_link(OBJECT(&a->cpu[i]), "memory",
>                                    OBJECT(s->memory), &error_abort);
>   
> @@ -500,8 +498,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
>   
>       /* Net */
>       for (i = 0; i < sc->macs_num; i++) {
> -        object_property_set_bool(OBJECT(&s->ftgmac100[i]), "aspeed", true,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->ftgmac100[i]), "aspeed", true);
>           if (!sysbus_realize(SYS_BUS_DEVICE(&s->ftgmac100[i]), errp)) {
>               return;
>           }
> diff --git a/hw/arm/bcm2835_peripherals.c b/hw/arm/bcm2835_peripherals.c
> index 0233038b95..c07ca8817b 100644
> --- a/hw/arm/bcm2835_peripherals.c
> +++ b/hw/arm/bcm2835_peripherals.c
> @@ -303,8 +303,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
>                                &error_abort);
>       object_property_set_uint(OBJECT(&s->sdhci), "capareg",
>                                BCM2835_SDHC_CAPAREG, &error_abort);
> -    object_property_set_bool(OBJECT(&s->sdhci), "pending-insert-quirk", true,
> -                             &error_abort);
> +    qdev_prop_set_bit(DEVICE(&s->sdhci), "pending-insert-quirk", true);
>       if (!sysbus_realize(SYS_BUS_DEVICE(&s->sdhci), errp)) {
>           return;
>       }
> diff --git a/hw/arm/bcm2836.c b/hw/arm/bcm2836.c
> index b0674a22a6..1fdc3be6bb 100644
> --- a/hw/arm/bcm2836.c
> +++ b/hw/arm/bcm2836.c
> @@ -135,8 +135,8 @@ static void bcm2836_realize(DeviceState *dev, Error **errp)
>                                   bc->peri_base, &error_abort);
>   
>           /* start powered off if not enabled */
> -        object_property_set_bool(OBJECT(&s->cpu[n].core), "start-powered-off",
> -                                 n >= s->enabled_cpus, &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->cpu[n].core), "start-powered-off",
> +                          n >= s->enabled_cpus);
>   
>           if (!qdev_realize(DEVICE(&s->cpu[n].core), NULL, errp)) {
>               return;
> diff --git a/hw/arm/boot.c b/hw/arm/boot.c
> index 84ea6a807a..ebed887e5e 100644
> --- a/hw/arm/boot.c
> +++ b/hw/arm/boot.c
> @@ -12,6 +12,7 @@
>   #include "qemu/error-report.h"
>   #include "qapi/error.h"
>   #include <libfdt.h>
> +#include "hw/qdev-properties.h"
>   #include "hw/arm/boot.h"
>   #include "hw/arm/linux-boot-if.h"
>   #include "sysemu/kvm.h"
> @@ -1287,8 +1288,7 @@ void arm_load_kernel(ARMCPU *cpu, MachineState *ms, struct arm_boot_info *info)
>                * CPU.
>                */
>               if (cs != first_cpu) {
> -                object_property_set_bool(cpuobj, "start-powered-off", true,
> -                                         &error_abort);
> +                qdev_prop_set_bit(DEVICE(cpuobj), "start-powered-off", true);
>               }
>           }
>       }
> diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
> index 9aabbf7f58..fc6a7c8a8b 100644
> --- a/hw/arm/fsl-imx25.c
> +++ b/hw/arm/fsl-imx25.c
> @@ -272,8 +272,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
>       }
>   
>       /* Watchdog */
> -    object_property_set_bool(OBJECT(&s->wdt), "pretimeout-support", true,
> -                             &error_abort);
> +    qdev_prop_set_bit(DEVICE(&s->wdt), "pretimeout-support", true);
>       sysbus_realize(SYS_BUS_DEVICE(&s->wdt), &error_abort);
>       sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt), 0, FSL_IMX25_WDT_ADDR);
>       sysbus_connect_irq(SYS_BUS_DEVICE(&s->wdt), 0,
> diff --git a/hw/arm/fsl-imx31.c b/hw/arm/fsl-imx31.c
> index def27bb913..71f50ca802 100644
> --- a/hw/arm/fsl-imx31.c
> +++ b/hw/arm/fsl-imx31.c
> @@ -171,8 +171,7 @@ static void fsl_imx31_realize(DeviceState *dev, Error **errp)
>               { FSL_IMX31_GPIO3_ADDR, FSL_IMX31_GPIO3_IRQ }
>           };
>   
> -        object_property_set_bool(OBJECT(&s->gpio[i]), "has-edge-sel", false,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->gpio[i]), "has-edge-sel", false);
>           if (!sysbus_realize(SYS_BUS_DEVICE(&s->gpio[i]), errp)) {
>               return;
>           }
> diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
> index 7dc42cbfe6..17c399a37e 100644
> --- a/hw/arm/fsl-imx6.c
> +++ b/hw/arm/fsl-imx6.c
> @@ -128,8 +128,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
>   
>           /* All CPU but CPU 0 start in power off mode */
>           if (i) {
> -            object_property_set_bool(OBJECT(&s->cpu[i]), "start-powered-off",
> -                                     true, &error_abort);
> +            qdev_prop_set_bit(DEVICE(&s->cpu[i]), "start-powered-off", true);
>           }
>   
>           if (!qdev_realize(DEVICE(&s->cpu[i]), NULL, errp)) {
> @@ -288,10 +287,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
>               },
>           };
>   
> -        object_property_set_bool(OBJECT(&s->gpio[i]), "has-edge-sel", true,
> -                                 &error_abort);
> -        object_property_set_bool(OBJECT(&s->gpio[i]), "has-upper-pin-irq",
> -                                 true, &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->gpio[i]), "has-edge-sel", true);
> +        qdev_prop_set_bit(DEVICE(&s->gpio[i]), "has-upper-pin-irq", true);
>           if (!sysbus_realize(SYS_BUS_DEVICE(&s->gpio[i]), errp)) {
>               return;
>           }
> @@ -412,8 +409,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
>               FSL_IMX6_WDOG2_IRQ,
>           };
>   
> -        object_property_set_bool(OBJECT(&s->wdt[i]), "pretimeout-support",
> -                                 true, &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->wdt[i]), "pretimeout-support", true);
>           sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), &error_abort);
>   
>           sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt[i]), 0, FSL_IMX6_WDOGn_ADDR[i]);
> diff --git a/hw/arm/fsl-imx6ul.c b/hw/arm/fsl-imx6ul.c
> index e37b69a5e1..4f4f2a6f41 100644
> --- a/hw/arm/fsl-imx6ul.c
> +++ b/hw/arm/fsl-imx6ul.c
> @@ -410,8 +410,8 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
>        * and we have to set all properties before calling sysbus_realize().
>        */
>       for (i = 0; i < FSL_IMX6UL_NUM_ETHS; i++) {
> -        object_property_set_bool(OBJECT(&s->eth[i]), "phy-connected",
> -                                 s->phy_connected[i], &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->eth[i]), "phy-connected",
> +                          s->phy_connected[i]);
>           /*
>            * If the MDIO bus on this controller is not connected, assume the
>            * other controller provides support for it.
> @@ -542,8 +542,8 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
>               FSL_IMX6UL_WDOG3_IRQ,
>           };
>   
> -        object_property_set_bool(OBJECT(&s->wdt[i]), "pretimeout-support",
> -                                 true, &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->wdt[i]), "pretimeout-support",
> +                          true);
>           sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), &error_abort);
>   
>           sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt[i]), 0,
> diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c
> index 474cfdc87c..3138ffeb08 100644
> --- a/hw/arm/fsl-imx7.c
> +++ b/hw/arm/fsl-imx7.c
> @@ -192,8 +192,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
>                * Secondary CPUs start in powered-down state (and can be
>                * powered up via the SRC system reset controller)
>                */
> -            object_property_set_bool(o, "start-powered-off", true,
> -                                     &error_abort);
> +            qdev_prop_set_bit(DEVICE(o), "start-powered-off", true);
>           }
>   
>           qdev_realize(DEVICE(o), NULL, &error_abort);
> @@ -424,8 +423,8 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
>        * and we have to set all properties before calling sysbus_realize().
>        */
>       for (i = 0; i < FSL_IMX7_NUM_ETHS; i++) {
> -        object_property_set_bool(OBJECT(&s->eth[i]), "phy-connected",
> -                                 s->phy_connected[i], &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->eth[i]), "phy-connected",
> +                          s->phy_connected[i]);
>           /*
>            * If the MDIO bus on this controller is not connected, assume the
>            * other controller provides support for it.
> @@ -513,8 +512,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
>               FSL_IMX7_WDOG4_IRQ,
>           };
>   
> -        object_property_set_bool(OBJECT(&s->wdt[i]), "pretimeout-support",
> -                                 true, &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->wdt[i]), "pretimeout-support", true);
>           sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), &error_abort);
>   
>           sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt[i]), 0, FSL_IMX7_WDOGn_ADDR[i]);
> diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c
> index 15ff21d047..7022df3cfa 100644
> --- a/hw/arm/npcm7xx.c
> +++ b/hw/arm/npcm7xx.c
> @@ -478,12 +478,10 @@ static void npcm7xx_realize(DeviceState *dev, Error **errp)
>                                   &error_abort);
>           object_property_set_int(OBJECT(&s->cpu[i]), "reset-cbar",
>                                   NPCM7XX_GIC_CPU_IF_ADDR, &error_abort);
> -        object_property_set_bool(OBJECT(&s->cpu[i]), "reset-hivecs", true,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->cpu[i]), "reset-hivecs", true);
>   
>           /* Disable security extensions. */
> -        object_property_set_bool(OBJECT(&s->cpu[i]), "has_el3", false,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->cpu[i]), "has_el3", false);
>   
>           if (!qdev_realize(DEVICE(&s->cpu[i]), NULL, errp)) {
>               return;
> @@ -613,8 +611,7 @@ static void npcm7xx_realize(DeviceState *dev, Error **errp)
>       }
>   
>       /* USB Host */
> -    object_property_set_bool(OBJECT(&s->ehci), "companion-enable", true,
> -                             &error_abort);
> +    qdev_prop_set_bit(DEVICE(&s->ehci), "companion-enable", true);
>       sysbus_realize(SYS_BUS_DEVICE(&s->ehci), &error_abort);
>       sysbus_mmio_map(SYS_BUS_DEVICE(&s->ehci), 0, NPCM7XX_EHCI_BA);
>       sysbus_connect_irq(SYS_BUS_DEVICE(&s->ehci), 0,
> diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c
> index 9600551c44..e3b730f5f5 100644
> --- a/hw/arm/xlnx-versal.c
> +++ b/hw/arm/xlnx-versal.c
> @@ -48,8 +48,7 @@ static void versal_create_apu_cpus(Versal *s)
>           obj = OBJECT(&s->fpd.apu.cpu[i]);
>           if (i) {
>               /* Secondary CPUs start in powered-down state */
> -            object_property_set_bool(obj, "start-powered-off", true,
> -                                     &error_abort);
> +            qdev_prop_set_bit(DEVICE(obj), "start-powered-off", true);
>           }
>   
>           object_property_set_int(obj, "core-count", ARRAY_SIZE(s->fpd.apu.cpu),
> @@ -150,8 +149,7 @@ static void versal_create_rpu_cpus(Versal *s)
>                                   "rpu-cpu[*]", &s->lpd.rpu.cpu[i],
>                                   XLNX_VERSAL_RCPU_TYPE);
>           obj = OBJECT(&s->lpd.rpu.cpu[i]);
> -        object_property_set_bool(obj, "start-powered-off", true,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(obj), "start-powered-off", true);
>   
>           object_property_set_int(obj, "mp-affinity", 0x100 | i, &error_abort);
>           object_property_set_int(obj, "core-count", ARRAY_SIZE(s->lpd.rpu.cpu),
> @@ -536,8 +534,7 @@ static void versal_create_ospi(Versal *s, qemu_irq *pic)
>                               &s->pmc.iou.ospi.dma_src,
>                               TYPE_XLNX_CSU_DMA);
>   
> -    object_property_set_bool(OBJECT(&s->pmc.iou.ospi.dma_src), "is-dst",
> -                             false, &error_abort);
> +    qdev_prop_set_bit(DEVICE(&s->pmc.iou.ospi.dma_src), "is-dst", false);
>   
>       object_property_set_link(OBJECT(&s->pmc.iou.ospi.dma_src),
>                               "dma", OBJECT(mr_dac), &error_abort);
> diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
> index 5905a33015..f3ca3a7527 100644
> --- a/hw/arm/xlnx-zynqmp.c
> +++ b/hw/arm/xlnx-zynqmp.c
> @@ -237,14 +237,12 @@ static void xlnx_zynqmp_create_rpu(MachineState *ms, XlnxZynqMPState *s,
>               /*
>                * Secondary CPUs start in powered-down state.
>                */
> -            object_property_set_bool(OBJECT(&s->rpu_cpu[i]),
> -                                     "start-powered-off", true, &error_abort);
> +            qdev_prop_set_bit(DEVICE(&s->rpu_cpu[i]), "start-powered-off", true);
>           } else {
>               s->boot_cpu_ptr = &s->rpu_cpu[i];
>           }
>   
> -        object_property_set_bool(OBJECT(&s->rpu_cpu[i]), "reset-hivecs", true,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->rpu_cpu[i]), "reset-hivecs", true);
>           if (!qdev_realize(DEVICE(&s->rpu_cpu[i]), NULL, errp)) {
>               return;
>           }
> @@ -518,8 +516,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp)
>               /*
>                * Secondary CPUs start in powered-down state.
>                */
> -            object_property_set_bool(OBJECT(&s->apu_cpu[i]),
> -                                     "start-powered-off", true, &error_abort);
> +            qdev_prop_set_bit(DEVICE(&s->apu_cpu[i]), "start-powered-off", true);
>           } else {
>               s->boot_cpu_ptr = &s->apu_cpu[i];
>           }
> diff --git a/hw/core/bus.c b/hw/core/bus.c
> index c7831b5293..a24ebe5886 100644
> --- a/hw/core/bus.c
> +++ b/hw/core/bus.c
> @@ -176,7 +176,7 @@ bool qbus_realize(BusState *bus, Error **errp)
>   
>   void qbus_unrealize(BusState *bus)
>   {
> -    object_property_set_bool(OBJECT(bus), "realized", false, &error_abort);
> +    qdev_prop_set_bit(DEVICE(bus), "realized", false);
>   }
>   
>   static bool bus_get_realized(Object *obj, Error **errp)
> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> index 43d863b0c5..f4aa99ed77 100644
> --- a/hw/core/qdev.c
> +++ b/hw/core/qdev.c
> @@ -303,7 +303,7 @@ bool qdev_realize_and_unref(DeviceState *dev, BusState *bus, Error **errp)
>   
>   void qdev_unrealize(DeviceState *dev)
>   {
> -    object_property_set_bool(OBJECT(dev), "realized", false, &error_abort);
> +    qdev_prop_set_bit(dev, "realized", false);
>   }
>   
>   static int qdev_assert_realized_properly_cb(Object *obj, void *opaque)
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index eace854335..6733652120 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -263,20 +263,13 @@ static void pc_init1(MachineState *machine,
>           size_t i;
>   
>           pci_dev = pci_new_multifunction(-1, pcms->south_bridge);
> -        object_property_set_bool(OBJECT(pci_dev), "has-usb",
> -                                 machine_usb(machine), &error_abort);
> -        object_property_set_bool(OBJECT(pci_dev), "has-acpi",
> -                                 x86_machine_is_acpi_enabled(x86ms),
> -                                 &error_abort);
> -        object_property_set_bool(OBJECT(pci_dev), "has-pic", false,
> -                                 &error_abort);
> -        object_property_set_bool(OBJECT(pci_dev), "has-pit", false,
> -                                 &error_abort);
> -        qdev_prop_set_uint32(DEVICE(pci_dev), "smb_io_base", 0xb100);
> -        object_property_set_bool(OBJECT(pci_dev), "smm-enabled",
> -                                 x86_machine_is_smm_enabled(x86ms),
> -                                 &error_abort);
>           dev = DEVICE(pci_dev);
> +        qdev_prop_set_bit(dev, "has-usb", machine_usb(machine));
> +        qdev_prop_set_bit(dev, "has-acpi", x86_machine_is_acpi_enabled(x86ms));
> +        qdev_prop_set_bit(dev, "has-pic", false);
> +        qdev_prop_set_bit(dev, "has-pit", false);
> +        qdev_prop_set_uint32(DEVICE(pci_dev), "smb_io_base", 0xb100);
> +        qdev_prop_set_bit(dev, "smm-enabled", x86_machine_is_smm_enabled(x86ms));
>           for (i = 0; i < ISA_NUM_IRQS; i++) {
>               qdev_connect_gpio_out_named(dev, "isa-irqs", i, x86ms->gsi[i]);
>           }
> diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_ml605_mmu.c
> index fb7889cf67..626f9b0b56 100644
> --- a/hw/microblaze/petalogix_ml605_mmu.c
> +++ b/hw/microblaze/petalogix_ml605_mmu.c
> @@ -88,9 +88,8 @@ petalogix_ml605_init(MachineState *machine)
>        * root instructions
>        */
>       object_property_set_int(OBJECT(cpu), "use-fpu", 1, &error_abort);
> -    object_property_set_bool(OBJECT(cpu), "dcache-writeback", true,
> -                             &error_abort);
> -    object_property_set_bool(OBJECT(cpu), "endianness", true, &error_abort);
> +    qdev_prop_set_bit(DEVICE(cpu), "dcache-writeback", true);
> +    qdev_prop_set_bit(DEVICE(cpu), "endianness", true);
>       qdev_realize(DEVICE(cpu), NULL, &error_abort);
>   
>       /* Attach emulated BRAM through the LMB.  */
> diff --git a/hw/microblaze/xlnx-zynqmp-pmu.c b/hw/microblaze/xlnx-zynqmp-pmu.c
> index 5a2016672a..19cc5efee3 100644
> --- a/hw/microblaze/xlnx-zynqmp-pmu.c
> +++ b/hw/microblaze/xlnx-zynqmp-pmu.c
> @@ -18,6 +18,7 @@
>   #include "qemu/osdep.h"
>   #include "qapi/error.h"
>   #include "exec/address-spaces.h"
> +#include "hw/qdev-properties.h"
>   #include "hw/boards.h"
>   #include "cpu.h"
>   #include "boot.h"
> @@ -79,19 +80,14 @@ static void xlnx_zynqmp_pmu_soc_realize(DeviceState *dev, Error **errp)
>   
>       object_property_set_uint(OBJECT(&s->cpu), "base-vectors",
>                                XLNX_ZYNQMP_PMU_ROM_ADDR, &error_abort);
> -    object_property_set_bool(OBJECT(&s->cpu), "use-stack-protection", true,
> -                             &error_abort);
> +    qdev_prop_set_bit(DEVICE(&s->cpu), "use-stack-protection", true);
>       object_property_set_uint(OBJECT(&s->cpu), "use-fpu", 0, &error_abort);
>       object_property_set_uint(OBJECT(&s->cpu), "use-hw-mul", 0, &error_abort);
> -    object_property_set_bool(OBJECT(&s->cpu), "use-barrel", true,
> -                             &error_abort);
> -    object_property_set_bool(OBJECT(&s->cpu), "use-msr-instr", true,
> -                             &error_abort);
> -    object_property_set_bool(OBJECT(&s->cpu), "use-pcmp-instr", true,
> -                             &error_abort);
> -    object_property_set_bool(OBJECT(&s->cpu), "use-mmu", false, &error_abort);
> -    object_property_set_bool(OBJECT(&s->cpu), "endianness", true,
> -                             &error_abort);
> +    qdev_prop_set_bit(DEVICE(&s->cpu), "use-barrel", true);
> +    qdev_prop_set_bit(DEVICE(&s->cpu), "use-msr-instr", true);
> +    qdev_prop_set_bit(DEVICE(&s->cpu), "use-pcmp-instr", true);
> +    qdev_prop_set_bit(DEVICE(&s->cpu), "use-mmu", false);
> +    qdev_prop_set_bit(DEVICE(&s->cpu), "endianness", true);
>       object_property_set_str(OBJECT(&s->cpu), "version", "8.40.b",
>                               &error_abort);
>       object_property_set_uint(OBJECT(&s->cpu), "pvr", 0, &error_abort);
> diff --git a/hw/mips/cps.c b/hw/mips/cps.c
> index 4f12e23ab5..ee2a8d5563 100644
> --- a/hw/mips/cps.c
> +++ b/hw/mips/cps.c
> @@ -78,8 +78,7 @@ static void mips_cps_realize(DeviceState *dev, Error **errp)
>           CPUMIPSState *env = &cpu->env;
>   
>           /* All VPs are halted on reset. Leave powering up to CPC. */
> -        object_property_set_bool(OBJECT(cpu), "start-powered-off", true,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(cpu), "start-powered-off", true);
>   
>           /* All cores use the same clock tree */
>           qdev_connect_clock_in(DEVICE(cpu), "clk-in", s->clock);
> diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
> index 566f1200dd..a63d48c512 100644
> --- a/hw/ppc/e500.c
> +++ b/hw/ppc/e500.c
> @@ -954,8 +954,7 @@ void ppce500_init(MachineState *machine)
>            * Secondary CPU starts in halted state for now. Needs to change
>            * when implementing non-kernel boot.
>            */
> -        object_property_set_bool(OBJECT(cs), "start-powered-off", i != 0,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(cs), "start-powered-off", i != 0);
>           qdev_realize_and_unref(DEVICE(cs), NULL, &error_fatal);
>   
>           if (!firstenv) {
> diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
> index 6760823e13..266cf6c9e6 100644
> --- a/hw/ppc/spapr_pci.c
> +++ b/hw/ppc/spapr_pci.c
> @@ -2490,8 +2490,7 @@ static int spapr_switch_one_vga(DeviceState *dev, void *opaque)
>           || object_dynamic_cast(OBJECT(dev), "secondary-vga")
>           || object_dynamic_cast(OBJECT(dev), "bochs-display")
>           || object_dynamic_cast(OBJECT(dev), "virtio-vga")) {
> -        object_property_set_bool(OBJECT(dev), "big-endian-framebuffer", be,
> -                                 &error_abort);
> +        qdev_prop_set_bit(dev, "big-endian-framebuffer", be);
>       }
>       return 0;
>   }
> diff --git a/hw/rx/rx-gdbsim.c b/hw/rx/rx-gdbsim.c
> index 47c17026c7..53d3d560c8 100644
> --- a/hw/rx/rx-gdbsim.c
> +++ b/hw/rx/rx-gdbsim.c
> @@ -21,6 +21,7 @@
>   #include "qemu/error-report.h"
>   #include "qemu/guest-random.h"
>   #include "qapi/error.h"
> +#include "hw/qdev-properties.h"
>   #include "hw/loader.h"
>   #include "hw/rx/rx62n.h"
>   #include "sysemu/qtest.h"
> @@ -103,8 +104,7 @@ static void rx_gdbsim_init(MachineState *machine)
>                                &error_abort);
>       object_property_set_uint(OBJECT(&s->mcu), "xtal-frequency-hz",
>                                rxc->xtal_freq_hz, &error_abort);
> -    object_property_set_bool(OBJECT(&s->mcu), "load-kernel",
> -                             kernel_filename != NULL, &error_abort);
> +    qdev_prop_set_bit(DEVICE(&s->mcu), "load-kernel", kernel_filename != NULL);
>   
>       if (!kernel_filename) {
>           if (machine->firmware) {
> diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
> index 64895aebe3..d631d555d8 100644
> --- a/hw/sparc/sun4m.c
> +++ b/hw/sparc/sun4m.c
> @@ -803,8 +803,7 @@ static void cpu_devinit(const char *cpu_type, unsigned int id,
>       env = &cpu->env;
>   
>       qemu_register_reset(sun4m_cpu_reset, cpu);
> -    object_property_set_bool(OBJECT(cpu), "start-powered-off", id != 0,
> -                             &error_abort);
> +    qdev_prop_set_bit(DEVICE(cpu), "start-powered-off", id != 0);
>       qdev_realize_and_unref(DEVICE(cpu), NULL, &error_fatal);
>       cpu_sparc_set_id(env, id);
>       *cpu_irqs = qemu_allocate_irqs(cpu_set_irq, cpu, MAX_PILS);

Re: [PATCH-for-9.0 v2 5/8] hw: Prefer qdev_prop_set_bit over object_property_set_bool for QDev
Posted by Ani Sinha 1 year ago

> On 23-Nov-2023, at 8:08 PM, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
> 
> The QOM API is lower level than the QDev one. When an instance is
> QDev and setting the property can not fail (using &error_abort),
> prefer qdev_prop_set_bit() over object_property_set_bool().
> 
> Mechanical transformation using the following coccinelle patch:
> 
>  @@
>  expression o, p, v;
>  @@
>  -            object_property_set_bool(OBJECT(o), p, v, &error_abort)
>  +            qdev_prop_set_bit(DEVICE(o), p, v)
>  @@@@
>  -            object_property_set_bool(o, p, v, &error_abort)
>  +            qdev_prop_set_bit(DEVICE(o), p, v)
> 
> manually adding the missing "hw/qdev-properties.h" header.
> 
> In hw/arm/armsse.c we use the available 'cpudev' instead of 'cpuobj'.
> 
> Suggested-by: Markus Armbruster <armbru@redhat.com>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> hw/acpi/cpu_hotplug.c               |  7 +++----
> hw/acpi/ich9.c                      |  4 ++--
> hw/acpi/piix4.c                     |  4 ++--

For the acpi bits,
Reviewed-by: Ani Sinha <anisinha@redhat.com>

> hw/arm/armsse.c                     |  3 +--
> hw/arm/armv7m.c                     |  3 +--
> hw/arm/aspeed_ast2400.c             |  3 +--
> hw/arm/aspeed_ast2600.c             |  9 +++------
> hw/arm/bcm2835_peripherals.c        |  3 +--
> hw/arm/bcm2836.c                    |  4 ++--
> hw/arm/boot.c                       |  4 ++--
> hw/arm/fsl-imx25.c                  |  3 +--
> hw/arm/fsl-imx31.c                  |  3 +--
> hw/arm/fsl-imx6.c                   | 12 ++++--------
> hw/arm/fsl-imx6ul.c                 |  8 ++++----
> hw/arm/fsl-imx7.c                   | 10 ++++------
> hw/arm/npcm7xx.c                    |  9 +++------
> hw/arm/xlnx-versal.c                |  9 +++------
> hw/arm/xlnx-zynqmp.c                |  9 +++------
> hw/core/bus.c                       |  2 +-
> hw/core/qdev.c                      |  2 +-
> hw/i386/pc_piix.c                   | 19 ++++++-------------
> hw/microblaze/petalogix_ml605_mmu.c |  5 ++---
> hw/microblaze/xlnx-zynqmp-pmu.c     | 18 +++++++-----------
> hw/mips/cps.c                       |  3 +--
> hw/ppc/e500.c                       |  3 +--
> hw/ppc/spapr_pci.c                  |  3 +--
> hw/rx/rx-gdbsim.c                   |  4 ++--
> hw/sparc/sun4m.c                    |  3 +--
> 28 files changed, 64 insertions(+), 105 deletions(-)
> 
> diff --git a/hw/acpi/cpu_hotplug.c b/hw/acpi/cpu_hotplug.c
> index 634bbecb31..1338c037b5 100644
> --- a/hw/acpi/cpu_hotplug.c
> +++ b/hw/acpi/cpu_hotplug.c
> @@ -12,6 +12,7 @@
> #include "qemu/osdep.h"
> #include "hw/acpi/cpu_hotplug.h"
> #include "qapi/error.h"
> +#include "hw/qdev-properties.h"
> #include "hw/core/cpu.h"
> #include "hw/i386/pc.h"
> #include "hw/pci/pci.h"
> @@ -41,8 +42,7 @@ static void cpu_status_write(void *opaque, hwaddr addr, uint64_t data,
>      */
>     if (addr == 0 && data == 0) {
>         AcpiCpuHotplug *cpus = opaque;
> -        object_property_set_bool(cpus->device, "cpu-hotplug-legacy", false,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(cpus->device), "cpu-hotplug-legacy", false);
>     }
> }
> 
> @@ -66,8 +66,7 @@ static void acpi_set_cpu_present_bit(AcpiCpuHotplug *g, CPUState *cpu)
> 
>     cpu_id = k->get_arch_id(cpu);
>     if ((cpu_id / 8) >= ACPI_GPE_PROC_LEN) {
> -        object_property_set_bool(g->device, "cpu-hotplug-legacy", false,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(g->device), "cpu-hotplug-legacy", false);
>         return;
>     }
> 
> diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c
> index 25e2c7243e..64b00673fe 100644
> --- a/hw/acpi/ich9.c
> +++ b/hw/acpi/ich9.c
> @@ -30,6 +30,7 @@
> #include "hw/pci/pci.h"
> #include "migration/vmstate.h"
> #include "qemu/timer.h"
> +#include "hw/qdev-properties.h"
> #include "hw/core/cpu.h"
> #include "sysemu/reset.h"
> #include "sysemu/runstate.h"
> @@ -197,8 +198,7 @@ static bool vmstate_test_use_cpuhp(void *opaque)
> static int vmstate_cpuhp_pre_load(void *opaque)
> {
>     ICH9LPCPMRegs *s = opaque;
> -    Object *obj = OBJECT(s->gpe_cpu.device);
> -    object_property_set_bool(obj, "cpu-hotplug-legacy", false, &error_abort);
> +    qdev_prop_set_bit(DEVICE(s->gpe_cpu.device), "cpu-hotplug-legacy", false);
>     return 0;
> }
> 
> diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
> index dd523d2e4c..215929ac6a 100644
> --- a/hw/acpi/piix4.c
> +++ b/hw/acpi/piix4.c
> @@ -203,8 +203,8 @@ static bool vmstate_test_use_cpuhp(void *opaque)
> 
> static int vmstate_cpuhp_pre_load(void *opaque)
> {
> -    Object *obj = OBJECT(opaque);
> -    object_property_set_bool(obj, "cpu-hotplug-legacy", false, &error_abort);
> +    DeviceState *dev = DEVICE(opaque);
> +    qdev_prop_set_bit(dev, "cpu-hotplug-legacy", false);
>     return 0;
> }
> 
> diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c
> index 4672df180f..546b15e658 100644
> --- a/hw/arm/armsse.c
> +++ b/hw/arm/armsse.c
> @@ -1022,8 +1022,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
>          * later if necessary.
>          */
>         if (extract32(info->cpuwait_rst, i, 1)) {
> -            object_property_set_bool(cpuobj, "start-powered-off", true,
> -                                     &error_abort);
> +            qdev_prop_set_bit(cpudev, "start-powered-off", true);
>         }
>         if (!s->cpu_fpu[i]) {
>             if (!object_property_set_bool(cpuobj, "vfp", false, errp)) {
> diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c
> index cbaebe9bf8..3a6d72b0f3 100644
> --- a/hw/arm/armv7m.c
> +++ b/hw/arm/armv7m.c
> @@ -328,8 +328,7 @@ static void armv7m_realize(DeviceState *dev, Error **errp)
>             return;
>         }
>     }
> -    object_property_set_bool(OBJECT(s->cpu), "start-powered-off",
> -                             s->start_powered_off, &error_abort);
> +    qdev_prop_set_bit(DEVICE(s->cpu), "start-powered-off", s->start_powered_off);
> 
>     /*
>      * Real M-profile hardware can be configured with a different number of
> diff --git a/hw/arm/aspeed_ast2400.c b/hw/arm/aspeed_ast2400.c
> index a4334c81b8..4a247bfcbb 100644
> --- a/hw/arm/aspeed_ast2400.c
> +++ b/hw/arm/aspeed_ast2400.c
> @@ -420,8 +420,7 @@ static void aspeed_ast2400_soc_realize(DeviceState *dev, Error **errp)
> 
>     /* Net */
>     for (i = 0; i < sc->macs_num; i++) {
> -        object_property_set_bool(OBJECT(&s->ftgmac100[i]), "aspeed", true,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->ftgmac100[i]), "aspeed", true);
>         if (!sysbus_realize(SYS_BUS_DEVICE(&s->ftgmac100[i]), errp)) {
>             return;
>         }
> diff --git a/hw/arm/aspeed_ast2600.c b/hw/arm/aspeed_ast2600.c
> index b965fbab5e..5ec8ad73cd 100644
> --- a/hw/arm/aspeed_ast2600.c
> +++ b/hw/arm/aspeed_ast2600.c
> @@ -317,10 +317,8 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
> 
>         object_property_set_int(OBJECT(&a->cpu[i]), "cntfrq", 1125000000,
>                                 &error_abort);
> -        object_property_set_bool(OBJECT(&a->cpu[i]), "neon", false,
> -                                &error_abort);
> -        object_property_set_bool(OBJECT(&a->cpu[i]), "vfp-d32", false,
> -                                &error_abort);
> +        qdev_prop_set_bit(DEVICE(&a->cpu[i]), "neon", false);
> +        qdev_prop_set_bit(DEVICE(&a->cpu[i]), "vfp-d32", false);
>         object_property_set_link(OBJECT(&a->cpu[i]), "memory",
>                                  OBJECT(s->memory), &error_abort);
> 
> @@ -500,8 +498,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
> 
>     /* Net */
>     for (i = 0; i < sc->macs_num; i++) {
> -        object_property_set_bool(OBJECT(&s->ftgmac100[i]), "aspeed", true,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->ftgmac100[i]), "aspeed", true);
>         if (!sysbus_realize(SYS_BUS_DEVICE(&s->ftgmac100[i]), errp)) {
>             return;
>         }
> diff --git a/hw/arm/bcm2835_peripherals.c b/hw/arm/bcm2835_peripherals.c
> index 0233038b95..c07ca8817b 100644
> --- a/hw/arm/bcm2835_peripherals.c
> +++ b/hw/arm/bcm2835_peripherals.c
> @@ -303,8 +303,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
>                              &error_abort);
>     object_property_set_uint(OBJECT(&s->sdhci), "capareg",
>                              BCM2835_SDHC_CAPAREG, &error_abort);
> -    object_property_set_bool(OBJECT(&s->sdhci), "pending-insert-quirk", true,
> -                             &error_abort);
> +    qdev_prop_set_bit(DEVICE(&s->sdhci), "pending-insert-quirk", true);
>     if (!sysbus_realize(SYS_BUS_DEVICE(&s->sdhci), errp)) {
>         return;
>     }
> diff --git a/hw/arm/bcm2836.c b/hw/arm/bcm2836.c
> index b0674a22a6..1fdc3be6bb 100644
> --- a/hw/arm/bcm2836.c
> +++ b/hw/arm/bcm2836.c
> @@ -135,8 +135,8 @@ static void bcm2836_realize(DeviceState *dev, Error **errp)
>                                 bc->peri_base, &error_abort);
> 
>         /* start powered off if not enabled */
> -        object_property_set_bool(OBJECT(&s->cpu[n].core), "start-powered-off",
> -                                 n >= s->enabled_cpus, &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->cpu[n].core), "start-powered-off",
> +                          n >= s->enabled_cpus);
> 
>         if (!qdev_realize(DEVICE(&s->cpu[n].core), NULL, errp)) {
>             return;
> diff --git a/hw/arm/boot.c b/hw/arm/boot.c
> index 84ea6a807a..ebed887e5e 100644
> --- a/hw/arm/boot.c
> +++ b/hw/arm/boot.c
> @@ -12,6 +12,7 @@
> #include "qemu/error-report.h"
> #include "qapi/error.h"
> #include <libfdt.h>
> +#include "hw/qdev-properties.h"
> #include "hw/arm/boot.h"
> #include "hw/arm/linux-boot-if.h"
> #include "sysemu/kvm.h"
> @@ -1287,8 +1288,7 @@ void arm_load_kernel(ARMCPU *cpu, MachineState *ms, struct arm_boot_info *info)
>              * CPU.
>              */
>             if (cs != first_cpu) {
> -                object_property_set_bool(cpuobj, "start-powered-off", true,
> -                                         &error_abort);
> +                qdev_prop_set_bit(DEVICE(cpuobj), "start-powered-off", true);
>             }
>         }
>     }
> diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
> index 9aabbf7f58..fc6a7c8a8b 100644
> --- a/hw/arm/fsl-imx25.c
> +++ b/hw/arm/fsl-imx25.c
> @@ -272,8 +272,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
>     }
> 
>     /* Watchdog */
> -    object_property_set_bool(OBJECT(&s->wdt), "pretimeout-support", true,
> -                             &error_abort);
> +    qdev_prop_set_bit(DEVICE(&s->wdt), "pretimeout-support", true);
>     sysbus_realize(SYS_BUS_DEVICE(&s->wdt), &error_abort);
>     sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt), 0, FSL_IMX25_WDT_ADDR);
>     sysbus_connect_irq(SYS_BUS_DEVICE(&s->wdt), 0,
> diff --git a/hw/arm/fsl-imx31.c b/hw/arm/fsl-imx31.c
> index def27bb913..71f50ca802 100644
> --- a/hw/arm/fsl-imx31.c
> +++ b/hw/arm/fsl-imx31.c
> @@ -171,8 +171,7 @@ static void fsl_imx31_realize(DeviceState *dev, Error **errp)
>             { FSL_IMX31_GPIO3_ADDR, FSL_IMX31_GPIO3_IRQ }
>         };
> 
> -        object_property_set_bool(OBJECT(&s->gpio[i]), "has-edge-sel", false,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->gpio[i]), "has-edge-sel", false);
>         if (!sysbus_realize(SYS_BUS_DEVICE(&s->gpio[i]), errp)) {
>             return;
>         }
> diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
> index 7dc42cbfe6..17c399a37e 100644
> --- a/hw/arm/fsl-imx6.c
> +++ b/hw/arm/fsl-imx6.c
> @@ -128,8 +128,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
> 
>         /* All CPU but CPU 0 start in power off mode */
>         if (i) {
> -            object_property_set_bool(OBJECT(&s->cpu[i]), "start-powered-off",
> -                                     true, &error_abort);
> +            qdev_prop_set_bit(DEVICE(&s->cpu[i]), "start-powered-off", true);
>         }
> 
>         if (!qdev_realize(DEVICE(&s->cpu[i]), NULL, errp)) {
> @@ -288,10 +287,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
>             },
>         };
> 
> -        object_property_set_bool(OBJECT(&s->gpio[i]), "has-edge-sel", true,
> -                                 &error_abort);
> -        object_property_set_bool(OBJECT(&s->gpio[i]), "has-upper-pin-irq",
> -                                 true, &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->gpio[i]), "has-edge-sel", true);
> +        qdev_prop_set_bit(DEVICE(&s->gpio[i]), "has-upper-pin-irq", true);
>         if (!sysbus_realize(SYS_BUS_DEVICE(&s->gpio[i]), errp)) {
>             return;
>         }
> @@ -412,8 +409,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
>             FSL_IMX6_WDOG2_IRQ,
>         };
> 
> -        object_property_set_bool(OBJECT(&s->wdt[i]), "pretimeout-support",
> -                                 true, &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->wdt[i]), "pretimeout-support", true);
>         sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), &error_abort);
> 
>         sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt[i]), 0, FSL_IMX6_WDOGn_ADDR[i]);
> diff --git a/hw/arm/fsl-imx6ul.c b/hw/arm/fsl-imx6ul.c
> index e37b69a5e1..4f4f2a6f41 100644
> --- a/hw/arm/fsl-imx6ul.c
> +++ b/hw/arm/fsl-imx6ul.c
> @@ -410,8 +410,8 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
>      * and we have to set all properties before calling sysbus_realize().
>      */
>     for (i = 0; i < FSL_IMX6UL_NUM_ETHS; i++) {
> -        object_property_set_bool(OBJECT(&s->eth[i]), "phy-connected",
> -                                 s->phy_connected[i], &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->eth[i]), "phy-connected",
> +                          s->phy_connected[i]);
>         /*
>          * If the MDIO bus on this controller is not connected, assume the
>          * other controller provides support for it.
> @@ -542,8 +542,8 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
>             FSL_IMX6UL_WDOG3_IRQ,
>         };
> 
> -        object_property_set_bool(OBJECT(&s->wdt[i]), "pretimeout-support",
> -                                 true, &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->wdt[i]), "pretimeout-support",
> +                          true);
>         sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), &error_abort);
> 
>         sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt[i]), 0,
> diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c
> index 474cfdc87c..3138ffeb08 100644
> --- a/hw/arm/fsl-imx7.c
> +++ b/hw/arm/fsl-imx7.c
> @@ -192,8 +192,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
>              * Secondary CPUs start in powered-down state (and can be
>              * powered up via the SRC system reset controller)
>              */
> -            object_property_set_bool(o, "start-powered-off", true,
> -                                     &error_abort);
> +            qdev_prop_set_bit(DEVICE(o), "start-powered-off", true);
>         }
> 
>         qdev_realize(DEVICE(o), NULL, &error_abort);
> @@ -424,8 +423,8 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
>      * and we have to set all properties before calling sysbus_realize().
>      */
>     for (i = 0; i < FSL_IMX7_NUM_ETHS; i++) {
> -        object_property_set_bool(OBJECT(&s->eth[i]), "phy-connected",
> -                                 s->phy_connected[i], &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->eth[i]), "phy-connected",
> +                          s->phy_connected[i]);
>         /*
>          * If the MDIO bus on this controller is not connected, assume the
>          * other controller provides support for it.
> @@ -513,8 +512,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
>             FSL_IMX7_WDOG4_IRQ,
>         };
> 
> -        object_property_set_bool(OBJECT(&s->wdt[i]), "pretimeout-support",
> -                                 true, &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->wdt[i]), "pretimeout-support", true);
>         sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), &error_abort);
> 
>         sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt[i]), 0, FSL_IMX7_WDOGn_ADDR[i]);
> diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c
> index 15ff21d047..7022df3cfa 100644
> --- a/hw/arm/npcm7xx.c
> +++ b/hw/arm/npcm7xx.c
> @@ -478,12 +478,10 @@ static void npcm7xx_realize(DeviceState *dev, Error **errp)
>                                 &error_abort);
>         object_property_set_int(OBJECT(&s->cpu[i]), "reset-cbar",
>                                 NPCM7XX_GIC_CPU_IF_ADDR, &error_abort);
> -        object_property_set_bool(OBJECT(&s->cpu[i]), "reset-hivecs", true,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->cpu[i]), "reset-hivecs", true);
> 
>         /* Disable security extensions. */
> -        object_property_set_bool(OBJECT(&s->cpu[i]), "has_el3", false,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->cpu[i]), "has_el3", false);
> 
>         if (!qdev_realize(DEVICE(&s->cpu[i]), NULL, errp)) {
>             return;
> @@ -613,8 +611,7 @@ static void npcm7xx_realize(DeviceState *dev, Error **errp)
>     }
> 
>     /* USB Host */
> -    object_property_set_bool(OBJECT(&s->ehci), "companion-enable", true,
> -                             &error_abort);
> +    qdev_prop_set_bit(DEVICE(&s->ehci), "companion-enable", true);
>     sysbus_realize(SYS_BUS_DEVICE(&s->ehci), &error_abort);
>     sysbus_mmio_map(SYS_BUS_DEVICE(&s->ehci), 0, NPCM7XX_EHCI_BA);
>     sysbus_connect_irq(SYS_BUS_DEVICE(&s->ehci), 0,
> diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c
> index 9600551c44..e3b730f5f5 100644
> --- a/hw/arm/xlnx-versal.c
> +++ b/hw/arm/xlnx-versal.c
> @@ -48,8 +48,7 @@ static void versal_create_apu_cpus(Versal *s)
>         obj = OBJECT(&s->fpd.apu.cpu[i]);
>         if (i) {
>             /* Secondary CPUs start in powered-down state */
> -            object_property_set_bool(obj, "start-powered-off", true,
> -                                     &error_abort);
> +            qdev_prop_set_bit(DEVICE(obj), "start-powered-off", true);
>         }
> 
>         object_property_set_int(obj, "core-count", ARRAY_SIZE(s->fpd.apu.cpu),
> @@ -150,8 +149,7 @@ static void versal_create_rpu_cpus(Versal *s)
>                                 "rpu-cpu[*]", &s->lpd.rpu.cpu[i],
>                                 XLNX_VERSAL_RCPU_TYPE);
>         obj = OBJECT(&s->lpd.rpu.cpu[i]);
> -        object_property_set_bool(obj, "start-powered-off", true,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(obj), "start-powered-off", true);
> 
>         object_property_set_int(obj, "mp-affinity", 0x100 | i, &error_abort);
>         object_property_set_int(obj, "core-count", ARRAY_SIZE(s->lpd.rpu.cpu),
> @@ -536,8 +534,7 @@ static void versal_create_ospi(Versal *s, qemu_irq *pic)
>                             &s->pmc.iou.ospi.dma_src,
>                             TYPE_XLNX_CSU_DMA);
> 
> -    object_property_set_bool(OBJECT(&s->pmc.iou.ospi.dma_src), "is-dst",
> -                             false, &error_abort);
> +    qdev_prop_set_bit(DEVICE(&s->pmc.iou.ospi.dma_src), "is-dst", false);
> 
>     object_property_set_link(OBJECT(&s->pmc.iou.ospi.dma_src),
>                             "dma", OBJECT(mr_dac), &error_abort);
> diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
> index 5905a33015..f3ca3a7527 100644
> --- a/hw/arm/xlnx-zynqmp.c
> +++ b/hw/arm/xlnx-zynqmp.c
> @@ -237,14 +237,12 @@ static void xlnx_zynqmp_create_rpu(MachineState *ms, XlnxZynqMPState *s,
>             /*
>              * Secondary CPUs start in powered-down state.
>              */
> -            object_property_set_bool(OBJECT(&s->rpu_cpu[i]),
> -                                     "start-powered-off", true, &error_abort);
> +            qdev_prop_set_bit(DEVICE(&s->rpu_cpu[i]), "start-powered-off", true);
>         } else {
>             s->boot_cpu_ptr = &s->rpu_cpu[i];
>         }
> 
> -        object_property_set_bool(OBJECT(&s->rpu_cpu[i]), "reset-hivecs", true,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(&s->rpu_cpu[i]), "reset-hivecs", true);
>         if (!qdev_realize(DEVICE(&s->rpu_cpu[i]), NULL, errp)) {
>             return;
>         }
> @@ -518,8 +516,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp)
>             /*
>              * Secondary CPUs start in powered-down state.
>              */
> -            object_property_set_bool(OBJECT(&s->apu_cpu[i]),
> -                                     "start-powered-off", true, &error_abort);
> +            qdev_prop_set_bit(DEVICE(&s->apu_cpu[i]), "start-powered-off", true);
>         } else {
>             s->boot_cpu_ptr = &s->apu_cpu[i];
>         }
> diff --git a/hw/core/bus.c b/hw/core/bus.c
> index c7831b5293..a24ebe5886 100644
> --- a/hw/core/bus.c
> +++ b/hw/core/bus.c
> @@ -176,7 +176,7 @@ bool qbus_realize(BusState *bus, Error **errp)
> 
> void qbus_unrealize(BusState *bus)
> {
> -    object_property_set_bool(OBJECT(bus), "realized", false, &error_abort);
> +    qdev_prop_set_bit(DEVICE(bus), "realized", false);
> }
> 
> static bool bus_get_realized(Object *obj, Error **errp)
> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> index 43d863b0c5..f4aa99ed77 100644
> --- a/hw/core/qdev.c
> +++ b/hw/core/qdev.c
> @@ -303,7 +303,7 @@ bool qdev_realize_and_unref(DeviceState *dev, BusState *bus, Error **errp)
> 
> void qdev_unrealize(DeviceState *dev)
> {
> -    object_property_set_bool(OBJECT(dev), "realized", false, &error_abort);
> +    qdev_prop_set_bit(dev, "realized", false);
> }
> 
> static int qdev_assert_realized_properly_cb(Object *obj, void *opaque)
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index eace854335..6733652120 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -263,20 +263,13 @@ static void pc_init1(MachineState *machine,
>         size_t i;
> 
>         pci_dev = pci_new_multifunction(-1, pcms->south_bridge);
> -        object_property_set_bool(OBJECT(pci_dev), "has-usb",
> -                                 machine_usb(machine), &error_abort);
> -        object_property_set_bool(OBJECT(pci_dev), "has-acpi",
> -                                 x86_machine_is_acpi_enabled(x86ms),
> -                                 &error_abort);
> -        object_property_set_bool(OBJECT(pci_dev), "has-pic", false,
> -                                 &error_abort);
> -        object_property_set_bool(OBJECT(pci_dev), "has-pit", false,
> -                                 &error_abort);
> -        qdev_prop_set_uint32(DEVICE(pci_dev), "smb_io_base", 0xb100);
> -        object_property_set_bool(OBJECT(pci_dev), "smm-enabled",
> -                                 x86_machine_is_smm_enabled(x86ms),
> -                                 &error_abort);
>         dev = DEVICE(pci_dev);
> +        qdev_prop_set_bit(dev, "has-usb", machine_usb(machine));
> +        qdev_prop_set_bit(dev, "has-acpi", x86_machine_is_acpi_enabled(x86ms));
> +        qdev_prop_set_bit(dev, "has-pic", false);
> +        qdev_prop_set_bit(dev, "has-pit", false);
> +        qdev_prop_set_uint32(DEVICE(pci_dev), "smb_io_base", 0xb100);
> +        qdev_prop_set_bit(dev, "smm-enabled", x86_machine_is_smm_enabled(x86ms));
>         for (i = 0; i < ISA_NUM_IRQS; i++) {
>             qdev_connect_gpio_out_named(dev, "isa-irqs", i, x86ms->gsi[i]);
>         }
> diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_ml605_mmu.c
> index fb7889cf67..626f9b0b56 100644
> --- a/hw/microblaze/petalogix_ml605_mmu.c
> +++ b/hw/microblaze/petalogix_ml605_mmu.c
> @@ -88,9 +88,8 @@ petalogix_ml605_init(MachineState *machine)
>      * root instructions
>      */
>     object_property_set_int(OBJECT(cpu), "use-fpu", 1, &error_abort);
> -    object_property_set_bool(OBJECT(cpu), "dcache-writeback", true,
> -                             &error_abort);
> -    object_property_set_bool(OBJECT(cpu), "endianness", true, &error_abort);
> +    qdev_prop_set_bit(DEVICE(cpu), "dcache-writeback", true);
> +    qdev_prop_set_bit(DEVICE(cpu), "endianness", true);
>     qdev_realize(DEVICE(cpu), NULL, &error_abort);
> 
>     /* Attach emulated BRAM through the LMB.  */
> diff --git a/hw/microblaze/xlnx-zynqmp-pmu.c b/hw/microblaze/xlnx-zynqmp-pmu.c
> index 5a2016672a..19cc5efee3 100644
> --- a/hw/microblaze/xlnx-zynqmp-pmu.c
> +++ b/hw/microblaze/xlnx-zynqmp-pmu.c
> @@ -18,6 +18,7 @@
> #include "qemu/osdep.h"
> #include "qapi/error.h"
> #include "exec/address-spaces.h"
> +#include "hw/qdev-properties.h"
> #include "hw/boards.h"
> #include "cpu.h"
> #include "boot.h"
> @@ -79,19 +80,14 @@ static void xlnx_zynqmp_pmu_soc_realize(DeviceState *dev, Error **errp)
> 
>     object_property_set_uint(OBJECT(&s->cpu), "base-vectors",
>                              XLNX_ZYNQMP_PMU_ROM_ADDR, &error_abort);
> -    object_property_set_bool(OBJECT(&s->cpu), "use-stack-protection", true,
> -                             &error_abort);
> +    qdev_prop_set_bit(DEVICE(&s->cpu), "use-stack-protection", true);
>     object_property_set_uint(OBJECT(&s->cpu), "use-fpu", 0, &error_abort);
>     object_property_set_uint(OBJECT(&s->cpu), "use-hw-mul", 0, &error_abort);
> -    object_property_set_bool(OBJECT(&s->cpu), "use-barrel", true,
> -                             &error_abort);
> -    object_property_set_bool(OBJECT(&s->cpu), "use-msr-instr", true,
> -                             &error_abort);
> -    object_property_set_bool(OBJECT(&s->cpu), "use-pcmp-instr", true,
> -                             &error_abort);
> -    object_property_set_bool(OBJECT(&s->cpu), "use-mmu", false, &error_abort);
> -    object_property_set_bool(OBJECT(&s->cpu), "endianness", true,
> -                             &error_abort);
> +    qdev_prop_set_bit(DEVICE(&s->cpu), "use-barrel", true);
> +    qdev_prop_set_bit(DEVICE(&s->cpu), "use-msr-instr", true);
> +    qdev_prop_set_bit(DEVICE(&s->cpu), "use-pcmp-instr", true);
> +    qdev_prop_set_bit(DEVICE(&s->cpu), "use-mmu", false);
> +    qdev_prop_set_bit(DEVICE(&s->cpu), "endianness", true);
>     object_property_set_str(OBJECT(&s->cpu), "version", "8.40.b",
>                             &error_abort);
>     object_property_set_uint(OBJECT(&s->cpu), "pvr", 0, &error_abort);
> diff --git a/hw/mips/cps.c b/hw/mips/cps.c
> index 4f12e23ab5..ee2a8d5563 100644
> --- a/hw/mips/cps.c
> +++ b/hw/mips/cps.c
> @@ -78,8 +78,7 @@ static void mips_cps_realize(DeviceState *dev, Error **errp)
>         CPUMIPSState *env = &cpu->env;
> 
>         /* All VPs are halted on reset. Leave powering up to CPC. */
> -        object_property_set_bool(OBJECT(cpu), "start-powered-off", true,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(cpu), "start-powered-off", true);
> 
>         /* All cores use the same clock tree */
>         qdev_connect_clock_in(DEVICE(cpu), "clk-in", s->clock);
> diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
> index 566f1200dd..a63d48c512 100644
> --- a/hw/ppc/e500.c
> +++ b/hw/ppc/e500.c
> @@ -954,8 +954,7 @@ void ppce500_init(MachineState *machine)
>          * Secondary CPU starts in halted state for now. Needs to change
>          * when implementing non-kernel boot.
>          */
> -        object_property_set_bool(OBJECT(cs), "start-powered-off", i != 0,
> -                                 &error_abort);
> +        qdev_prop_set_bit(DEVICE(cs), "start-powered-off", i != 0);
>         qdev_realize_and_unref(DEVICE(cs), NULL, &error_fatal);
> 
>         if (!firstenv) {
> diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
> index 6760823e13..266cf6c9e6 100644
> --- a/hw/ppc/spapr_pci.c
> +++ b/hw/ppc/spapr_pci.c
> @@ -2490,8 +2490,7 @@ static int spapr_switch_one_vga(DeviceState *dev, void *opaque)
>         || object_dynamic_cast(OBJECT(dev), "secondary-vga")
>         || object_dynamic_cast(OBJECT(dev), "bochs-display")
>         || object_dynamic_cast(OBJECT(dev), "virtio-vga")) {
> -        object_property_set_bool(OBJECT(dev), "big-endian-framebuffer", be,
> -                                 &error_abort);
> +        qdev_prop_set_bit(dev, "big-endian-framebuffer", be);
>     }
>     return 0;
> }
> diff --git a/hw/rx/rx-gdbsim.c b/hw/rx/rx-gdbsim.c
> index 47c17026c7..53d3d560c8 100644
> --- a/hw/rx/rx-gdbsim.c
> +++ b/hw/rx/rx-gdbsim.c
> @@ -21,6 +21,7 @@
> #include "qemu/error-report.h"
> #include "qemu/guest-random.h"
> #include "qapi/error.h"
> +#include "hw/qdev-properties.h"
> #include "hw/loader.h"
> #include "hw/rx/rx62n.h"
> #include "sysemu/qtest.h"
> @@ -103,8 +104,7 @@ static void rx_gdbsim_init(MachineState *machine)
>                              &error_abort);
>     object_property_set_uint(OBJECT(&s->mcu), "xtal-frequency-hz",
>                              rxc->xtal_freq_hz, &error_abort);
> -    object_property_set_bool(OBJECT(&s->mcu), "load-kernel",
> -                             kernel_filename != NULL, &error_abort);
> +    qdev_prop_set_bit(DEVICE(&s->mcu), "load-kernel", kernel_filename != NULL);
> 
>     if (!kernel_filename) {
>         if (machine->firmware) {
> diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
> index 64895aebe3..d631d555d8 100644
> --- a/hw/sparc/sun4m.c
> +++ b/hw/sparc/sun4m.c
> @@ -803,8 +803,7 @@ static void cpu_devinit(const char *cpu_type, unsigned int id,
>     env = &cpu->env;
> 
>     qemu_register_reset(sun4m_cpu_reset, cpu);
> -    object_property_set_bool(OBJECT(cpu), "start-powered-off", id != 0,
> -                             &error_abort);
> +    qdev_prop_set_bit(DEVICE(cpu), "start-powered-off", id != 0);
>     qdev_realize_and_unref(DEVICE(cpu), NULL, &error_fatal);
>     cpu_sparc_set_id(env, id);
>     *cpu_irqs = qemu_allocate_irqs(cpu_set_irq, cpu, MAX_PILS);
> -- 
> 2.41.0
>