The dreaded Libvirt hotplug-migrate-hotunplug scenario is working nicely.
device_add when the machine is in RUN_STATE_PRELAUNCH (-S) still doesn't
work but it is expected - as discussed in "[RFC drcVI PATCH] spapr:
reset DRCs
on migration pre_load​", this scenario can't be fixed solely by this DRC
cleanup.
Given that we'll review the DT code sometime in the future I guess we can
postpone the fix for device_adding in pre-launch for that time.
Tested-by: Daniel Barboza <danie...@linux.vnet.ibm.com>
On 07/12/2017 02:53 AM, David Gibson wrote:
This sixth set of DRC cleanup patches is a complete rework of DRC
state management. We stop tracking some unnecessary things, and
change the basic state representation to a simpler and more robust
model.
Many of the patches in this set "break" migration from earlier git
snapshots, but not from any released qemu version. The previous
migration stream format had multiple problems, so better to fix them
now, before 2.10 is out.
Although there are certainly more things that can be improved in the
DRC system, with this series we should have a solid foundation for
migrating DRCs - the state trasferred is about as minimal and well
defined as it's possible to be.
Changes since v1:
* Rebased onto current tree
* Added cleanup to unplug path
* Added restriction of DR-indicator to physical DRCs
* Included revised version of Laurent's patch to correctly handle
things "hot" plugged before incoming migration
David Gibson (7):
spapr: Remove 'awaiting_allocation' DRC flag
spapr: Simplify unplug path
spapr: Refactor spapr_drc_detach()
spapr: Cleanups relating to DRC awaiting_release field
spapr: Consolidate DRC state variables
spapr: Remove sPAPRConfigureConnectorState sub-structure
spapr: Implement DR-indicator for physical DRCs only
Laurent Vivier (1):
spapr: Treat devices added before inbound migration as coldplugged
hw/ppc/spapr.c | 89 +++-------
hw/ppc/spapr_drc.c | 399 ++++++++++++++++++++++++---------------------
hw/ppc/spapr_pci.c | 17 +-
hw/ppc/trace-events | 3 +-
include/hw/ppc/spapr_drc.h | 74 ++++++---
5 files changed, 301 insertions(+), 281 deletions(-)