[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH v3 00/12] spapr: add support for pci hotplug
From: |
Alexey Kardashevskiy |
Subject: |
Re: [Qemu-ppc] [PATCH v3 00/12] spapr: add support for pci hotplug |
Date: |
Tue, 26 Aug 2014 19:24:54 +1000 |
User-agent: |
Mozilla/5.0 (X11; Linux i686 on x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 |
On 08/19/2014 10:21 AM, Michael Roth wrote:
> These patches are based on ppc-next, and can also be obtained from:
>
> https://github.com/mdroth/qemu/commits/spapr-pci-hotplug-v3-ppc-next
>
> v3:
> * dropped emulation of firmware-managed BAR allocation. this will be
> introduced via a follow-up series via a -machine flag and tied to
> a separate hotplug event to avoid a race condition with guest vs.
> "firmware"-managed BAR allocation, in conjunction with required
> fixes to rpaphp hotplug kernel module to utilize this mode.
> * moved drc_table into sPAPREnvironment (Alexey)
> * moved INDICATOR_* constants and friends into spapr_pci.c (Alexey)
> * use prefixes for global types (DrcEntry/ConfigureConnectorState) (Alexey)
> * updated for new hotplug interface (Alexey)
> * fixed get-power-level to report current power-level rather than
> desired (Alexey)
> * rebased to latest ppc-next
>
> v2:
> * re-ordered patches to fix build bisectability (Alexey)
> * replaced g_warning with DPRINTF in RTAS calls for guest errors (Alexey)
> * replaced g_warning with fprintf for qemu errors (Alexey)
> * updated RTAS calls to use pre-existing error/success macros (Alexey)
> * replaced DR_*/SENSOR_* macros with INDICATOR_* for set-indicator/
> get-sensor-state (Alexey)
>
> OVERVIEW
>
> These patches add support for PCI hotplug for SPAPR guests. We advertise
> each PHB as DR-capable (as defined by PAPR 13.5/13.6) with 32 hotpluggable
> PCI slots per PHB, which models a standard PCI expansion device for Power
> machines where the DRC name/loc-code/index for each slot are generated
> based on bus/slot number.
>
> This is compatible with existing guest kernel's via the rpaphp hotplug
> module, and existing userspace tools such as drmgr/librtas/rtas_errd for
> managing devices, in theory...
It would help if you described roughly what happens step-by-step when
hotplugging - when HotplugHandlerClass is called, when RTAS calls are made,
what format is used between (it is something like device tree but not
exactly), when check exception interrupt is triggered...
>
> NOTES / ADDITIONAL DEPENDENCIES
>
> This series relies on v1.2.19 or later of powerppc-utils (drmgr, rtas_errd,
> ppc64-diag, and librtas components, specificially), which will automate
> guest-side hotplug setup in response to an EPOW event emitted by QEMU. For
> guests with older versions of powerpc-utils, a manual workaround must be
> used (documented below).
>
> PATCH LAYOUT
>
> Patches
> 1-3 advertise PHBs and associated slots as hotpluggable to guests
> 4-7 add RTAS interfaces required for device configuration
> 8 fix for ppc (and other) guests that allocate IO bars starting
> at 0x0
> 9 enables device_add/device_del for spapr machines and
> guest-driven hotplug
> 10-12 define hotplug event structure and emit them in response to
> device_add/device_del
>
> USAGE
>
> For guests with powerpc-utils 1.2.19+:
> hotplug:
> qemu:
> device_add e1000,id=slot0
> unplug:
> qemu:
> device_del slot0
>
> For guests with powerpc-utils prior to 1.2.19:
> hotplug:
> qemu:
> device_add e1000,id=slot0
> guest:
> drmgr -c pci -s "Slot 0" -n -a
> echo 1 >/sys/bus/pci/rescan
> unplug:
> guest:
> drmgr -c pci -s "Slot 0" -n -r
> echo 1 >/sys/bus/pci/devices/0000:00:00.0/remove
> qemu:
> device_del slot0
>
> hw/pci/pci.c | 2 +-
> hw/ppc/spapr.c | 172 +++++++++++++++++++++++++++++++++-
> hw/ppc/spapr_events.c | 224
> ++++++++++++++++++++++++++++++++++++--------
> hw/ppc/spapr_pci.c | 689
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
> include/hw/pci-host/spapr.h | 1 +
> include/hw/ppc/spapr.h | 46 ++++++++-
> 6 files changed, 1083 insertions(+), 51 deletions(-)
>
--
Alexey
- Re: [Qemu-ppc] [PATCH 08/12] pci: allow 0 address for PCI IO regions, (continued)
- [Qemu-ppc] [PATCH 05/12] spapr_pci: add get/set-power-level RTAS interfaces, Michael Roth, 2014/08/18
- [Qemu-ppc] [PATCH 07/12] spapr_pci: add ibm, configure-connector RTAS interface, Michael Roth, 2014/08/18
- [Qemu-ppc] [PATCH 12/12] spapr_pci: emit hotplug add/remove events during hotplug, Michael Roth, 2014/08/18
- [Qemu-ppc] [PATCH 11/12] spapr_events: event-scan RTAS interface, Michael Roth, 2014/08/18
- [Qemu-ppc] [PATCH 09/12] spapr_pci: enable basic hotplug operations, Michael Roth, 2014/08/18
- [Qemu-ppc] [PATCH 10/12] spapr_events: re-use EPOW event infrastructure for hotplug events, Michael Roth, 2014/08/18
- Re: [Qemu-ppc] [PATCH v3 00/12] spapr: add support for pci hotplug,
Alexey Kardashevskiy <=