diff mbox series

x86: qemu: Fix broken multi-core boot

Message ID 1612249487-37379-1-git-send-email-bmeng.cn@gmail.com
State Accepted
Commit 8cd1a0cf5205a65503351945df3cdbea1a908c15
Delegated to: Bin Meng
Headers show
Series x86: qemu: Fix broken multi-core boot | expand

Commit Message

Bin Meng Feb. 2, 2021, 7:04 a.m. UTC
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>
---

 arch/x86/cpu/qfw_cpu.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Simon Glass Feb. 3, 2021, 12:59 p.m. UTC | #1
On Tue, 2 Feb 2021 at 00:05, Bin Meng <bmeng.cn@gmail.com> wrote:
>
> 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>
> ---
>
>  arch/x86/cpu/qfw_cpu.c | 6 ++++++
>  1 file changed, 6 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>
Bin Meng Feb. 3, 2021, 2:46 p.m. UTC | #2
On Wed, Feb 3, 2021 at 9:00 PM Simon Glass <sjg@chromium.org> wrote:
>
> On Tue, 2 Feb 2021 at 00:05, Bin Meng <bmeng.cn@gmail.com> wrote:
> >
> > 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>
> > ---
> >
> >  arch/x86/cpu/qfw_cpu.c | 6 ++++++
> >  1 file changed, 6 insertions(+)
>
> Reviewed-by: Simon Glass <sjg@chromium.org>

applied to u-boot-x86, thanks!
diff mbox series

Patch

diff --git a/arch/x86/cpu/qfw_cpu.c b/arch/x86/cpu/qfw_cpu.c
index a35de87..b959ead 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;