aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBin Meng2021-02-02 15:04:47 +0800
committerBin Meng2021-02-03 22:54:56 +0800
commit8cd1a0cf5205a65503351945df3cdbea1a908c15 (patch)
tree1e54643d514a12c6e8bb62b99f01a60370ccfff5
parentfdcb93e1709ab1a2ebb562455621617c29e2099c (diff)
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 <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r--arch/x86/cpu/qfw_cpu.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/cpu/qfw_cpu.c b/arch/x86/cpu/qfw_cpu.c
index a35de878b5d..b959eadddef 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;