Convert the *_orphan() device-creation calls in hw/hppa 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/hppa/machine.c:268 | OBJECT(machine) | "lasi" | lasi_init() static helper called from board init; thread Object *parent from caller hw/hppa/machine.c:278 | OBJECT(machine) | "dino" | dino_init() static helper called from board init; thread Object *parent from caller hw/hppa/machine.c:301 | OBJECT(machine) | "cpu[*]" | board init CPU creation loop; auto-index child of machine hw/hppa/machine.c:414 | OBJECT(machine) | "artist" | board init tail; on-board Artist graphics owned by machine hw/hppa/machine.c:431 | OBJECT(machine) | "diva-gsp" | board init tail; on-board Diva GSP PCI card owned by machine hw/hppa/machine.c:446 | OBJECT(machine) | "ohci" | board init tail; on-board OHCI USB controller owned by machine hw/hppa/machine.c:449 | OBJECT(pci_dev) | "usb-kbd" | USB keyboard is child of the OHCI controller it plugs into hw/hppa/machine.c:450 | OBJECT(pci_dev) | "usb-mouse" | USB mouse is child of the OHCI controller it plugs into hw/hppa/machine.c:617 | OBJECT(machine) | "lasips2" | HP 715 board init; on-board Lasi PS/2 controller hw/hppa/machine.c:709 | OBJECT(machine) | "lasips2" | HP B160L board init; on-board Lasi PS/2 controller hw/hppa/machine.c:724 | OBJECT(machine) | "scsi" | HP B160L board init; on-board LSI SCSI HBA hw/hppa/machine.c:736 | OBJECT(machine) | "astro" | astro_init() static helper called from board init; thread Object *parent from caller hw/hppa/machine.c:776 | OBJECT(machine) | "scsi" | HP C3700 board init; on-board LSI SCSI HBA Link: https://lore.kernel.org/qemu-devel/[email protected]/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf <[email protected]> --- hw/hppa/machine.c | 60 ++++++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index a4b8e9ee77..729524e065 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -261,24 +261,24 @@ static FWCfgState *create_fw_cfg(MachineState *ms, PCIBus *pci_bus, return fw_cfg; } -static LasiState *lasi_init(void) +static LasiState *lasi_init(Object *parent) { DeviceState *dev; - dev = qdev_new_orphan(TYPE_LASI_CHIP); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev = qdev_new(parent, "lasi", TYPE_LASI_CHIP); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); return LASI_CHIP(dev); } -static DinoState *dino_init(MemoryRegion *addr_space) +static DinoState *dino_init(Object *parent, MemoryRegion *addr_space) { DeviceState *dev; - dev = qdev_new_orphan(TYPE_DINO_PCI_HOST_BRIDGE); + dev = qdev_new(parent, "dino", TYPE_DINO_PCI_HOST_BRIDGE); object_property_set_link(OBJECT(dev), "memory-as", OBJECT(addr_space), &error_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); return DINO_PCI_HOST_BRIDGE(dev); } @@ -298,7 +298,8 @@ static TranslateFn *machine_HP_common_init_cpus(MachineState *machine) /* Create CPUs. */ for (unsigned int i = 0; i < smp_cpus; i++) { - cpu[i] = HPPA_CPU(cpu_create_orphan(machine->cpu_type)); + cpu[i] = HPPA_CPU(cpu_create(OBJECT(machine), "cpu[*]", + machine->cpu_type)); } /* Initialize memory */ @@ -411,11 +412,11 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus, lasi_dev = hpm->lasi_dev; if (lasi_dev && machine->enable_graphics && vga_interface_type != VGA_NONE) { - dev = qdev_new_orphan("artist"); + dev = qdev_new(OBJECT(machine), "artist", "artist"); s = SYS_BUS_DEVICE(dev); bool disabled = object_property_get_bool(OBJECT(dev), "disable", NULL); if (!disabled) { - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); vga_interface_created = true; sysbus_mmio_map(s, 0, translate(NULL, LASI_GFX_HPA)); sysbus_mmio_map(s, 1, translate(NULL, ARTIST_FB_ADDR)); @@ -428,7 +429,8 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus, if (pci_bus && hppa_is_pa20(&cpu[0]->env)) { /* BMC board: HP Diva GSP PCI card */ - pci_dev = pci_new_multifunction_orphan(PCI_DEVFN(2, 0), "diva-gsp"); + pci_dev = pci_new_multifunction(OBJECT(machine), "diva-gsp", + PCI_DEVFN(2, 0), "diva-gsp"); if (!lasi_dev) { /* bind default keyboard/serial to Diva card */ qdev_prop_set_chr(DEVICE(pci_dev), "chardev1", serial_hd(0)); @@ -436,18 +438,19 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus, qdev_prop_set_chr(DEVICE(pci_dev), "chardev3", serial_hd(2)); qdev_prop_set_chr(DEVICE(pci_dev), "chardev4", serial_hd(3)); } - pci_realize_and_unref(pci_dev, pci_bus, &error_fatal); + qdev_realize(DEVICE(pci_dev), BUS(pci_bus), &error_fatal); } /* create USB OHCI controller for USB keyboard & mouse on Astro machines */ if (!lasi_dev && machine->enable_graphics && defaults_enabled()) { USBBus *usb_bus; - pci_create_simple_orphan(pci_bus, -1, "pci-ohci"); + pci_dev = pci_create_simple(OBJECT(machine), "ohci", pci_bus, -1, + "pci-ohci"); usb_bus = USB_BUS(object_resolve_type_unambiguous(TYPE_USB_BUS, &error_abort)); - usb_create_simple_orphan(usb_bus, "usb-kbd"); - usb_create_simple_orphan(usb_bus, "usb-mouse"); + usb_create_simple(OBJECT(pci_dev), "usb-kbd", usb_bus, "usb-kbd"); + usb_create_simple(OBJECT(pci_dev), "usb-mouse", usb_bus, "usb-mouse"); } /* register power switch emulation */ @@ -597,7 +600,7 @@ static void machine_HP_715_init(MachineState *machine) assert(isa_bus); /* Init Lasi chip */ - lasi_dev = DEVICE(lasi_init()); + lasi_dev = DEVICE(lasi_init(OBJECT(machine))); hpm->lasi_dev = lasi_dev; memory_region_add_subregion(addr_space, translate(NULL, LASI_HPA_715), sysbus_mmio_get_region( @@ -614,8 +617,8 @@ static void machine_HP_715_init(MachineState *machine) parallel_hds[0]); /* PS/2 Keyboard/Mouse */ - dev = qdev_new_orphan(TYPE_LASIPS2); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev = qdev_new(OBJECT(machine), "lasips2", TYPE_LASIPS2); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(lasi_dev, LASI_IRQ_PS2KBD_HPA)); memory_region_add_subregion(addr_space, @@ -672,14 +675,14 @@ static void machine_HP_B160L_init(MachineState *machine) } /* Init Lasi chip */ - lasi_dev = DEVICE(lasi_init()); + lasi_dev = DEVICE(lasi_init(OBJECT(machine))); hpm->lasi_dev = lasi_dev; memory_region_add_subregion(addr_space, translate(NULL, LASI_HPA), sysbus_mmio_get_region( SYS_BUS_DEVICE(lasi_dev), 0)); /* Init Dino (PCI host bus chip). */ - dino_dev = DEVICE(dino_init(addr_space)); + dino_dev = DEVICE(dino_init(OBJECT(machine), addr_space)); memory_region_add_subregion(addr_space, translate(NULL, DINO_HPA), sysbus_mmio_get_region( SYS_BUS_DEVICE(dino_dev), 0)); @@ -706,8 +709,8 @@ static void machine_HP_B160L_init(MachineState *machine) parallel_hds[0]); /* PS/2 Keyboard/Mouse */ - dev = qdev_new_orphan(TYPE_LASIPS2); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev = qdev_new(OBJECT(machine), "lasips2", TYPE_LASIPS2); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(lasi_dev, LASI_IRQ_PS2KBD_HPA)); memory_region_add_subregion(addr_space, @@ -721,7 +724,8 @@ static void machine_HP_B160L_init(MachineState *machine) /* SCSI disk setup. */ if (drive_get_max_bus(IF_SCSI) >= 0) { - dev = DEVICE(pci_create_simple_orphan(pci_bus, -1, "lsi53c895a")); + dev = DEVICE(pci_create_simple(OBJECT(machine), "scsi", pci_bus, -1, + "lsi53c895a")); lsi53c8xx_handle_legacy_cmdline(dev); } @@ -729,15 +733,15 @@ static void machine_HP_B160L_init(MachineState *machine) machine_HP_common_init_tail(machine, pci_bus, translate); } -static AstroState *astro_init(void) +static AstroState *astro_init(Object *parent) { DeviceState *dev; - dev = qdev_new_orphan(TYPE_ASTRO_CHIP); + dev = qdev_new(parent, "astro", TYPE_ASTRO_CHIP); object_property_set_int(OBJECT(dev), "phys-addr-bits", hppa_phys_addr_bits(&cpu[0]->env), &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); return ASTRO_CHIP(dev); } @@ -763,7 +767,7 @@ static void machine_HP_C3700_init(MachineState *machine) } /* Init Astro and the Elroys (PCI host bus chips). */ - astro = astro_init(); + astro = astro_init(OBJECT(machine)); astro_dev = DEVICE(astro); memory_region_add_subregion(addr_space, translate(NULL, ASTRO_HPA), sysbus_mmio_get_region( @@ -773,7 +777,9 @@ static void machine_HP_C3700_init(MachineState *machine) /* SCSI disk setup. */ if (drive_get_max_bus(IF_SCSI) >= 0) { - DeviceState *dev = DEVICE(pci_create_simple_orphan(pci_bus, -1, "lsi53c895a")); + DeviceState *dev = DEVICE(pci_create_simple(OBJECT(machine), "scsi", + pci_bus, -1, + "lsi53c895a")); lsi53c8xx_handle_legacy_cmdline(dev); } -- 2.47.1
