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<address@hidden>
---
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;
}