From cfa02256a5098e8449b4cbc1830990fac75d5fc1 Mon Sep 17 00:00:00 2001 From: Patrick Rudolph Date: Tue, 2 Feb 2021 18:14:24 +0100 Subject: mb/emulation/qemu: Fix SMP boot Fix booting with SMP enabled, when specifying more CPUs than supported by the code. Change-Id: Ib3d7c1a1a7a8633d4d434ccbd46cf92b0074b724 Signed-off-by: Patrick Rudolph Reviewed-on: https://review.coreboot.org/c/coreboot/+/50235 Tested-by: build bot (Jenkins) Reviewed-by: Arthur Heymans --- src/mainboard/emulation/qemu-i440fx/northbridge.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/mainboard/emulation/qemu-i440fx') 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 -- cgit v1.2.3