[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 07/15] pc: Refuse max_cpus if it results in too large
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL 07/15] pc: Refuse max_cpus if it results in too large APIC ID |
Date: |
Mon, 24 Mar 2014 13:25:21 +0200 |
From: Eduardo Habkost <address@hidden>
This changes the PC initialization code to reject max_cpus if it results
in an APIC ID that's too large, instead of aborting or erroring out when
it is already too late.
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 74cb4f9..14f0d91 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -992,6 +992,7 @@ void pc_cpus_init(const char *cpu_model, DeviceState
*icc_bridge)
int i;
X86CPU *cpu = NULL;
Error *error = NULL;
+ unsigned long apic_id_limit;
/* init CPUs */
if (cpu_model == NULL) {
@@ -1003,6 +1004,13 @@ void pc_cpus_init(const char *cpu_model, DeviceState
*icc_bridge)
}
current_cpu_model = cpu_model;
+ apic_id_limit = pc_apic_id_limit(max_cpus);
+ if (apic_id_limit > ACPI_CPU_HOTPLUG_ID_LIMIT) {
+ error_report("max_cpus is too large. APIC ID of last CPU is %lu",
+ apic_id_limit - 1);
+ exit(1);
+ }
+
for (i = 0; i < smp_cpus; i++) {
cpu = pc_new_cpu(cpu_model, x86_cpu_apic_id_from_index(i),
icc_bridge, &error);
--
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, 2014/03/24
- [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 <=
- [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
- [Qemu-devel] [PULL 13/15] sysemu.h: Document what MAX_CPUMASK_BITS really limits, Michael S. Tsirkin, 2014/03/24
- Re: [Qemu-devel] [PULL 00/15] acpi,pc,test bug fixes, Peter Maydell, 2014/03/24