From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34614) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNqYp-0003hS-Bu for qemu-devel@nongnu.org; Wed, 12 Mar 2014 17:19:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WNqYj-00034V-9A for qemu-devel@nongnu.org; Wed, 12 Mar 2014 17:19:35 -0400 Received: from mx1.redhat.com ([209.132.183.28]:57416) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNqYj-00034J-05 for qemu-devel@nongnu.org; Wed, 12 Mar 2014 17:19:29 -0400 Message-ID: <5320CF5E.5020808@redhat.com> Date: Wed, 12 Mar 2014 22:19:26 +0100 From: Laszlo Ersek MIME-Version: 1.0 References: <1394648890-933-1-git-send-email-ehabkost@redhat.com> <1394648890-933-3-git-send-email-ehabkost@redhat.com> In-Reply-To: <1394648890-933-3-git-send-email-ehabkost@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 2/4] pc: Refuse CPU hotplug if the resulting APIC ID is too large List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eduardo Habkost , qemu-devel@nongnu.org Cc: Igor Mammedov , =?ISO-8859-1?Q?Andreas_F=E4rber?= , "Michael S. Tsirkin" On 03/12/14 19:28, Eduardo Habkost wrote: > The ACPI CPU hotplug code requires APIC IDs to be smaller than > ACPI_CPU_HOTPLUG_ID_LIMIT, so enforce the limit before trying to hotplug > a new vCPU, returning an error instead of crashing. > > Signed-off-by: Eduardo Habkost > --- > hw/i386/pc.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/hw/i386/pc.c b/hw/i386/pc.c > index e715a33..74cb4f9 100644 > --- a/hw/i386/pc.c > +++ b/hw/i386/pc.c > @@ -53,6 +53,7 @@ > #include "qemu/bitmap.h" > #include "qemu/config-file.h" > #include "hw/acpi/acpi.h" > +#include "hw/acpi/cpu_hotplug.h" > #include "hw/cpu/icc_bus.h" > #include "hw/boards.h" > #include "hw/pci/pci_host.h" > @@ -974,6 +975,13 @@ void pc_hot_add_cpu(const int64_t id, Error **errp) > return; > } > > + if (apic_id >= ACPI_CPU_HOTPLUG_ID_LIMIT) { > + error_setg(errp, "Unable to add CPU: %" PRIi64 > + ", resulting APIC ID (%" PRIi64 ") is too large", > + id, apic_id); > + return; > + } > + > icc_bridge = DEVICE(object_resolve_path_type("icc-bridge", > TYPE_ICC_BRIDGE, NULL)); > pc_new_cpu(current_cpu_model, apic_id, icc_bridge, errp); > Reviewed-by: Laszlo Ersek