From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55058) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bPYkn-0002do-W9 for qemu-devel@nongnu.org; Tue, 19 Jul 2016 13:24:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bPYkj-0002nD-Mg for qemu-devel@nongnu.org; Tue, 19 Jul 2016 13:24:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56990) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bPYkj-0002n7-Gr for qemu-devel@nongnu.org; Tue, 19 Jul 2016 13:24:17 -0400 From: Eduardo Habkost Date: Tue, 19 Jul 2016 14:22:56 -0300 Message-Id: <1468948976-30660-29-git-send-email-ehabkost@redhat.com> In-Reply-To: <1468948976-30660-1-git-send-email-ehabkost@redhat.com> References: <1468948976-30660-1-git-send-email-ehabkost@redhat.com> Subject: [Qemu-devel] [PULL 28/28] pc: Make device_del CPU work for x86 CPUs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: Paolo Bonzini , Richard Henderson , qemu-devel@nongnu.org, Igor Mammedov From: Igor Mammedov ACPI subsystem already has all logic in place the only thing left to eject CPU is destroy it and ammend present CPUs counter in CMOS, do so. Signed-off-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Eduardo Habkost --- hw/i386/pc.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 39ac2db..23eecc7 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1801,6 +1801,7 @@ static void pc_cpu_unplug_request_cb(HotplugHandler *hotplug_dev, static void pc_cpu_unplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + CPUArchId *found_cpu; HotplugHandlerClass *hhc; Error *local_err = NULL; PCMachineState *pcms = PC_MACHINE(hotplug_dev); @@ -1812,13 +1813,11 @@ static void pc_cpu_unplug_cb(HotplugHandler *hotplug_dev, goto out; } - /* - * TODO: enable unplug once generic CPU remove bits land - * for now guest will be able to eject CPU ACPI wise but - * it will come back again on machine reset. - */ - /* object_unparent(OBJECT(dev)); */ + found_cpu = pc_find_cpu_slot(pcms, CPU(dev), NULL); + found_cpu->cpu = NULL; + object_unparent(OBJECT(dev)); + rtc_set_memory(pcms->rtc, 0x5f, rtc_get_memory(pcms->rtc, 0x5f) - 1); out: error_propagate(errp, local_err); } -- 2.5.5