From 8cd1a0cf5205a65503351945df3cdbea1a908c15 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Tue, 2 Feb 2021 15:04:47 +0800 Subject: [PATCH] x86: qemu: Fix broken multi-core boot Unfortunately the multi-core boot for QEMU x86 has been broken since commit 77a5e2d3bc61 ("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: 77a5e2d3bc61 ("x86: mp_init: Set up the CPU numbers at the start") Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- arch/x86/cpu/qfw_cpu.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/x86/cpu/qfw_cpu.c b/arch/x86/cpu/qfw_cpu.c index a35de878b5..b959eaddde 100644 --- a/arch/x86/cpu/qfw_cpu.c +++ b/arch/x86/cpu/qfw_cpu.c @@ -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; -- 2.39.5