aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cpu/qemu-x86/Kconfig4
-rw-r--r--src/mainboard/emulation/qemu-i440fx/northbridge.c6
2 files changed, 8 insertions, 2 deletions
diff --git a/src/cpu/qemu-x86/Kconfig b/src/cpu/qemu-x86/Kconfig
index 641cea815c..a22d7f9eab 100644
--- a/src/cpu/qemu-x86/Kconfig
+++ b/src/cpu/qemu-x86/Kconfig
@@ -44,8 +44,8 @@ endchoice
config MAX_CPUS
int
- default 4 if SMM_ASEG
- default 32
+ default 32 if SMM_TSEG
+ default 4
config CPU_QEMU_X86_64
bool "Experimental 64bit support"
diff --git a/src/mainboard/emulation/qemu-i440fx/northbridge.c b/src/mainboard/emulation/qemu-i440fx/northbridge.c
index f49d47dac9..80fba1de07 100644
--- a/src/mainboard/emulation/qemu-i440fx/northbridge.c
+++ b/src/mainboard/emulation/qemu-i440fx/northbridge.c
@@ -271,6 +271,12 @@ static void cpu_bus_scan(struct device *bus)
if (max_cpus < 0)
return;
+ /*
+ * Do not install more CPUs than supported by coreboot.
+ * This will cause a buffer overflow where fixed arrays of CONFIG_MAX_CPUS
+ * are used and might result in a boot failure.
+ */
+ max_cpus = MIN(max_cpus, CONFIG_MAX_CPUS);
/*
* TODO: This only handles the simple "qemu -smp $nr" case