This allows to hotplug/unplug PHBs. I could successfully test: - using in-kernel XICS, emulated XICS and XIVE - using experimental in-kernel XIVE from Cedric - hotplug/unplug with e1000 device to validate LSIs - hotplug/unplug with virtio-net device to validate MSIs - some simple migration scenarios
Change in v3: - reworked phandle related code some more - disintricate allocation/"type setting" of interrupts - identify LSIs at machine init Changes in v2: - rebased on current ppc-for-4.0 - added some preliminary cleanup - call unrealize from realize error path - advertise PHB hotplug in last patch - reworked phandle related code - sync LSIs to KVM Please comment. -- Greg --- Greg Kurz (11): spapr: Rename xics to intc in interrupt controller agnostic code xics: Disintricate allocation and type setting of interrupts spapr/xive: Don't set irq type in spapr_xive_irq_claim() spapr: Set irq type in a dedicated function spapr: Identify LSIs of all possible PHBs at machine init spapr_pci: add PHB unrealize spapr: Factor out setting of "phandle" DT property to sPAPR irq frontend spapr_xive: Cache device tree nodename in sPAPRXive spapr: Expose the name of the interrupt controller node spapr_irq: Expose the phandle of the interrupt controller spapr: add hotplug hooks for PHB hotplug Michael Roth (6): 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 spapr: enable PHB hotplug for default pseries machine type Nathan Fontenot (1): spapr: populate PHB DRC entries for root DT node Thomas Huth (1): ppc: Move spapr-related prototypes from xics.h into a seperate header file hw/acpi/pcihp.c | 2 - hw/acpi/piix4.c | 2 - hw/char/virtio-serial-bus.c | 2 - hw/core/bus.c | 11 +-- hw/core/machine.c | 4 + hw/intc/spapr_xive.c | 35 ++++----- hw/intc/xics.c | 28 ++++++- hw/intc/xics_kvm.c | 1 hw/intc/xics_spapr.c | 10 +-- hw/pci/pcie.c | 2 - hw/pci/shpc.c | 2 - hw/ppc/pnv_psi.c | 1 hw/ppc/spapr.c | 163 +++++++++++++++++++++++++++++++++++++++-- hw/ppc/spapr_drc.c | 18 +++++ hw/ppc/spapr_events.c | 9 ++ hw/ppc/spapr_irq.c | 129 +++++++++++++++++++++++++++----- hw/ppc/spapr_pci.c | 124 ++++++++++++++++++++++++------- hw/ppc/spapr_vio.c | 4 + 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/pci-host/spapr.h | 11 ++- include/hw/ppc/spapr.h | 4 + include/hw/ppc/spapr_drc.h | 8 ++ include/hw/ppc/spapr_irq.h | 16 +++- include/hw/ppc/spapr_xive.h | 13 +++ include/hw/ppc/xics.h | 15 ++-- include/hw/ppc/xics_spapr.h | 43 +++++++++++ include/hw/qdev-core.h | 3 - 31 files changed, 545 insertions(+), 129 deletions(-) create mode 100644 include/hw/ppc/xics_spapr.h