Hi, This is the next version of the CPU hotplug patchset for PowerPC sPAPR target. The hotplug semantics looks like this:
(qemu) device_add POWER8E-spapr-cpu-core,id=core2,core-id=16[,threads=4] (qemu) device_add host-spapr-cpu-core,id=core2,core-id=16[,threads=4] (qemu) device_add POWER8E_v2.1-spapr-cpu-core,id=core2,core-id=16[,threads=4] Changes in v4 ------------- - Rebased against David Gibson's ppc-cpu-hotplug and hence dropped those patches that are already part of that tree. - We were assuming the CPU thread to be always of type PowerPCCPU which needn't be true. Hence use actual CPU type's instance_size when object_initialize'ing the threads as per David's suggestion. This requires us to know the instance_size for a given type for which a new QOM API object_type_get_size() has been introduced in this version. - Consolidate CPU init related routines in spapr_cpu_core.c. As part of this move spapr_cpu_init() and its dependencies to spapr_cpu_core.c. - Got rid of the temporary unplug list when removing CPU cores. - Folded spapr_cpu_core_create_threads() into spapr_cpu_core_realize() and fixed the error path in in spapr_cpu_core_realize(). - Add support for -cpu host. TODOs remaining --------------- - Work on David's suggestion of intializing CPU's ObjectClass in class_init rather than instance_init. - Use object_initialize_with_type instead of object_initialize when creating CPU threads of a core. - Use vcpu_dt_id logic when populating core id in spapr_query_hotpluggable_cpus(). - Handle CPU compat properly (-cpu host,compat=POWER7) v3: https://lists.gnu.org/archive/html/qemu-devel/2016-05/msg01829.html Bharata B Rao (7): qom: API to get instance_size of a type spapr: Abstract CPU core device and type specific core devices spapr: Move spapr_cpu_init() to spapr_cpu_core.c spapr: convert boot CPUs into CPU core devices spapr: CPU hotplug support spapr: CPU hot unplug support hmp: Add 'info hotpluggable-cpus' HMP command Igor Mammedov (2): QMP: Add query-hotpluggable-cpus spapr: implement query-hotpluggable-cpus callback hmp-commands-info.hx | 14 ++ hmp.c | 41 ++++ hmp.h | 1 + hw/ppc/Makefile.objs | 1 + hw/ppc/spapr.c | 215 +++++++++++++++------ hw/ppc/spapr_cpu_core.c | 405 ++++++++++++++++++++++++++++++++++++++++ hw/ppc/spapr_events.c | 3 + hw/ppc/spapr_rtas.c | 24 +++ include/hw/boards.h | 5 + include/hw/ppc/spapr.h | 7 + include/hw/ppc/spapr_cpu_core.h | 36 ++++ include/qom/object.h | 8 +- monitor.c | 13 ++ qapi-schema.json | 55 ++++++ qmp-commands.hx | 23 +++ qom/object.c | 8 + target-ppc/kvm.c | 28 +++ 17 files changed, 828 insertions(+), 59 deletions(-) create mode 100644 hw/ppc/spapr_cpu_core.c create mode 100644 include/hw/ppc/spapr_cpu_core.h -- 2.1.0