[RFC PATCH v2 130/137] hw: Pair object_initialize_child() with plain realize()

Alexander Graf <[email protected]>
Newsgroups org.nongnu.qemu-arm,org.nongnu.qemu-devel,org.nongnu.qemu-riscv
Message-ID <[email protected]>
A number of composite devices and boards create embedded children
via object_initialize_child() (or object_new_with_props()) and
then realize them via *_realize_and_unref().  The child<> property
already holds the sole reference; the extra unref drops it and the
object survives only because bus_add_child() takes a reference of
its own.  Use plain sysbus_realize()/qdev_realize() so the parent's
child<> keeps the reference it is documented to hold.

AI-used-for: code (refactoring)
Signed-off-by: Alexander Graf <[email protected]>
---
 hw/arm/imx8mm-evk.c          | 2 +-
 hw/arm/imx8mp-evk.c          | 2 +-
 hw/arm/mps2.c                | 2 +-
 hw/display/sm501.c           | 2 +-
 hw/m68k/q800.c               | 6 +++---
 hw/misc/macio/macio.c        | 2 +-
 hw/net/imx_fec.c             | 2 +-
 hw/net/lan9118.c             | 2 +-
 hw/nubus/nubus-virtio-mmio.c | 2 +-
 hw/pci-host/mv64361.c        | 2 +-
 hw/xen/xen-pvh-common.c      | 2 +-
 11 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/hw/arm/imx8mm-evk.c b/hw/arm/imx8mm-evk.c
index 72fa1930ae..84a1ae6aa4 100644
--- a/hw/arm/imx8mm-evk.c
+++ b/hw/arm/imx8mm-evk.c
@@ -80,7 +80,7 @@ static void imx8mm_evk_init(MachineState *machine)
     s = FSL_IMX8MM(object_new_with_props(TYPE_FSL_IMX8MM, OBJECT(machine),
                                          "soc", &error_fatal, NULL));
     object_property_set_uint(OBJECT(s), "fec1-phy-num", 1, &error_fatal);
-    sysbus_realize_and_unref(SYS_BUS_DEVICE(s), &error_fatal);
+    sysbus_realize(SYS_BUS_DEVICE(s), &error_fatal);
 
     memory_region_add_subregion(get_system_memory(), FSL_IMX8MM_RAM_START,
                                 machine->ram);
diff --git a/hw/arm/imx8mp-evk.c b/hw/arm/imx8mp-evk.c
index 6116e6e9dc..776aa22b9a 100644
--- a/hw/arm/imx8mp-evk.c
+++ b/hw/arm/imx8mp-evk.c
@@ -93,7 +93,7 @@ static void imx8mp_evk_init(MachineState *machine)
         object_property_set_link(OBJECT(&s->soc), bus_name,
                                  OBJECT(s->canbus[i]), &error_fatal);
     }
-    sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->soc), &error_fatal);
+    sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal);
 
     memory_region_add_subregion(get_system_memory(), FSL_IMX8MP_RAM_START,
                                 machine->ram);
diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c
index 1032f47cb8..3de11b19a9 100644
--- a/hw/arm/mps2.c
+++ b/hw/arm/mps2.c
@@ -379,7 +379,7 @@ static void mps2_common_init(MachineState *machine)
                                 TYPE_CMSDK_APB_TIMER);
         sbd = SYS_BUS_DEVICE(&mms->timer[i]);
         qdev_connect_clock_in(DEVICE(&mms->timer[i]), "pclk", mms->sysclk);
-        sysbus_realize_and_unref(sbd, &error_fatal);
+        sysbus_realize(sbd, &error_fatal);
         sysbus_mmio_map(sbd, 0, base);
         sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(armv7m, irqno));
     }
diff --git a/hw/display/sm501.c b/hw/display/sm501.c
index 56075a0303..4256ee0318 100644
--- a/hw/display/sm501.c
+++ b/hw/display/sm501.c
@@ -2091,7 +2091,7 @@ static void sm501_realize_sysbus(DeviceState *dev, Error **errp)
     sysbus_init_mmio(sbd, &s->state.mmio_region);
 
     /* bridge to usb host emulation module */
-    sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->ohci), &error_fatal);
+    sysbus_realize(SYS_BUS_DEVICE(&s->ohci), &error_fatal);
     memory_region_add_subregion(&s->state.mmio_region, SM501_USB_HOST,
                        sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->ohci), 0));
     sysbus_pass_irq(sbd, SYS_BUS_DEVICE(&s->ohci));
diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c
index 677dc4ad80..9fc186737b 100644
--- a/hw/m68k/q800.c
+++ b/hw/m68k/q800.c
@@ -324,14 +324,14 @@ static void q800_machine_init(MachineState *machine)
     object_initialize_child(OBJECT(machine), "djmemc", &m->djmemc,
                             TYPE_DJMEMC);
     sysbus = SYS_BUS_DEVICE(&m->djmemc);
-    sysbus_realize_and_unref(sysbus, &error_fatal);
+    sysbus_realize(sysbus, &error_fatal);
     memory_region_add_subregion(&m->macio, DJMEMC_BASE - IO_BASE,
                                 sysbus_mmio_get_region(sysbus, 0));
 
     /* IOSB subsystem */
     object_initialize_child(OBJECT(machine), "iosb", &m->iosb, TYPE_IOSB);
     sysbus = SYS_BUS_DEVICE(&m->iosb);
-    sysbus_realize_and_unref(sysbus, &error_fatal);
+    sysbus_realize(sysbus, &error_fatal);
     memory_region_add_subregion(&m->macio, IOSB_BASE - IO_BASE,
                                 sysbus_mmio_get_region(sysbus, 0));
 
@@ -497,7 +497,7 @@ static void q800_machine_init(MachineState *machine)
         qdev_prop_set_string(DEVICE(&m->asc), "audiodev", machine->audiodev);
     }
     sysbus = SYS_BUS_DEVICE(&m->asc);
-    sysbus_realize_and_unref(sysbus, &error_fatal);
+    sysbus_realize(sysbus, &error_fatal);
     memory_region_add_subregion(&m->macio, ASC_BASE - IO_BASE,
                                 sysbus_mmio_get_region(sysbus, 0));
     sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(DEVICE(&m->glue),
diff --git a/hw/misc/macio/macio.c b/hw/misc/macio/macio.c
index 2813705c03..a26babfbc2 100644
--- a/hw/misc/macio/macio.c
+++ b/hw/misc/macio/macio.c
@@ -274,7 +274,7 @@ static void macio_newworld_realize(PCIDevice *d, Error **errp)
     /* OpenPIC */
     qdev_prop_set_uint32(pic_dev, "model", OPENPIC_MODEL_KEYLARGO);
     sbd = SYS_BUS_DEVICE(&ns->pic);
-    sysbus_realize_and_unref(sbd, &error_fatal);
+    sysbus_realize(sbd, &error_fatal);
     memory_region_add_subregion(&s->bar, 0x40000,
                                 sysbus_mmio_get_region(sbd, 0));
 
diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c
index 38e0f64462..fddb0bbba3 100644
--- a/hw/net/imx_fec.c
+++ b/hw/net/imx_fec.c
@@ -1207,7 +1207,7 @@ static void imx_eth_realize(DeviceState *dev, Error **errp)
 
     qemu_init_irq_child(OBJECT(s), "mii-irq", &s->mii_irq, imx_phy_update_irq, s, 0);
     object_initialize_child(OBJECT(s), "mii", &s->mii, TYPE_LAN9118_PHY);
-    if (!sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->mii), errp)) {
+    if (!sysbus_realize(SYS_BUS_DEVICE(&s->mii), errp)) {
         return;
     }
     qdev_connect_gpio_out(DEVICE(&s->mii), 0, &s->mii_irq);
diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c
index 2003280fc4..fa425bb5bb 100644
--- a/hw/net/lan9118.c
+++ b/hw/net/lan9118.c
@@ -1276,7 +1276,7 @@ static void lan9118_realize(DeviceState *dev, Error **errp)
 
     qemu_init_irq_child(OBJECT(s), "mii-irq", &s->mii_irq, lan9118_update_irq, s, 0);
     object_initialize_child(OBJECT(s), "mii", &s->mii, TYPE_LAN9118_PHY);
-    if (!sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->mii), errp)) {
+    if (!sysbus_realize(SYS_BUS_DEVICE(&s->mii), errp)) {
         return;
     }
     qdev_connect_gpio_out(DEVICE(&s->mii), 0, &s->mii_irq);
diff --git a/hw/nubus/nubus-virtio-mmio.c b/hw/nubus/nubus-virtio-mmio.c
index 63aeca5b12..29008ea6c2 100644
--- a/hw/nubus/nubus-virtio-mmio.c
+++ b/hw/nubus/nubus-virtio-mmio.c
@@ -51,7 +51,7 @@ static void nubus_virtio_mmio_realize(DeviceState *dev, Error **errp)
     for (i = 0; i < NUBUS_VIRTIO_MMIO_NUM_DEVICES; i++) {
         sbd = SYS_BUS_DEVICE(&s->virtio_mmio[i]);
         qdev_prop_set_bit(DEVICE(sbd), "force-legacy", false);
-        if (!sysbus_realize_and_unref(sbd, errp)) {
+        if (!sysbus_realize(sbd, errp)) {
             return;
         }
 
diff --git a/hw/pci-host/mv64361.c b/hw/pci-host/mv64361.c
index 3ef51fef1b..8c3dadd490 100644
--- a/hw/pci-host/mv64361.c
+++ b/hw/pci-host/mv64361.c
@@ -874,7 +874,7 @@ static void mv64361_realize(DeviceState *dev, Error **errp)
                                 TYPE_MV64361_PCI);
         DeviceState *pci = DEVICE(&s->pci[i]);
         qdev_prop_set_uint8(pci, "index", i);
-        sysbus_realize_and_unref(SYS_BUS_DEVICE(pci), &error_fatal);
+        sysbus_realize(SYS_BUS_DEVICE(pci), &error_fatal);
     }
     sysbus_init_irq(SYS_BUS_DEVICE(dev), &s->cpu_irq);
     qdev_init_gpio_in_named(dev, mv64361_gpp_irq, "gpp", 32);
diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c
index 76893c8fcf..9ced68afea 100644
--- a/hw/xen/xen-pvh-common.c
+++ b/hw/xen/xen-pvh-common.c
@@ -230,7 +230,7 @@ static inline void xenpvh_gpex_init(XenPVHMachineState *s,
     object_initialize_child(OBJECT(s), "gpex", &s->pci.gpex,
                             TYPE_GPEX_HOST);
     dev = DEVICE(&s->pci.gpex);
-    sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
+    sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal);
 
     ecam_reg = sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0);
     memory_region_add_subregion(sysmem, s->cfg.pci_ecam.base, ecam_reg);
-- 
2.47.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.