Convert the *_orphan() device-creation calls in hw/dma to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name.
The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/dma/i8257.c:654 | isa_new | parent | "dma[*]" | helper already receives Object *parent; collapse existing add_child, keep name; drop _and_unref hw/dma/i8257.c:663 | isa_new | parent | "dma[*]" | helper already receives Object *parent; collapse existing add_child, keep name; drop _and_unref hw/dma/rc4030.c:750 | qdev_new | parent | "rc4030" | thread Object *parent from single caller mips_jazz_init(machine); update header + caller; drop _and_unref Link: https://lore.kernel.org/qemu-devel/[email protected]/ Assisted-by: Kiro Signed-off-by: Alexander Graf <[email protected]> --- hw/dma/i8257.c | 10 ++++------ hw/dma/rc4030.c | 7 ++++--- hw/mips/jazz.c | 2 +- include/hw/mips/mips.h | 3 ++- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/hw/dma/i8257.c b/hw/dma/i8257.c index d1ab17b80d..735d7ca9a7 100644 --- a/hw/dma/i8257.c +++ b/hw/dma/i8257.c @@ -651,23 +651,21 @@ void i8257_dma_init(Object *parent, ISABus *bus, bool high_page_enable) ISADevice *isa1, *isa2; DeviceState *d; - isa1 = isa_new_orphan(TYPE_I8257); - object_property_add_child(parent, "dma[*]", OBJECT(isa1)); + isa1 = isa_new(parent, "dma[*]", TYPE_I8257); d = DEVICE(isa1); qdev_prop_set_int32(d, "base", 0x00); qdev_prop_set_int32(d, "page-base", 0x80); qdev_prop_set_int32(d, "pageh-base", high_page_enable ? 0x480 : -1); qdev_prop_set_int32(d, "dshift", 0); - isa_realize_and_unref(isa1, bus, &error_fatal); + qdev_realize(d, BUS(bus), &error_fatal); - isa2 = isa_new_orphan(TYPE_I8257); - object_property_add_child(parent, "dma[*]", OBJECT(isa2)); + isa2 = isa_new(parent, "dma[*]", TYPE_I8257); d = DEVICE(isa2); qdev_prop_set_int32(d, "base", 0xc0); qdev_prop_set_int32(d, "page-base", 0x88); qdev_prop_set_int32(d, "pageh-base", high_page_enable ? 0x488 : -1); qdev_prop_set_int32(d, "dshift", 1); - isa_realize_and_unref(isa2, bus, &error_fatal); + qdev_realize(d, BUS(bus), &error_fatal); isa_bus_dma(bus, ISADMA(isa1), ISADMA(isa2)); } diff --git a/hw/dma/rc4030.c b/hw/dma/rc4030.c index ab8aaf7da4..800cdfb42d 100644 --- a/hw/dma/rc4030.c +++ b/hw/dma/rc4030.c @@ -743,12 +743,13 @@ static void rc4030_register_types(void) type_init(rc4030_register_types) -DeviceState *rc4030_init(rc4030_dma **dmas, IOMMUMemoryRegion **dma_mr) +DeviceState *rc4030_init(Object *parent, rc4030_dma **dmas, + IOMMUMemoryRegion **dma_mr) { DeviceState *dev; - dev = qdev_new_orphan(TYPE_RC4030); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev = qdev_new(parent, "rc4030", TYPE_RC4030); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); *dmas = rc4030_allocate_dmas(dev, 4); *dma_mr = &RC4030(dev)->dma_mr; diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index 5e34a6582d..62f2350d36 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -261,7 +261,7 @@ static void mips_jazz_init(MachineState *machine, cpu_mips_clock_init(cpu); /* Chipset */ - rc4030 = rc4030_init(&dmas, &rc4030_dma_mr); + rc4030 = rc4030_init(OBJECT(machine), &dmas, &rc4030_dma_mr); sysbus = SYS_BUS_DEVICE(rc4030); sysbus_connect_irq(sysbus, 0, env->irq[6]); sysbus_connect_irq(sysbus, 1, env->irq[3]); diff --git a/include/hw/mips/mips.h b/include/hw/mips/mips.h index cd0ccb4e5d..7fa32eab38 100644 --- a/include/hw/mips/mips.h +++ b/include/hw/mips/mips.h @@ -17,6 +17,7 @@ typedef struct rc4030DMAState *rc4030_dma; void rc4030_dma_read(void *dma, uint8_t *buf, int len); void rc4030_dma_write(void *dma, uint8_t *buf, int len); -DeviceState *rc4030_init(rc4030_dma **dmas, IOMMUMemoryRegion **dma_mr); +DeviceState *rc4030_init(Object *parent, rc4030_dma **dmas, + IOMMUMemoryRegion **dma_mr); #endif -- 2.47.1
