Adds ability to hot-add cpus if guest was started with options -smp X,maxcpus=Y where X < Y. For simplicity sake this implementation doesn't allow to add specific cpu but rather it adds the next not yet plugged cpu.
For adding cpu just execute following command in monitor: device_add cpu-pc If guest was started with a specific cpu model, then add option model to cmonitor command. for example: device_add cpu-pc,model="host" Signed-off-by: Igor Mammedov <imamm...@redhat.com> --- hw/pc.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/hw/pc.c b/hw/pc.c index ec50f16..5923549 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -44,6 +44,8 @@ #include "ui/qemu-spice.h" #include "memory.h" #include "exec-memory.h" +#include "cpus.h" +#include "kvm.h" /* output Bochs bios info messages */ //#define DEBUG_BIOS @@ -941,6 +943,10 @@ static int cpu_device_init(ICCBusDevice *dev) #endif } + if (runstate_is_running()) { + pause_all_vcpus(); + } + if (cpu_x86_init_inplace(env, cpu->model) < 0) { return -1; } @@ -949,6 +955,11 @@ static int cpu_device_init(ICCBusDevice *dev) env->apic_state = apic_init(env, env->cpuid_apic_id); } + cpu_synchronize_post_init(env); + if (runstate_is_running()) { + resume_all_vcpus(); + acpi_cpu_hot_plug(env->cpuid_apic_id, 1); + } return 0; } -- 1.7.7.6