Hi, This is v2.1 of "Core based CPU hotplug for PowerPC sPAPR". v2 was posted here: https://lists.gnu.org/archive/html/qemu-ppc/2016-03/msg00201.html
I am making this v2.1 instead of v3 as this introduces a change in device_add semantics and if we don't want to continue this, I will go back to the previous v2 semantics from v3 onwards. v2 had spapr-cpu-core device that served as CPU core device for all types of PowerPCCPU threads. In this version however, spapr-cpu-core becomes an abstract device and we will have different core devices for each of the PowerPCCPU type. So in this version, the hotplug semantics looks like this: (qemu) device_add POWER8-spapr-cpu-core,id=core2,core=16[,threads=4] cpu_model specification is gone as it becomes redundant with different core types for each CPU type. CPU core types are defined only for host, POWER7 and POWER8 models only (and not for their variants/aliases) yet. I have mostly taken care of all the review comments that I got for v2. Major changes in this version (v2.1) ------------------------------------ - Semantics change: spapr-cpu-core to POWER8-spapr-cpu-core and likewise - Included Igor's pre_plug patch. Bharata B Rao (10): exec: Remove cpu from cpus list during cpu_exec_exit() exec: Do vmstate unregistration from cpu_exec_exit() cpu: Add a sync version of cpu_remove() cpu: Abstract CPU core type spapr: Abstract CPU core device spapr: Add CPU type specific core devices spapr: convert boot CPUs into CPU core devices spapr: CPU hotplug support xics,xics_kvm: Handle CPU unplug correctly spapr: CPU hot unplug support Gu Zheng (1): cpu: Reclaim vCPU objects Igor Mammedov (1): qdev: hotplug: Introduce HotplugHandler.pre_plug() callback cpus.c | 51 +++++- exec.c | 41 ++++- hw/core/hotplug.c | 11 ++ hw/core/qdev.c | 9 +- hw/cpu/Makefile.objs | 1 + hw/cpu/core.c | 87 ++++++++++ hw/intc/xics.c | 14 ++ hw/intc/xics_kvm.c | 8 +- hw/ppc/Makefile.objs | 1 + hw/ppc/spapr.c | 150 +++++++++++++++-- hw/ppc/spapr_cpu_core.c | 349 ++++++++++++++++++++++++++++++++++++++++ hw/ppc/spapr_events.c | 3 + hw/ppc/spapr_rtas.c | 24 +++ include/hw/cpu/core.h | 31 ++++ include/hw/hotplug.h | 14 +- include/hw/ppc/spapr.h | 6 + include/hw/ppc/spapr_cpu_core.h | 79 +++++++++ include/hw/ppc/xics.h | 1 + include/qom/cpu.h | 18 +++ include/sysemu/kvm.h | 1 + kvm-all.c | 57 ++++++- kvm-stub.c | 5 + 22 files changed, 932 insertions(+), 29 deletions(-) create mode 100644 hw/cpu/core.c create mode 100644 hw/ppc/spapr_cpu_core.c create mode 100644 include/hw/cpu/core.h create mode 100644 include/hw/ppc/spapr_cpu_core.h -- 2.1.0