Cc'ing Laurent because I needed to incorporate the "spapr: manage hotplugged devices while the VM is not started" patch in this series to be able to verify that the "CPU core unplug" part of patch 3 behaves as expected.
With this series, I could successfully do the following on POWER8 host with full cores: 1) start a pseries-2.9 machine with QEMU 2.9: -smp cores=1,threads=2,maxcpus=8 2) hotplug a core: device_add host-spapr-cpu-core,core-id=4,id=core4 3) migrate to QEMU 2.10 with core4 added (ie, started with same -smp as in step 1 and same device_add as step 2): 4) hotplug another core: device_add host-spapr-cpu-core,core-id=2,id=core2 5) migrate back to QEMU 2.9 with core4 and core2 added 6) hotplug the core in the last available slot: device_add host-spapr-cpu-core,core-id=6,id=core6 7) migrate to QEMU 2.10 with core4, core2 and core6 added The following step requires Laurent's patch, otherwise the guest complains about the non-existing DRC and fails to unplug the cores. 8) unplug some cores: device_del core4 device_del core2 9) migrate back to QEMU 2.9 with core6 added v5: - some patches from v4 got merged - rebased and added Laurent's change to manage hotplugging of CPU on the destination host (patch 1) - see individual changelog for patches 2 and 3 v4: - some patches from v3 got merged - added some more preparatory cleanup in xics (patches 1,2) - merge cpu_setup() handler into realize() (patch 4) - see individual changelog for patches 3 and 6 v3: - preparatory cleanup in pnv (patch 1) - rework ICPState realization and vmstate registration (patches 2,3,4) - fix migration using dummy icp/server entries (patch 5) v2: - some patches from v1 are already merged in ppc-for-2.10 - added a new fix to a potential memory leak (patch 1) - consolidate dt_id computation (patch 3) - see individual changelogs for patch 2 and 4 Cheers. -- Greg --- Greg Kurz (2): xics: directly register ICPState objects to vmstate spapr: fix migration of ICPState objects from/to older QEMU Laurent Vivier (1): spapr: manage hotplugged devices while the VM is not started hw/intc/xics.c | 5 ++ hw/ppc/spapr.c | 107 ++++++++++++++++++++++++++++++++++++++++++++---- include/hw/ppc/spapr.h | 1 3 files changed, 104 insertions(+), 9 deletions(-)