While discussing Gonglei's "[PATCH v2 00/19] usb: convert device init to realize", Paolo called the PCI conversion job "Gargantuan". This series attempts to crack it into manageable jobs.
The basic idea comes from qdev core: have the core deal with just realize, but default the device models' realize() method to one that calls the old init() method. Unconverted device models don't set their realize(), thus get one that calls their init(). We can then convert device by device instead of having to convert of all of PCI in one Gargantuan go. Since PCI's exit() cannot fail, I chose not to add an unrealize(). Precedence: USBDeviceClass method handle_destroy(), called on USB unrealize. Aside: USBDeviceClass also has an unrealize() method, but it's never set and never called. PATCH 01 converts the interface between PCI core and qdev to realize. PATCH 02 adds realize to the interface between PCI core and PCI device models. Once all device models are converted to realize, the old init interface can be dropped, completing the Gargantuan job. PATCH 03-04 convert device models that cannot fail initialization. PATCH 05-10 convert a few that can fail, but are really easy to convert. This series is RFC because it's based on Marcel's "[PATCH v2] hw/pci: fixed crash when using rombar=0 with romfile=path for hotplugged devices", which is still undergoing review. Markus Armbruster (10): pci: Convert core to realize pci: Permit incremental conversion of device models to realize pci: Trivial device model conversions to realize pcnet: pcnet_common_init() always returns 0, change to void pcnet: Convert to realize serial-pci: Convert to realize ide/ich: Convert to realize cirrus-vga: Convert to realize qxl: Convert to realize pci-assign: Convert to realize hw/acpi/piix4.c | 5 +- hw/audio/ac97.c | 5 +- hw/audio/es1370.c | 5 +- hw/audio/intel-hda.c | 6 +-- hw/char/serial-pci.c | 22 ++++----- hw/display/cirrus_vga.c | 11 ++--- hw/display/qxl.c | 36 +++++++-------- hw/display/vga-pci.c | 11 ++--- hw/display/vmware_vga.c | 6 +-- hw/i2c/smbus_ich9.c | 5 +- hw/i386/kvm/pci-assign.c | 10 ++-- hw/ide/cmd646.c | 5 +- hw/ide/ich.c | 13 +++--- hw/ide/piix.c | 10 ++-- hw/ide/via.c | 6 +-- hw/ipack/tpci200.c | 6 +-- hw/isa/i82378.c | 6 +-- hw/isa/piix4.c | 5 +- hw/isa/vt82c686.c | 24 ++++------ hw/misc/pci-testdev.c | 6 +-- hw/net/e1000.c | 6 +-- hw/net/eepro100.c | 6 +-- hw/net/lance.c | 3 +- hw/net/ne2000.c | 6 +-- hw/net/pcnet-pci.c | 6 +-- hw/net/pcnet.c | 4 +- hw/net/pcnet.h | 2 +- hw/net/rtl8139.c | 6 +-- hw/net/vmxnet3.c | 6 +-- hw/pci-bridge/dec.c | 5 +- hw/pci-host/apb.c | 5 +- hw/pci-host/bonito.c | 6 +-- hw/pci-host/grackle.c | 5 +- hw/pci-host/piix.c | 12 ++--- hw/pci-host/ppce500.c | 6 +-- hw/pci-host/prep.c | 6 +-- hw/pci-host/q35.c | 5 +- hw/pci-host/uninorth.c | 20 ++++---- hw/pci-host/versatile.c | 5 +- hw/pci/pci.c | 111 ++++++++++++++++++++++++++------------------- hw/usb/hcd-ehci-pci.c | 6 +-- hw/usb/hcd-xhci.c | 6 +-- hw/watchdog/wdt_i6300esb.c | 6 +-- include/hw/pci/pci.h | 3 +- 44 files changed, 199 insertions(+), 256 deletions(-) -- 1.9.3