[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [RFC PATCH 00/15] spapr: add support for PHB hotplug
From: |
Michael Roth |
Subject: |
[Qemu-ppc] [RFC PATCH 00/15] spapr: add support for PHB hotplug |
Date: |
Wed, 29 Apr 2015 14:20:09 -0500 |
These patches are based on latest spapr-hotplug-pci patches, and
can also be obtained from:
https://github.com/mdroth/qemu/commits/spapr-hotplug-phb
These patches implement support for hotplug/unplug of PCI host-bridges.
The main use cases are:
- allowing for VFIO PCI hotplug for host kernels that still require a
1:1 mapping between guest PHB/TCE table and an iommu group (a
requirement that will be relaxed with Alexey Kardashevskiy's VFIO
rework for DDW support)
- allocating new PHBs/TCE tables for hotplugging/distributing VFIO
devices that have different NUMA affinities associated with them
for performance reason
- expanding hotplug capacity for passthrough/emulated PCI devices
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
Automatic add/remove of PHBs based on EPOW event mechanism require
updated versions of powerpc-utils, rtas_errd, and librtas. Patches
are forthcoming and will be available in future versions, but for now
we can add them manually by executing the following in the guest
after/before hotplug/unplug, respectively:
# add PHB
drmgr -c PHB -s "PHB 2" -a -n
# remove PHB
drmgr -c PHB -s "PHB 2" -r -n
Feedback/comments are very much appreciated.
hw/core/qdev.c | 24 ++++++++++++------
hw/pci/pci.c | 33 +++++++++++++++++++++++++
hw/ppc/spapr.c | 183
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
hw/ppc/spapr_drc.c | 1 +
hw/ppc/spapr_events.c | 5 ++++
hw/ppc/spapr_iommu.c | 1 +
hw/ppc/spapr_pci.c | 66
++++++++++++++++++++++++++++++++++++++++++++++---
include/hw/pci-host/spapr.h | 3 ++-
include/hw/pci/pci.h | 3 +++
include/hw/ppc/spapr.h | 1 +
include/hw/qdev-core.h | 3 +++
11 files changed, 310 insertions(+), 13 deletions(-)
- [Qemu-ppc] [RFC PATCH 00/15] spapr: add support for PHB hotplug,
Michael Roth <=
- [Qemu-ppc] [RFC PATCH 09/15] spapr: populate PHB DRC entries for root DT node, Michael Roth, 2015/04/29
- [Qemu-ppc] [RFC PATCH 10/15] spapr_events: add support for phb hotplug events, Michael Roth, 2015/04/29
- [Qemu-ppc] [RFC PATCH 11/15] qdev: add qbus_set_hotplug_handler_generic(), Michael Roth, 2015/04/29
- [Qemu-ppc] [RFC PATCH 14/15] spapr_pci: add ibm, my-drc-index property for PHB hotplug, Michael Roth, 2015/04/29
- [Qemu-ppc] [RFC PATCH 12/15] spapr: stub implementation of machine-level HotplugHandler interface, Michael Roth, 2015/04/29
- [Qemu-ppc] [RFC PATCH 13/15] spapr_pci: provide node start offset via spapr_populate_pci_dt(), Michael Roth, 2015/04/29
- [Qemu-ppc] [RFC PATCH 01/15] pci: allow cleanup/unregistration of PCI buses, Michael Roth, 2015/04/29
- [Qemu-ppc] [RFC PATCH 15/15] spapr: add hotplug hooks for PHB hotplug, Michael Roth, 2015/04/29
- [Qemu-ppc] [RFC PATCH 02/15] qdev: store DeviceState's canonical path to use when unparenting, Michael Roth, 2015/04/29