This is the last of the core QOM series. This series converts busses to QOM using a model where busses are proper objects that inherit from Object directly. Devices have a has-a relationship with any bus they implement.
This series also creates link associated with the device/bus relationships. All devices have a parent_bus link that can be (optionally) set to their parent_bus property. This link is typed as BusState. Over time, I'd like to refactor this to a subclass added property with a stronger type. For instance, PCIDevice would have a parent:link<PCIBus> property. Busses also have links to their children. These are anonymous/unstable names. Long term, I'd like to move to having stable names based on bus specific information. For instance, PCI busses ought to use a 'slot[0.0]' naming convention. I've tested this series pretty extensively. It should be clean except for the one patch that temporarily breaks and then fixes info qdm/qtree. exec.c | 4 hw/acpi_piix4.c | 10 + hw/i2c.c | 34 +++-- hw/ide/qdev.c | 55 +++++---- hw/intel-hda.c | 44 ++++--- hw/isa-bus.c | 75 ++++++------ hw/lsi53c895a.c | 5 hw/pci-hotplug.c | 6 - hw/pci.c | 221 +++++++++++++++++++------------------ hw/pci_bridge.c | 2 hw/pci_internals.h | 2 hw/qdev-monitor.c | 177 +++++++++++++++++------------- hw/qdev-properties.c | 33 +---- hw/qdev.c | 247 ++++++++++++++++++++++++++++-------------- hw/qdev.h | 53 +++++---- hw/s390-virtio-bus.c | 39 +++--- hw/scsi-bus.c | 80 +++++++------ hw/scsi.h | 4 hw/spapr_pci.c | 7 - hw/spapr_vio.c | 56 +++++---- hw/spapr_vty.c | 6 - hw/ssi.c | 28 ++-- hw/sysbus.c | 81 ++++++------- hw/usb/bus.c | 158 ++++++++++++++------------ hw/usb/dev-smartcard-reader.c | 29 +++- hw/virtio-scsi.c | 6 - hw/virtio-serial-bus.c | 55 +++++---- include/qemu/object.h | 26 ++++ qom/object.c | 33 +++++ savevm.c | 12 +- 30 files changed, 933 insertions(+), 655 deletions(-)