x86: qemu: Fix broken multi-core boot

Unfortunately the multi-core boot for QEMU x86 has been broken since
commit 77a5e2d3bc ("x86: mp_init: Set up the CPU numbers at the start").

In order to support QEMU x86 multi-core boot, the /cpus node must be
bound before any actual fix up in qemu_cpu_fixup(). This adds the
uclass_get() call to ensure this, just like what was done before.

Fixes: 77a5e2d3bc ("x86: mp_init: Set up the CPU numbers at the start")
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Bin Meng 2021-02-02 15:04:47 +08:00
parent fdcb93e170
commit 8cd1a0cf52
1 changed files with 6 additions and 0 deletions

View File

@ -17,10 +17,16 @@ int qemu_cpu_fixup(void)
int ret;
int cpu_num;
int cpu_online;
struct uclass *uc;
struct udevice *dev, *pdev;
struct cpu_plat *plat;
char *cpu;
/* This will cause the CPUs devices to be bound */
ret = uclass_get(UCLASS_CPU, &uc);
if (ret)
return ret;
/* first we need to find '/cpus' */
for (device_find_first_child(dm_root(), &pdev);
pdev;