This series makes qdev a proper Object and converts qdev's type inheritance to QOM inheritance.
The first half of the series are manual cleanups/refactorings. The second half is mostly scripted conversion, separated out into reviewable and bisectable chunks. I've tested this series extensively for the pc target including bisectability. I have not tested any other targets yet so your mileage may vary. Since the original RFC, I've fixed any of the not-for-upstream issues. This also includes some uni-north patches that are in ppc-next. Paolo and Andreas have asked that I declare a date when I'll merge this so that people can be prepared for the rebase fall out. I will merge this on Friday unless there is a major problem found in review. This is also available at: https://github.com/aliguori/qemu/tree/qom-upstream.10 For full context, the whole tree is located at: https://github.com/aliguori/qemu/commits/qom-rebase.7 git diffstat origin/master HEAD Makefile | 2 Makefile.hw | 1 Makefile.objs | 3 Makefile.target | 2 configure | 2 hw/9pfs/virtio-9p-device.c | 44 ++-- hw/a9mpcore.c | 21 + hw/ac97.c | 39 ++- hw/acpi_piix4.c | 59 +++-- hw/ads7846.c | 17 + hw/alpha_typhoon.c | 17 + hw/apb_pci.c | 71 ++++-- hw/apic.c | 21 + hw/apic_common.c | 88 +++++--- hw/apic_internal.h | 32 +- hw/applesmc.c | 18 + hw/arm11mpcore.c | 68 +++--- hw/arm_l2x0.c | 25 +- hw/arm_mptimer.c | 23 +- hw/arm_sysctl.c | 31 +- hw/arm_timer.c | 46 +++- hw/armv7m.c | 25 +- hw/armv7m_nvic.c | 21 + hw/bitbang_i2c.c | 17 + hw/bonito.c | 47 ++-- hw/ccid-card-emulated.c | 27 +- hw/ccid-card-passthru.c | 27 +- hw/ccid.h | 28 +- hw/cirrus_vga.c | 50 ++-- hw/container.c | 17 + hw/cs4231.c | 27 +- hw/cs4231a.c | 20 + hw/debugcon.c | 16 + hw/dec_pci.c | 74 ++++-- hw/ds1225y.c | 29 +- hw/ds1338.c | 31 +- hw/e1000.c | 45 ++-- hw/eccmemctl.c | 29 +- hw/eepro100.c | 202 +++++++++++------- hw/empty_slot.c | 15 + hw/es1370.c | 36 +-- hw/escc.c | 43 ++- hw/esp.c | 27 +- hw/etraxfs_eth.c | 33 +-- hw/etraxfs_pic.c | 25 +- hw/etraxfs_ser.c | 17 + hw/etraxfs_timer.c | 16 + hw/fdc.c | 84 +++++-- hw/fw_cfg.c | 33 +-- hw/g364fb.c | 33 +-- hw/grackle_pci.c | 44 ++-- hw/grlib_apbuart.c | 25 +- hw/grlib_gptimer.c | 31 +- hw/grlib_irqmp.c | 29 +- hw/gt64xxx.c | 39 ++- hw/gus.c | 20 + hw/hda-audio.c | 60 +++-- hw/hpet.c | 33 +-- hw/i2c.c | 111 +++++++--- hw/i2c.h | 52 ++-- hw/i82374.c | 19 + hw/i82378.c | 31 +- hw/i8254.c | 22 +- hw/i8259.c | 15 + hw/i8259_common.c | 45 ++-- hw/i8259_internal.h | 27 +- hw/ide/cmd646.c | 41 ++- hw/ide/ich.c | 37 +-- hw/ide/internal.h | 20 + hw/ide/isa.c | 20 + hw/ide/piix.c | 91 +++++--- hw/ide/qdev.c | 111 ++++++---- hw/ide/via.c | 27 +- hw/integratorcp.c | 40 ++- hw/intel-hda.c | 91 +++++--- hw/intel-hda.h | 26 +- hw/ioapic.c | 17 + hw/ioapic_common.c | 49 +++- hw/ioapic_internal.h | 26 +- hw/ioh3420.c | 59 +++-- hw/isa-bus.c | 57 +++-- hw/isa.h | 23 +- hw/ivshmem.c | 47 ++-- hw/kvm/apic.c | 19 + hw/kvm/clock.c | 19 + hw/kvm/i8259.c | 19 + hw/kvm/ioapic.c | 23 +- hw/lan9118.c | 31 +- hw/lance.c | 33 +-- hw/lm32_juart.c | 19 + hw/lm32_pic.c | 19 + hw/lm32_sys.c | 29 +- hw/lm32_timer.c | 31 +- hw/lm32_uart.c | 19 + hw/lm832x.c | 33 +-- hw/lsi53c895a.c | 33 +-- hw/m48t59.c | 51 +++- hw/macio.c | 50 +++- hw/marvell_88w8618_audio.c | 35 +-- hw/max111x.c | 34 ++- hw/max7310.c | 35 +-- hw/mc146818rtc.c | 22 +- hw/milkymist-ac97.c | 19 + hw/milkymist-hpdmc.c | 19 + hw/milkymist-memcard.c | 19 + hw/milkymist-minimac2.c | 37 ++- hw/milkymist-pfpu.c | 19 + hw/milkymist-softusb.c | 43 ++- hw/milkymist-sysctl.c | 43 ++- hw/milkymist-tmu2.c | 19 + hw/milkymist-uart.c | 19 + hw/milkymist-vgafb.c | 31 +- hw/mips_malta.c | 19 + hw/mipsnet.c | 33 +-- hw/mpc8544_guts.c | 15 + hw/mst_fpga.c | 19 + hw/musicpal.c | 153 ++++++++++---- hw/nand.c | 33 +-- hw/ne2000-isa.c | 18 + hw/ne2000.c | 37 ++- hw/omap_gpio.c | 70 ++++-- hw/omap_intc.c | 62 +++-- hw/onenand.c | 35 ++- hw/opencores_eth.c | 31 +- hw/openpic.c | 30 -- hw/openpic.h | 2 hw/parallel.c | 16 + hw/pc.c | 20 + hw/pci.c | 140 +++++------- hw/pci.h | 80 +++---- hw/pci_bridge.c | 2 hw/pcie.c | 2 hw/pckbd.c | 18 + hw/pcnet-pci.c | 39 ++- hw/pcnet.c | 2 hw/piix4.c | 35 +-- hw/piix_pci.c | 126 +++++++---- hw/pl011.c | 36 ++- hw/pl022.c | 15 + hw/pl031.c | 19 + hw/pl041.c | 34 +-- hw/pl050.c | 34 ++- hw/pl061.c | 34 ++- hw/pl080.c | 38 ++- hw/pl110.c | 57 +++-- hw/pl181.c | 23 +- hw/pl190.c | 21 + hw/ppc4xx_pci.c | 38 ++- hw/ppc_newworld.c | 2 hw/ppce500_pci.c | 38 ++- hw/ppce500_spin.c | 15 + hw/prep_pci.c | 52 ++-- hw/pxa2xx.c | 96 ++++++-- hw/pxa2xx_dma.c | 29 +- hw/pxa2xx_gpio.c | 29 +- hw/pxa2xx_pic.c | 19 + hw/pxa2xx_timer.c | 66 +++--- hw/qdev-properties.c | 20 - hw/qdev.c | 123 ++++++++--- hw/qdev.h | 40 +++ hw/qxl.c | 66 +++--- hw/realview.c | 15 + hw/realview_gic.c | 16 + hw/rtl8139.c | 43 ++- hw/s390-virtio-bus.c | 110 +++++++--- hw/sb16.c | 20 + hw/sbi.c | 19 + hw/scsi-bus.c | 95 ++++++-- hw/scsi-disk.c | 159 ++++++++------ hw/scsi-generic.c | 29 +- hw/scsi.h | 31 +- hw/serial.c | 18 + hw/sga.c | 15 - hw/sh_pci.c | 37 ++- hw/slavio_intctl.c | 19 + hw/slavio_misc.c | 34 ++- hw/slavio_timer.c | 29 +- hw/smbus.c | 85 +++++-- hw/smbus.h | 42 ++- hw/smbus_eeprom.c | 27 +- hw/smc91c111.c | 31 +- hw/spapr_llan.c | 41 ++- hw/spapr_pci.c | 31 ++ hw/spapr_vio.c | 72 ++++-- hw/spapr_vio.h | 35 ++- hw/spapr_vscsi.c | 37 ++- hw/spapr_vty.c | 37 ++- hw/sparc32_dma.c | 31 +- hw/spitz.c | 94 +++++--- hw/ssd0303.c | 33 +-- hw/ssd0323.c | 17 + hw/ssi-sd.c | 17 + hw/ssi.c | 23 +- hw/ssi.h | 18 + hw/stellaris.c | 65 +++++- hw/stellaris_enet.c | 27 +- hw/strongarm.c | 124 +++++++---- hw/sun4c_intctl.c | 19 + hw/sun4m.c | 78 +++++-- hw/sun4m_iommu.c | 29 +- hw/sun4u.c | 71 ++++-- hw/sysbus.c | 40 ++- hw/sysbus.h | 25 +- hw/tcx.c | 37 ++- hw/tmp105.c | 37 ++- hw/tosa.c | 50 ++-- hw/tusb6010.c | 17 + hw/twl92230.c | 35 +-- hw/unin_pci.c | 204 +++++++++++++----- hw/usb-audio.c | 38 ++- hw/usb-bt.c | 33 +-- hw/usb-bus.c | 190 +++++++++++++---- hw/usb-ccid.c | 114 +++++++--- hw/usb-desc.c | 22 +- hw/usb-ehci.c | 63 +++-- hw/usb-hid.c | 108 +++++----- hw/usb-hub.c | 35 +-- hw/usb-msd.c | 41 ++- hw/usb-net.c | 43 ++- hw/usb-ohci.c | 58 +++-- hw/usb-serial.c | 74 +++--- hw/usb-uhci.c | 189 +++++++++++------ hw/usb-wacom.c | 36 +-- hw/usb-xhci.c | 37 ++- hw/usb.c | 24 -- hw/usb.h | 50 +++- hw/versatile_pci.c | 53 +++- hw/versatilepb.c | 19 + hw/vga-isa.c | 18 + hw/vga-pci.c | 27 +- hw/virtio-console.c | 69 +++--- hw/virtio-net.c | 2 hw/virtio-pci.c | 210 +++++++++++-------- hw/virtio-serial-bus.c | 68 +++--- hw/virtio-serial.h | 81 ++++--- hw/vmmouse.c | 22 +- hw/vmport.c | 16 + hw/vmware_vga.c | 34 +-- hw/vt82c686.c | 120 ++++++----- hw/wdt_i6300esb.c | 33 +-- hw/wdt_ib700.c | 18 + hw/wm8750.c | 37 ++- hw/xen_platform.c | 34 +-- hw/xilinx_axidma.c | 27 +- hw/xilinx_axienet.c | 35 ++- hw/xilinx_ethlite.c | 31 +- hw/xilinx_intc.c | 25 +- hw/xilinx_timer.c | 27 +- hw/xilinx_uartlite.c | 16 + hw/xio3130_downstream.c | 59 +++-- hw/xio3130_upstream.c | 53 ++-- hw/z2.c | 52 +++- hw/zaurus.c | 27 +- include/qemu/object.h | 436 ++++++++++++++++++++++++++++++++++++++++ qom/Makefile | 1 qom/object.c | 485 +++++++++++++++++++++++++++++++++++++++++++++ usb-bsd.c | 29 +- usb-linux.c | 37 +-- usb-redir.c | 33 +-- 259 files changed, 7764 insertions(+), 3755 deletions(-)