On 26/07/17 03:57, Greg Kurz wrote: > This series is based on patches from Michel Roth posted in 2015: > > https://lists.gnu.org/archive/html/qemu-devel/2015-04/msg04246.html > > It addresses comments made during the RFC review, and also provides a bunch > of preliminary cleanup/fix patches. Since we have reached hard-freeze, this > feature is provided by a new pseries-2.11 machine type, introduced by this > series. It is based on David Gibson's ppc-for-2.10 branch, and I believe some > of the preliminary fixes are eligible for 2.10. > > Note that it also requires an updated SLOF that supports a new private hcall: > KVMPPC_H_UPDATE_PHANDLE. This is needed because SLOF changes FDT phandles to > Open Firmware phandles. Since the guest only sees the latter, QEMU must use > the updated value when populating the FDT for the hotplugged PHB (otherwise > the guest can't setup IRQs for the PCI devices). SLOF part is already > upstream: > > http://git.qemu.org/?p=SLOF.git;h=604d28cc3f791657414f8b21103921fa0147fc63 > > With these patches we support the following: > > (qemu) device_add spapr-pci-host-bridge,index=2,id=phb2 > (qemu) device_add virtio-net-pci,id=hp2.0,bus=phb2.0 > (qemu) device_del hp2.0 > (qemu) device_del phb2 > > I could run some successful tests with a fedora25 guest: > - hotplug PHB + migrate + unplug PHB > - hotplug PHB + hotplug PCI device + unplug PHB => PCI device gets unplugged > - migrate before OS starts + hotplug PHB => destination uses OF phandles > - no regression observed with older machine types > > All the patches are also available here: > > https://github.com/gkurz/qemu/commits/spapr-hotplug-phb > > Cheers, > > -- > Greg > > --- > > Greg Kurz (14): > spapr: move spapr_create_phb() to core machine code > spapr_pci: use memory_region_add_subregion() with DMA windows > spapr_iommu: use g_strdup_printf() instead of snprintf() > spapr_drc: use g_strdup_printf() instead of snprintf() > spapr_iommu: convert TCE table object to realize() > spapr_pci: parent the MSI memory region to the PHB > spapr_drc: fix realize and unrealize > spapr_drc: add unrealize method to physical DRC class > spapr_iommu: unregister vmstate at unrealize time > spapr: add pseries-2.11 machine type
> spapr_pci: introduce drc_id property > spapr: allow guest to update the XICS phandle > spapr_pci: drop abusive sanity check when migrating the LSI table > spapr: add hotplug hooks for PHB hotplug This one did not make it to the lists. > > Michael Roth (11): > spapr_drc: pass object ownership to parent/owner > spapr_iommu: pass object ownership to parent/owner > pci: allow cleanup/unregistration of PCI buses > qdev: store DeviceState's canonical path to use when unparenting > spapr_pci: add PHB unrealize > spapr: enable PHB hotplug for pseries-2.11> spapr: create DR > connectors for PHBs > spapr_events: add support for phb hotplug events > qdev: pass an Object * to qbus_set_hotplug_handler() > spapr_pci: provide node start offset via spapr_populate_pci_dt() > spapr_pci: add ibm, my-drc-index property for PHB hotplug > > Nathan Fontenot (1): > spapr: populate PHB DRC entries for root DT node > > > hw/acpi/piix4.c | 2 > hw/char/virtio-serial-bus.c | 2 > hw/core/bus.c | 11 -- > hw/core/qdev.c | 15 ++- > hw/pci/pci.c | 33 +++++++ > hw/pci/pcie.c | 2 > hw/pci/shpc.c | 2 > hw/ppc/spapr.c | 205 > ++++++++++++++++++++++++++++++++++++++++- > hw/ppc/spapr_drc.c | 65 ++++++++++--- > hw/ppc/spapr_events.c | 3 + > hw/ppc/spapr_hcall.c | 20 ++++ > hw/ppc/spapr_iommu.c | 22 +++- > hw/ppc/spapr_pci.c | 86 +++++++++++++---- > hw/s390x/css-bridge.c | 2 > hw/s390x/s390-pci-bus.c | 6 + > hw/scsi/virtio-scsi.c | 2 > hw/scsi/vmw_pvscsi.c | 2 > hw/usb/dev-smartcard-reader.c | 2 > include/hw/compat.h | 3 + > include/hw/pci-host/spapr.h | 9 +- > include/hw/pci/pci.h | 3 + > include/hw/ppc/spapr.h | 15 +++ > include/hw/ppc/spapr_drc.h | 8 ++ > include/hw/qdev-core.h | 4 - > 24 files changed, 446 insertions(+), 78 deletions(-) > > -- Alexey