qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 7/7] Implement cpu hot-add using device_add moni


From: Igor Mammedov
Subject: Re: [Qemu-devel] [PATCH 7/7] Implement cpu hot-add using device_add monitor command
Date: Thu, 16 Feb 2012 10:33:24 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20120131 Thunderbird/10.0

On 02/16/2012 12:35 AM, Anthony Liguori wrote:
On 02/15/2012 05:16 PM, Igor Mammedov wrote:
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>

I don't see how the code matches this description, but unless you've got 
qdev-ification patches in the earlier ones (haven't made the list yet),
device_add is not the right place for this.
Indeed, I've attempted qdev-ify cpu first (patch 2/7)


There's no such thing as "cpu-pc" either. You should start with a cpu_add 
command.
"cpu-pc" is coming from 2/7 where cpu was qdev-ifed and I needed to call it 
somehow.
Looking at other attempts to qdev-ify cpus i.e. "cpu-ppc", "cpu-mips", I've just
followed trend. Is there any suggestions on how it should be called?

As for cpu_add command, v1 had patch that introduced somewhat similar cpu_set 
qmp
command. And Jan's opinion on it was that it's not upstream-able, so device_add 
was
used instead.


Regards,

Anthony Liguori

---
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;
}



--
Thanks,
 Igor



reply via email to

[Prev in Thread] Current Thread [Next in Thread]