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>
This commit is contained in:
parent
944da4828f
commit
cfa02256a5
|
@ -44,8 +44,8 @@ endchoice
|
||||||
|
|
||||||
config MAX_CPUS
|
config MAX_CPUS
|
||||||
int
|
int
|
||||||
default 4 if SMM_ASEG
|
default 32 if SMM_TSEG
|
||||||
default 32
|
default 4
|
||||||
|
|
||||||
config CPU_QEMU_X86_64
|
config CPU_QEMU_X86_64
|
||||||
bool "Experimental 64bit support"
|
bool "Experimental 64bit support"
|
||||||
|
|
|
@ -271,6 +271,12 @@ static void cpu_bus_scan(struct device *bus)
|
||||||
|
|
||||||
if (max_cpus < 0)
|
if (max_cpus < 0)
|
||||||
return;
|
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
|
* TODO: This only handles the simple "qemu -smp $nr" case
|
||||||
|
|
Loading…
Reference in New Issue