Hi, This is the 7th iteration of patchset that introduces CPU hotplug for PowerPC sPAPR guests using device_add/device_del commands.
(qemu) device_add powerpc64-cpu-core,id=core1 The main change in this version is about adding "info ppc-cpu-cores" QMP/HMP support to obtain information about PowerPC CPU cores. The first 6 patches are generic changes. 1/13 machine: Don't allow CPU toplogies with partially filled cores 2/13 exec: Remove cpu from cpus list during cpu_exec_exit() 3/13 exec: Do vmstate unregistration from cpu_exec_exit() 4/13 cpu: Don't realize CPU from cpu_generic_init() Above 4 patches can stand on their own and probably can be pushed ahead of actual hotplug patches when found ready. Let me know if I should pursue these in a separate patchset. Out of the above 4, last three (2/13, 3/13, 4/13) are required by s390 and have been posted in their CPU hotplug patchset. 5/13 cpu: Reclaim vCPU objects Above patch is needed by x86 as well as s390 and has been posted in their respective CPU hotplug patchsets. 6/13 cpu: Add a sync version of cpu_remove() Above patch is needed by s390 and has been posted in their CPU hotplug patchset. The remaining patches are ppc/spapr specific. This patchset applies on top of ppc-for-2.6 branch of David Gibson's tree. Changes in v7 ------------- - Added two patches (12/13, 13/13) to obtain information about ppc cpu cores via QMP/HMP. - Don't populate MachineClass::validate_smp_config() for TYPE_MACINE so that all archs are not affected and don't have to explicitly disable the enforcement of partially filled cores requirement as per Eduardo Habkost's suggestion. (01/13) - Some minor code cleanups in 10/13 as per David Gibson's suggestion. - Store the first thread representing the core in PowerPCCPUCore so that it DRC index of the core can be easily found during DRC attach (08/13, 11/13). - Make unplug_list local to core release routine as per David (11/13). v6: http://lists.gnu.org/archive/html/qemu-ppc/2016-01/msg00060.html Bharata B Rao (12): machine: Don't allow CPU toplogies with partially filled cores exec: Remove cpu from cpus list during cpu_exec_exit() exec: Do vmstate unregistration from cpu_exec_exit() cpu: Don't realize CPU from cpu_generic_init() cpu: Add a sync version of cpu_remove() xics,xics_kvm: Handle CPU unplug correctly target-ppc: Introduce PowerPC specific CPU core device spapr: Enable CPU hotplug for pseries-2.6 and add CPU DRC DT entries spapr: CPU hotplug support spapr: CPU hot unplug support qmp: Add query-ppc-cpu-cores command hmp: Add "info ppc-cpu-cores" command Gu Zheng (1): cpu: Reclaim vCPU objects cpus.c | 50 ++++++++ exec.c | 30 +++++ hmp-commands-info.hx | 16 +++ hmp.c | 31 +++++ hmp.h | 1 + hw/core/machine.c | 23 ++++ hw/i386/pc.c | 1 + hw/i386/pc_piix.c | 1 + hw/i386/pc_q35.c | 1 + hw/intc/xics.c | 14 +++ hw/intc/xics_kvm.c | 8 +- hw/ppc/Makefile.objs | 1 + hw/ppc/cpu-core.c | 152 +++++++++++++++++++++++ hw/ppc/spapr.c | 260 ++++++++++++++++++++++++++++++++++++++-- hw/ppc/spapr_events.c | 3 + hw/ppc/spapr_rtas.c | 24 ++++ include/hw/boards.h | 4 + include/hw/ppc/cpu-core.h | 33 +++++ include/hw/ppc/spapr.h | 9 ++ include/hw/ppc/xics.h | 1 + include/qom/cpu.h | 18 +++ include/sysemu/kvm.h | 1 + kvm-all.c | 57 ++++++++- kvm-stub.c | 5 + qapi-schema.json | 31 +++++ qmp-commands.hx | 51 ++++++++ qom/cpu.c | 6 - stubs/Makefile.objs | 1 + stubs/qmp_query_ppc_cpu_cores.c | 10 ++ target-arm/helper.c | 16 ++- target-cris/cpu.c | 16 ++- target-lm32/helper.c | 16 ++- target-moxie/cpu.c | 16 ++- target-openrisc/cpu.c | 16 ++- target-ppc/translate_init.c | 24 +++- target-sh4/cpu.c | 16 ++- target-tricore/helper.c | 16 ++- target-unicore32/helper.c | 16 ++- vl.c | 5 + 39 files changed, 973 insertions(+), 27 deletions(-) create mode 100644 hw/ppc/cpu-core.c create mode 100644 include/hw/ppc/cpu-core.h create mode 100644 stubs/qmp_query_ppc_cpu_cores.c -- 2.1.0