qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 0/28] qom: add QEMU Object Model type hierarc


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH v3 0/28] qom: add QEMU Object Model type hierarchy to qdev
Date: Wed, 25 Jan 2012 13:43:33 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.23) Gecko/20110922 Lightning/1.0b2 Thunderbird/3.1.15

On 01/25/2012 12:31 PM, Blue Swirl wrote:
On Tue, Jan 24, 2012 at 19:32, Anthony Liguori<address@hidden>  wrote:
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.

I get this with Sparc64:
$ qemu-system-sparc64
qemu-system-sparc64: PCI: slot 0 function 0 not available for pbm, in use by\

The casts in qdev are not type safe (because they don't do RTTI). You're probably getting the sysbus version of pbm but then casting to a PCI device which is resulting in a garbage name pointer.

As we switch to use the QOM dynamic casts, a similar situation would trigger an abort().

qemu-system-sparc64: Initialization of device pbm failed

Maybe because device "pbm" exists for both as SysBusDevice and as
PCIDevice. Text "in use by" is suspiciously clipped.

Sparc32, PPC32 and PPC64 seem to be OK.

This should address that and the other occurrences.

Regards,

Anthony Liguori


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(-)



Attachment: 0001-qdev-change-ambiguous-qdev-names.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]