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 <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/50235
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
diff --git a/src/mainboard/emulation/qemu-i440fx/northbridge.c b/src/mainboard/emulation/qemu-i440fx/northbridge.c
index f49d47da..80fba1d 100644
--- a/src/mainboard/emulation/qemu-i440fx/northbridge.c
+++ b/src/mainboard/emulation/qemu-i440fx/northbridge.c
@@ -271,6 +271,12 @@
 
 	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