Skip to content

qom: use Type system to register all devices

Anthony Liguori qemu-devel 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest22 of 23 patches 22 repliesIn review

22 of 23 patches are in this archive. The cover letter announces 23.

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/23usb-hid: simplify class initialization a bithw/usb-hid.c+13 -140 replies
3/23qdev: make DeviceInfo privatehw/pci.c hw/qdev-properties.c hw/qdev.c +1 more+48 -231 reply
4/23qdev: remove info from classhw/pci.c hw/qdev.c hw/qdev.h+80 -440 replies
5/23qdev: allow classes to overload qdev functionshw/qdev.c+33 -200 replies
6/23qdev: refactor device creation to allow bus_info to be set only in classhw/qdev.c+19 -230 replies
7/23qdev: kill off DeviceInfo listhw/qdev.c hw/qdev.h+30 -591 reply
8/23qdev: register all types natively through QEMU Object Modelhw/9pfs/virtio-9p-device.c hw/a9mpcore.c hw/ac97.c +239 more+3169 -25442 replies
9/23qdev: kill of DeviceInfohw/i2c.c hw/ide/qdev.c hw/intel-hda.c +12 more+15 -1143 replies
10/23qdev: remove baked in notion of aliaseshw/ide/ich.c hw/lsi53c895a.c hw/qdev.c +3 more+89 -221 reply
11/23qom: allow object_class_foreach to take additional parameters to refine searchhw/qdev.c include/qemu/object.h qom/object.c+19 -41 reply
12/23qom: add new command to search for typesqapi-schema.json qerror.c qmp-commands.hx +1 more+66 -10 replies
13/23qdev: split out common init to instance_inithw/qdev.c+28 -130 replies
14/23qdev: refactor away qdev_create_from_infohw/qdev.c hw/qdev.h+25 -130 replies
15/23qdev: split out UI portions into a new functionMakefile.objs hw/qdev-monitor.c hw/qdev.c +1 more+591 -5740 replies
16/23qdev: nuke qdev_init_chardev()hw/etraxfs_ser.c hw/lm32_juart.c hw/lm32_uart.c +7 more+18 -170 replies
17/23qom: move properties from qdev to objecthw/mc146818rtc.c hw/pc_piix.c hw/piix_pci.c +9 more+785 -8163 replies
18/23qom: accept any compatible type when setting a link propertyqom/object.c+5 -40 replies
19/23qdev: implement cleanup logic in finalizehw/qdev.c+32 -250 replies
20/23info qdm: do not require a parent_bus to be sethw/qdev-monitor.c+7 -50 replies
21/23object: sure up reference countingqom/object.c+18 -23 replies
22/23container: make a decendent of ObjectMakefile.objs hw/container.c hw/qdev-monitor.c +3 more+27 -444 replies
23/23not-for-upstream: fix device_delhw/pci.c hw/qdev.c include/qemu/object.h +1 more+15 -40 replies

Reviews trailers per patch

3 of 22 patches have a Reviewed-by or Acked-by.

PatchAndreas Färber
1/23
3/23R-b
4/23
5/23
6/23
7/23
8/23
9/23R-b
10/23
11/23R-b
12/23
13/23
14/23
15/23
16/23
17/23
18/23
19/23
20/23
21/23
22/23
23/23

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [Qemu-devel] [PATCH 00/23] qom: use Type system to register all devices

(Sorry for not posting this correctly, I didn't want to spam the list with a second submission)

This is the 3rd QOM series. I decided to post this even though there's a known issue with device_del as I wanted to give people more time to review what's going on here.

The goal of this series is to make DeviceState a first class QOM base class. The result is that you can object_new(TYPE_E1000) and have a functioning device.
qdev_create() and qdev_free() are now trivialized as QOM wrappers.

Patch 8/23 is an automated touch everything patch. I decided to leave it as one big patch because this is entirely programmatic. There's no intelligence in this patch so I think it's easier to review quickly as one big change.

The other notable feature of this series it that properties have been moved to the Object base class. This means that other subsystems can begin using QOM.

This is the last touch every file in the tree series.

 b/Makefile.objs              |    4
 b/hw/9pfs/virtio-9p-device.c |   16
 b/hw/a9mpcore.c              |   40 -
 b/hw/ac97.c                  |   18
 b/hw/acpi_piix4.c            |   20
 b/hw/ads7846.c               |   11
 b/hw/alpha_typhoon.c         |   14
 b/hw/apb_pci.c               |   41 -
 b/hw/apic.c                  |   10
 b/hw/apic_common.c           |   15
 b/hw/apic_internal.h         |    1
 b/hw/applesmc.c              |   28 -
 b/hw/arm11mpcore.c           |   28 -
 b/hw/arm_l2x0.c              |   24
 b/hw/arm_mptimer.c           |   28 -
 b/hw/arm_sysctl.c            |   18
 b/hw/arm_timer.c             |   35 -
 b/hw/armv7m.c                |   14
 b/hw/armv7m_nvic.c           |   32 -
 b/hw/bitbang_i2c.c           |   14
 b/hw/bonito.c                |   32 -
 b/hw/ccid-card-emulated.c    |   35 -
 b/hw/ccid-card-passthru.c    |   28 -
 b/hw/ccid.h                  |    1
 b/hw/cirrus_vga.c            |   30 -
 b/hw/cs4231.c                |   18
 b/hw/cs4231a.c               |   30 -
 b/hw/debugcon.c              |   26
 b/hw/dec_pci.c               |   40 -
 b/hw/ds1225y.c               |   16
 b/hw/ds1338.c                |   11
 b/hw/e1000.c                 |   20
 b/hw/eccmemctl.c             |   18
 b/hw/eepro100.c              |   83 +--
 b/hw/empty_slot.c            |   11
 b/hw/es1370.c                |   16
 b/hw/escc.c                  |   18
 b/hw/esp.c                   |   18
 b/hw/etraxfs_eth.c           |   14
 b/hw/etraxfs_pic.c           |   14
 b/hw/etraxfs_ser.c           |   16
 b/hw/etraxfs_timer.c         |   11
 b/hw/fdc.c                   |   76 +-
 b/hw/fw_cfg.c                |   20
 b/hw/g364fb.c                |   20
 b/hw/grackle_pci.c           |   26
 b/hw/grlib_apbuart.c         |   14
 b/hw/grlib_gptimer.c         |   16
 b/hw/grlib_irqmp.c           |   16
 b/hw/gt64xxx.c               |   22
 b/hw/gus.c                   |   32 -
 b/hw/hda-audio.c             |   36 -
 b/hw/highbank.c              |   18
 b/hw/hpet.c                  |   20
 b/hw/i2c.c                   |   23
 b/hw/i2c.h                   |    3
 b/hw/i82374.c                |   22
 b/hw/i82378.c                |   22
 b/hw/i8254.c                 |   30 -
 b/hw/i8259.c                 |   11
 b/hw/i8259_common.c          |   13
 b/hw/i8259_internal.h        |    1
 b/hw/ide/ahci.c              |   24
 b/hw/ide/cmd646.c            |   14
 b/hw/ide/ich.c               |   15
 b/hw/ide/isa.c               |   30 -
 b/hw/ide/piix.c              |   44 -
 b/hw/ide/qdev.c              |   95 ++-
 b/hw/ide/via.c               |   14
 b/hw/integratorcp.c          |   25
 b/hw/intel-hda.c             |   39 -
 b/hw/intel-hda.h             |    1
 b/hw/ioapic.c                |   14
 b/hw/ioapic_common.c         |   10
 b/hw/ioapic_internal.h       |    1
 b/hw/ioh3420.c               |   20
 b/hw/isa-bus.c               |   38 -
 b/hw/isa.h                   |    2
 b/hw/ivshmem.c               |   16
 b/hw/kvm/apic.c              |    5
 b/hw/kvm/clock.c             |   16
 b/hw/kvm/i8259.c             |    8
 b/hw/kvm/ioapic.c            |   20
 b/hw/lan9118.c               |   18
 b/hw/lance.c                 |   20
 b/hw/lm32_juart.c            |   18
 b/hw/lm32_pic.c              |   16
 b/hw/lm32_sys.c              |   18
 b/hw/lm32_timer.c            |   18
 b/hw/lm32_uart.c             |   18
 b/hw/lm832x.c                |   14
 b/hw/lsi53c895a.c            |   17
 b/hw/m48t59.c                |   46 -
 b/hw/macio.c                 |   11
 b/hw/marvell_88w8618_audio.c |   18
 b/hw/max111x.c               |   22
 b/hw/max7310.c               |   16
 b/hw/mc146818rtc.c           |   34 -
 b/hw/milkymist-ac97.c        |   16
 b/hw/milkymist-hpdmc.c       |   16
 b/hw/milkymist-memcard.c     |   16
 b/hw/milkymist-minimac2.c    |   18
 b/hw/milkymist-pfpu.c        |   16
 b/hw/milkymist-softusb.c     |   18
 b/hw/milkymist-sysctl.c      |   18
 b/hw/milkymist-tmu2.c        |   16
 b/hw/milkymist-uart.c        |   18
 b/hw/milkymist-vgafb.c       |   18
 b/hw/mips_malta.c            |   14
 b/hw/mipsnet.c               |   20
 b/hw/mpc8544_guts.c          |   11
 b/hw/mst_fpga.c              |   16
 b/hw/musicpal.c              |  117 ++--
 b/hw/nand.c                  |   18
 b/hw/ne2000-isa.c            |   26
 b/hw/ne2000.c                |   16
 b/hw/omap_gpio.c             |   32 -
 b/hw/omap_intc.c             |   32 -
 b/hw/onenand.c               |   16
 b/hw/opencores_eth.c         |   18
 b/hw/parallel.c              |   28 -
 b/hw/pc.c                    |   18
 b/hw/pc_piix.c               |    6
 b/hw/pci.c                   |   41 -
 b/hw/pci.h                   |    2
 b/hw/pckbd.c                 |   16
 b/hw/pcnet-pci.c             |   18
 b/hw/piix4.c                 |   18
 b/hw/piix_pci.c              |   74 +-
 b/hw/pl011.c                 |   24
 b/hw/pl022.c                 |   11
 b/hw/pl031.c                 |   16
 b/hw/pl041.c                 |   20
 b/hw/pl050.c                 |   28 -
 b/hw/pl061.c                 |   28 -
 b/hw/pl080.c                 |   32 -
 b/hw/pl110.c                 |   48 +
 b/hw/pl181.c                 |   18
 b/hw/pl190.c                 |   18
 b/hw/ppc4xx_pci.c            |   28 -
 b/hw/ppc_prep.c              |    2
 b/hw/ppce500_pci.c           |   28 -
 b/hw/ppce500_spin.c          |   11
 b/hw/prep_pci.c              |   26
 b/hw/pxa2xx.c                |   56 +-
 b/hw/pxa2xx_dma.c            |   18
 b/hw/pxa2xx_gpio.c           |   16
 b/hw/pxa2xx_pic.c            |   16
 b/hw/pxa2xx_timer.c          |   36 -
 b/hw/qdev-addr.c             |    6
 b/hw/qdev-monitor.c          |  590 ++++++++++++++++++++++
 b/hw/qdev-properties.c       |   57 +-
 b/hw/qdev.c                  | 1144 +++----------------------------------------
 b/hw/qdev.h                  |  367 +------------
 b/hw/qxl.c                   |   40 -
 b/hw/realview.c              |   11
 b/hw/realview_gic.c          |   11
 b/hw/rtl8139.c               |   18
 b/hw/s390-virtio-bus.c       |  137 ++---
 b/hw/s390-virtio-bus.h       |   19
 b/hw/sb16.c                  |   34 -
 b/hw/sbi.c                   |   16
 b/hw/scsi-bus.c              |   21
 b/hw/scsi-disk.c             |  116 ++--
 b/hw/scsi-generic.c          |   28 -
 b/hw/scsi.h                  |    1
 b/hw/serial.c                |   30 -
 b/hw/sga.c                   |   14
 b/hw/sh_pci.c                |   22
 b/hw/slavio_intctl.c         |   16
 b/hw/slavio_misc.c           |   27 -
 b/hw/slavio_timer.c          |   18
 b/hw/smbus.c                 |    6
 b/hw/smbus.h                 |    2
 b/hw/smbus_eeprom.c          |   22
 b/hw/smc91c111.c             |   18
 b/hw/spapr_llan.c            |   14
 b/hw/spapr_pci.c             |   22
 b/hw/spapr_vio.c             |   37 -
 b/hw/spapr_vio.h             |    1
 b/hw/spapr_vscsi.c           |   14
 b/hw/spapr_vty.c             |   14
 b/hw/sparc32_dma.c           |   18
 b/hw/spitz.c                 |   60 +-
 b/hw/ssd0303.c               |   14
 b/hw/ssd0323.c               |   11
 b/hw/ssi-sd.c                |   11
 b/hw/ssi.c                   |   26
 b/hw/ssi.h                   |    2
 b/hw/stellaris.c             |   44 -
 b/hw/stellaris_enet.c        |   14
 b/hw/strongarm.c             |   98 ++-
 b/hw/sun4c_intctl.c          |   16
 b/hw/sun4m.c                 |   50 +
 b/hw/sun4m_iommu.c           |   18
 b/hw/sun4u.c                 |   39 -
 b/hw/sysbus.c                |   24
 b/hw/sysbus.h                |    4
 b/hw/tcx.c                   |   18
 b/hw/tmp105.c                |   14
 b/hw/tosa.c                  |   24
 b/hw/tusb6010.c              |   14
 b/hw/twl92230.c              |   14
 b/hw/unin_pci.c              |   74 +-
 b/hw/usb-audio.c             |   29 -
 b/hw/usb-bt.c                |   14
 b/hw/usb-bus.c               |   25
 b/hw/usb-ccid.c              |   46 -
 b/hw/usb-ehci.c              |   32 -
 b/hw/usb-hid.c               |   72 +-
 b/hw/usb-hub.c               |   18
 b/hw/usb-msd.c               |   31 -
 b/hw/usb-net.c               |   27 -
 b/hw/usb-ohci.c              |   42 -
 b/hw/usb-serial.c            |   50 +
 b/hw/usb-uhci.c              |   96 ++-
 b/hw/usb-wacom.c             |   21
 b/hw/usb-xhci.c              |   25
 b/hw/usb.h                   |    5
 b/hw/versatile_pci.c         |   33 -
 b/hw/versatilepb.c           |   16
 b/hw/vga-isa.c               |   16
 b/hw/vga-pci.c               |   14
 b/hw/virtio-console.c        |   28 -
 b/hw/virtio-pci.c            |   68 +-
 b/hw/virtio-serial-bus.c     |   21
 b/hw/virtio-serial.h         |    6
 b/hw/vmmouse.c               |   28 -
 b/hw/vmport.c                |   14
 b/hw/vmware_vga.c            |   16
 b/hw/vt82c686.c              |   64 +-
 b/hw/wdt_i6300esb.c          |   16
 b/hw/wdt_ib700.c             |   16
 b/hw/wm8750.c                |   14
 b/hw/xen_platform.c          |   18
 b/hw/xgmac.c                 |   25
 b/hw/xilinx_axidma.c         |   14
 b/hw/xilinx_axienet.c        |   14
 b/hw/xilinx_ethlite.c        |   14
 b/hw/xilinx_intc.c           |   14
 b/hw/xilinx_timer.c          |   14
 b/hw/xilinx_uartlite.c       |   13
 b/hw/xio3130_downstream.c    |   20
 b/hw/xio3130_upstream.c      |   20
 b/hw/z2.c                    |   28 -
 b/hw/zaurus.c                |   18
 b/include/qemu/object.h      |  226 ++++++++
 b/qapi-schema.json           |   55 +-
 b/qemu-char.c                |   10
 b/qemu-char.h                |    2
 b/qerror.c                   |    2
 b/qmp-commands.hx            |    5
 b/qmp.c                      |   61 +-
 b/qom/Makefile               |    2
 b/qom/container.c            |   15
 b/qom/object.c               |  500 ++++++++++++++++++
 b/usb-linux.c                |   35 -
 hw/container.c               |   27 -
 258 files changed, 4817 insertions(+), 4058 deletions(-)