|
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
[Prev in Thread] | Current Thread | [Next in Thread] |