[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 04/15] pc: Refuse CPU hotplug if the resulting APIC I
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL 04/15] pc: Refuse CPU hotplug if the resulting APIC ID is too large |
Date: |
Mon, 24 Mar 2014 13:25:02 +0200 |
From: Eduardo Habkost <address@hidden>
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 <address@hidden>
Reviewed-by: Laszlo Ersek <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
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);
--
MST
- [Qemu-devel] [PULL 00/15] acpi,pc,test bug fixes, Michael S. Tsirkin, 2014/03/24
- [Qemu-devel] [PULL 01/15] acpi-build: fix misaligned access, Michael S. Tsirkin, 2014/03/24
- [Qemu-devel] [PULL 03/15] acpi: Add ACPI_CPU_HOTPLUG_ID_LIMIT macro, Michael S. Tsirkin, 2014/03/24
- [Qemu-devel] [PULL 02/15] acpi-test: update expected SSDT files, Michael S. Tsirkin, 2014/03/24
- [Qemu-devel] [PULL 04/15] pc: Refuse CPU hotplug if the resulting APIC ID is too large,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL 05/15] acpi: Assert sts array limit on AcpiCpuHotplug_add(), Michael S. Tsirkin, 2014/03/24
- [Qemu-devel] [PULL 06/15] acpi: Don't use MAX_CPUMASK_BITS for APIC ID bitmap, Michael S. Tsirkin, 2014/03/24
- [Qemu-devel] [PULL 07/15] pc: Refuse max_cpus if it results in too large APIC ID, Michael S. Tsirkin, 2014/03/24
- [Qemu-devel] [PULL 08/15] i386/acpi-build: allow more than 255 elements in CPON, Michael S. Tsirkin, 2014/03/24
- [Qemu-devel] [PULL 09/15] acpi-test: rebuild SSDT, Michael S. Tsirkin, 2014/03/24
- [Qemu-devel] [PULL 10/15] i386/acpi-build: support hotplug of VCPU with APIC ID 0xFF, Michael S. Tsirkin, 2014/03/24
- [Qemu-devel] [PULL 11/15] acpi-test: signature endian-ness fixes, Michael S. Tsirkin, 2014/03/24
- [Qemu-devel] [PULL 12/15] acpi: fix endian-ness for table ids, Michael S. Tsirkin, 2014/03/24
- [Qemu-devel] [PULL 14/15] vl.c: Use MAX_CPUMASK_BITS macro instead of hardcoded constant, Michael S. Tsirkin, 2014/03/24
- [Qemu-devel] [PULL 15/15] tests/acpi-test: do not fail if iasl is broken, Michael S. Tsirkin, 2014/03/24