qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 00/11] cpu: add i386 cpu hot remove support


From: Alexandre DERUMIER
Subject: Re: [Qemu-devel] [PATCH v2 00/11] cpu: add i386 cpu hot remove support
Date: Fri, 23 Jan 2015 11:24:17 +0100 (CET)

Hello,

I'm currently testing the new cpu unplug features,
Works fine here with debian guests and kernel 3.14.

But I have notice some small potential bugs, but I'm not sure I'm doing it 
right.

1)first, to unplug cpu, we need an id for cpu

The problem is that the current qemu command line
-smp 1,sockets=2,cores=1,maxcpus=2

for example, will create 1 cpu on apic-id 0  without any id, so we can't unplug 
it.


So, I have tried with

-smp 1,sockets=2,cores=1,maxcpus=2 -device kvm64-x86_64-cpu,apic-id=0,id=cpu0

But this give me an error:
"-device kvm64-x86_64-cpu,apic-id=0,id=cpu0: CPU with APIC ID 0 exists"

(also try to set -smp 0, but it's not working).



2) second problem, if I start with
-smp 1,sockets=2,cores=1,maxcpus=2

then hmp: 
device_add kvm64-x86_64-cpu,apic-id=1,id=cpu1

then hmp : device_del cpu1

Got an error:"
This is the last cpu, should not be removed!"



This is coming from
[PATCH 06/12] pc: add cpu hot unplug request callback   support
+    if (smp_cpus == 1) {
+        error_setg(&local_err,
+                   "This is the last cpu, should not be removed!");
+        goto out;
+    }



So, the only way unplug is working for me, is to start with -smp 2 minimum
-smp 2,sockets=2,cores=1,maxcpus=4

Then I can hotplug|unplug cpuid >= 2



Regards,

Alexandre Derumier

----- Mail original -----
De: "Zhu Guihua" <address@hidden>
À: "qemu-devel" <address@hidden>
Cc: "Zhu Guihua" <address@hidden>, address@hidden, "guz fnst" <address@hidden>, 
"isimatu yasuaki" <address@hidden>, "Anshul Makkar" <address@hidden>, "chen fan 
fnst" <address@hidden>, "Igor Mammedov" <address@hidden>, "afaerber" 
<address@hidden>
Envoyé: Mercredi 14 Janvier 2015 08:44:53
Objet: [Qemu-devel] [PATCH v2 00/11] cpu: add i386 cpu hot remove support

This series is based on chen fan's previous i386 cpu hot remove patchset: 
https://lists.nongnu.org/archive/html/qemu-devel/2013-12/msg04266.html 

Via implementing ACPI standard methods _EJ0 in ACPI table, after Guest 
OS remove one vCPU online, the fireware will store removed bitmap to 
QEMU, then QEMU could know to notify the assigned vCPU of exiting. 
Meanwhile, intruduce the QOM command 'device_del' to remove vCPU from 
QEMU itself. 

The whole work is based on the new hot plug/unplug framework, ,the unplug 
request 
callback does the pre-check and send the request, unplug callback does the 
removal handling. 

This series depends on tangchen's common hot plug/unplug enhance patchset. 
[RESEND PATCH v1 0/5] Common unplug and unplug request cb for memory and CPU 
hot-unplug 
https://lists.nongnu.org/archive/html/qemu-devel/2015-01/msg00429.html 

The is the second half of the previous series: 
[RFC V2 00/10] cpu: add device_add foo-x86_64-cpu and i386 cpu hot remove 
support 
https://lists.nongnu.org/archive/html/qemu-devel/2014-08/msg04779.html 

If you want to test the series, you need to apply the 'device_add 
foo-x86_64-cpu' 
patchset first: 
[PATCH v3 0/7] cpu: add device_add foo-x86_64-cpu support 
https://lists.nongnu.org/archive/html/qemu-devel/2015-01/msg01552.html 

--- 
Changelog since v1: 
-rebase on the latest version. 
-delete patch i386/cpu: add instance finalize callback, and put it into 
patchset 
[PATCH v3 0/6] cpu: add device_add foo-x86_64-cpu support. 

Changelog since RFC: 
-splited the i386 cpu hot remove into single thread. 
-replaced apic_no with apic_id, so does the related stuff to make it 
work with arbitrary CPU hotadd. 
-add the icc_device_unrealize callback to handle apic unrealize. 
-rework on the new hot plug/unplug platform. 
--- 

Chen Fan (2): 
x86: add x86_cpu_unrealizefn() for cpu apic remove 
cpu hotplug: implement function cpu_status_write() for vcpu ejection 

Gu Zheng (5): 
acpi/cpu: add cpu hot unplug request callback function 
acpi/piix4: add cpu hot unplug callback support 
acpi/ich9: add cpu hot unplug support 
pc: add cpu hot unplug callback support 
cpus: reclaim allocated vCPU objects 

Zhu Guihua (4): 
acpi/piix4: add cpu hot unplug request callback support 
acpi/ich9: add cpu hot unplug request callback support 
pc: add cpu hot unplug request callback support 
acpi/cpu: add cpu hot unplug callback function 

cpus.c | 44 ++++++++++++++++++++ 
hw/acpi/cpu_hotplug.c | 88 ++++++++++++++++++++++++++++++++++++--- 
hw/acpi/ich9.c | 17 ++++++-- 
hw/acpi/piix4.c | 12 +++++- 
hw/core/qdev.c | 2 +- 
hw/cpu/icc_bus.c | 11 +++++ 
hw/i386/acpi-dsdt-cpu-hotplug.dsl | 6 ++- 
hw/i386/kvm/apic.c | 8 ++++ 
hw/i386/pc.c | 62 +++++++++++++++++++++++++-- 
hw/intc/apic.c | 10 +++++ 
hw/intc/apic_common.c | 21 ++++++---- 
include/hw/acpi/cpu_hotplug.h | 8 ++++ 
include/hw/cpu/icc_bus.h | 1 + 
include/hw/i386/apic_internal.h | 1 + 
include/hw/qdev-core.h | 1 + 
include/qom/cpu.h | 9 ++++ 
include/sysemu/kvm.h | 1 + 
kvm-all.c | 57 ++++++++++++++++++++++++- 
target-i386/cpu.c | 46 ++++++++++++++++++++ 
19 files changed, 378 insertions(+), 27 deletions(-) 

-- 
1.9.3 



reply via email to

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