Convert the *_orphan() device-creation calls in hw/mem 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/mem/sparse-mem.c:111 | qdev_new | parent (new arg) | "sparse-mem" | Public helper; thread Object *parent through. Only caller is generic_fuzz which passes qdev_get_machine() Link: https://lore.kernel.org/qemu-devel/[email protected]/ Assisted-by: Kiro Signed-off-by: Alexander Graf <[email protected]> --- hw/mem/sparse-mem.c | 6 +++--- include/hw/mem/sparse-mem.h | 2 +- tests/qtest/fuzz/generic_fuzz.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hw/mem/sparse-mem.c b/hw/mem/sparse-mem.c index 3310504578..fbf94eb8e7 100644 --- a/hw/mem/sparse-mem.c +++ b/hw/mem/sparse-mem.c @@ -104,14 +104,14 @@ static const Property sparse_mem_properties[] = { DEFINE_PROP_UINT64("maxsize", SparseMemState, maxsize, 10 * MiB), }; -MemoryRegion *sparse_mem_init(uint64_t addr, uint64_t length) +MemoryRegion *sparse_mem_init(Object *parent, uint64_t addr, uint64_t length) { DeviceState *dev; - dev = qdev_new_orphan(TYPE_SPARSE_MEM); + dev = qdev_new(parent, "sparse-mem", TYPE_SPARSE_MEM); qdev_prop_set_uint64(dev, "baseaddr", addr); qdev_prop_set_uint64(dev, "length", length); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map_overlap(SYS_BUS_DEVICE(dev), 0, addr, -10000); return &SPARSE_MEM(dev)->mmio; } diff --git a/include/hw/mem/sparse-mem.h b/include/hw/mem/sparse-mem.h index f9863b154b..79c30cf412 100644 --- a/include/hw/mem/sparse-mem.h +++ b/include/hw/mem/sparse-mem.h @@ -14,6 +14,6 @@ #define SPARSE_MEM_H #define TYPE_SPARSE_MEM "sparse-mem" -MemoryRegion *sparse_mem_init(uint64_t addr, uint64_t length); +MemoryRegion *sparse_mem_init(Object *parent, uint64_t addr, uint64_t length); #endif diff --git a/tests/qtest/fuzz/generic_fuzz.c b/tests/qtest/fuzz/generic_fuzz.c index e48f868775..99b38a7fd4 100644 --- a/tests/qtest/fuzz/generic_fuzz.c +++ b/tests/qtest/fuzz/generic_fuzz.c @@ -788,7 +788,7 @@ static void generic_pre_fuzz(QTestState *s) * Create a special device that we can use to back DMA buffers at very * high memory addresses */ - sparse_mem_mr = sparse_mem_init(0, UINT64_MAX); + sparse_mem_mr = sparse_mem_init(qdev_get_machine(), 0, UINT64_MAX); dma_regions = g_array_new(false, false, sizeof(address_range)); dma_patterns = g_array_new(false, false, sizeof(pattern)); -- 2.47.1
