* [PATCH v3] riscv: make sure the cores stay looping in .Lsecondary_park
@ 2020-01-09 3:15 Greentime Hu
2020-01-09 19:27 ` Paul Walmsley
0 siblings, 1 reply; 6+ messages in thread
From: Greentime Hu @ 2020-01-09 3:15 UTC (permalink / raw)
To: green.hu, greentime, paul.walmsley, palmer, linux-riscv,
linux-kernel, schwab, anup
Cc: Greentime Hu
The code in secondary_park is currently placed in the .init section. The
kernel reclaims and clears this code when it finishes booting. That
causes the cores parked in it to go to somewhere unpredictable, so we
move this function out of init to make sure the cores stay looping there.
Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
---
arch/riscv/kernel/head.S | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S
index f8f996916c5b..276b98f9d0bd 100644
--- a/arch/riscv/kernel/head.S
+++ b/arch/riscv/kernel/head.S
@@ -217,11 +217,6 @@ relocate:
tail smp_callin
#endif
-.align 2
-.Lsecondary_park:
- /* We lack SMP support or have too many harts, so park this hart */
- wfi
- j .Lsecondary_park
END(_start)
#ifdef CONFIG_RISCV_M_MODE
@@ -303,6 +298,13 @@ ENTRY(reset_regs)
END(reset_regs)
#endif /* CONFIG_RISCV_M_MODE */
+.section ".text", "ax",@progbits
+.align 2
+.Lsecondary_park:
+ /* We lack SMP support or have too many harts, so park this hart */
+ wfi
+ j .Lsecondary_park
+
__PAGE_ALIGNED_BSS
/* Empty zero page */
.balign PAGE_SIZE
--
2.17.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v3] riscv: make sure the cores stay looping in .Lsecondary_park
2020-01-09 3:15 [PATCH v3] riscv: make sure the cores stay looping in .Lsecondary_park Greentime Hu
@ 2020-01-09 19:27 ` Paul Walmsley
2020-01-12 18:12 ` Paul Walmsley
0 siblings, 1 reply; 6+ messages in thread
From: Paul Walmsley @ 2020-01-09 19:27 UTC (permalink / raw)
To: Greentime Hu
Cc: green.hu, greentime, palmer, linux-riscv, linux-kernel, schwab, anup
On Thu, 9 Jan 2020, Greentime Hu wrote:
> The code in secondary_park is currently placed in the .init section. The
> kernel reclaims and clears this code when it finishes booting. That
> causes the cores parked in it to go to somewhere unpredictable, so we
> move this function out of init to make sure the cores stay looping there.
>
> Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
> Reviewed-by: Anup Patel <anup@brainfault.org>
Thanks, the following is what's been queued for v5.5-rc.
- Paul
From: Greentime Hu <greentime.hu@sifive.com>
Date: Thu, 9 Jan 2020 11:15:16 +0800
Subject: [PATCH] riscv: make sure the cores stay looping in .Lsecondary_park
The code in secondary_park is currently placed in the .init section. The
kernel reclaims and clears this code when it finishes booting. That
causes the cores parked in it to go to somewhere unpredictable, so we
move this function out of init to make sure the cores stay looping there.
Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Cc: Andreas Schwab <schwab@suse.de>
Cc: stable@vger.kernel.org
Fixes: 76d2a0493a17d ("RISC-V: Init and Halt Code")
Signed-off-by: Paul Walmsley <paul.walmsley@sifive.com>
---
arch/riscv/kernel/head.S | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S
index 797802c73dee..c9cc44ef7184 100644
--- a/arch/riscv/kernel/head.S
+++ b/arch/riscv/kernel/head.S
@@ -209,11 +209,6 @@ relocate:
tail smp_callin
#endif
-.align 2
-.Lsecondary_park:
- /* We lack SMP support or have too many harts, so park this hart */
- wfi
- j .Lsecondary_park
END(_start)
#ifdef CONFIG_RISCV_M_MODE
@@ -295,6 +290,13 @@ ENTRY(reset_regs)
END(reset_regs)
#endif /* CONFIG_RISCV_M_MODE */
+.section ".text", "ax",@progbits
+.align 2
+.Lsecondary_park:
+ /* We lack SMP support or have too many harts, so park this hart */
+ wfi
+ j .Lsecondary_park
+
__PAGE_ALIGNED_BSS
/* Empty zero page */
.balign PAGE_SIZE
--
2.25.0.rc2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v3] riscv: make sure the cores stay looping in .Lsecondary_park
2020-01-09 19:27 ` Paul Walmsley
@ 2020-01-12 18:12 ` Paul Walmsley
2020-01-14 3:48 ` Greentime Hu
0 siblings, 1 reply; 6+ messages in thread
From: Paul Walmsley @ 2020-01-12 18:12 UTC (permalink / raw)
To: Greentime Hu
Cc: green.hu, greentime, palmer, linux-riscv, linux-kernel, schwab, anup
Hi Greentime,
On Thu, 9 Jan 2020, Paul Walmsley wrote:
> On Thu, 9 Jan 2020, Greentime Hu wrote:
>
> > The code in secondary_park is currently placed in the .init section. The
> > kernel reclaims and clears this code when it finishes booting. That
> > causes the cores parked in it to go to somewhere unpredictable, so we
> > move this function out of init to make sure the cores stay looping there.
> >
> > Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
> > Reviewed-by: Anup Patel <anup@brainfault.org>
>
> Thanks, the following is what's been queued for v5.5-rc.
During final testing, when building the kernel with an initramfs, I hit
the following linker error:
LD .tmp_vmlinux1
arch/riscv/kernel/head.o: in function `.L0 ':(.init.text+0x5c): relocation truncated to fit: R_RISCV_JAL against `.Lsecondary_park'
make[1]: *** [Makefile:1079: vmlinux] Error 1
make: *** [Makefile:326: __build_one_by_one] Error 2
Could you take a look at this?
thanks,
- Paul
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v3] riscv: make sure the cores stay looping in .Lsecondary_park
2020-01-12 18:12 ` Paul Walmsley
@ 2020-01-14 3:48 ` Greentime Hu
2020-01-14 22:55 ` Paul Walmsley
0 siblings, 1 reply; 6+ messages in thread
From: Greentime Hu @ 2020-01-14 3:48 UTC (permalink / raw)
To: Paul Walmsley
Cc: Gt, greentime, Palmer Dabbelt, linux-riscv,
Linux Kernel Mailing List, Andreas Schwab, Anup Patel
Hi Paul,
On Mon, Jan 13, 2020 at 2:12 AM Paul Walmsley <paul.walmsley@sifive.com> wrote:
>
> Hi Greentime,
>
> On Thu, 9 Jan 2020, Paul Walmsley wrote:
>
> > On Thu, 9 Jan 2020, Greentime Hu wrote:
> >
> > > The code in secondary_park is currently placed in the .init section. The
> > > kernel reclaims and clears this code when it finishes booting. That
> > > causes the cores parked in it to go to somewhere unpredictable, so we
> > > move this function out of init to make sure the cores stay looping there.
> > >
> > > Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
> > > Reviewed-by: Anup Patel <anup@brainfault.org>
> >
> > Thanks, the following is what's been queued for v5.5-rc.
>
> During final testing, when building the kernel with an initramfs, I hit
> the following linker error:
>
> LD .tmp_vmlinux1
> arch/riscv/kernel/head.o: in function `.L0 ':(.init.text+0x5c): relocation truncated to fit: R_RISCV_JAL against `.Lsecondary_park'
> make[1]: *** [Makefile:1079: vmlinux] Error 1
> make: *** [Makefile:326: __build_one_by_one] Error 2
>
> Could you take a look at this?
I think it is because the sections are too far for bqeu to jump and
the config I used just small enough for it to jump so I didn't see
this bug. Sorry about that.
I tried this fix to boot in Unleashed board.
#ifdef CONFIG_SMP
li t0, CONFIG_NR_CPUS
- bgeu a0, t0, .Lsecondary_park
+ blt a0, t0, .Lgood_cores
+ tail .Lsecondary_park
+.Lgood_cores:
#endif
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v3] riscv: make sure the cores stay looping in .Lsecondary_park
2020-01-14 3:48 ` Greentime Hu
@ 2020-01-14 22:55 ` Paul Walmsley
2020-01-15 7:06 ` Greentime Hu
0 siblings, 1 reply; 6+ messages in thread
From: Paul Walmsley @ 2020-01-14 22:55 UTC (permalink / raw)
To: Greentime Hu
Cc: Gt, greentime, Palmer Dabbelt, linux-riscv,
Linux Kernel Mailing List, Andreas Schwab, Anup Patel
Hi Greentime,
On Tue, 14 Jan 2020, Greentime Hu wrote:
> I think it is because the sections are too far for bqeu to jump and
> the config I used just small enough for it to jump so I didn't see
> this bug. Sorry about that.
No problem.
> I tried this fix to boot in Unleashed board.
>
> #ifdef CONFIG_SMP
> li t0, CONFIG_NR_CPUS
> - bgeu a0, t0, .Lsecondary_park
> + blt a0, t0, .Lgood_cores
> + tail .Lsecondary_park
> +.Lgood_cores:
> #endif
Looks reasonable to me. Care to update and repost the patch?
- Paul
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v3] riscv: make sure the cores stay looping in .Lsecondary_park
2020-01-14 22:55 ` Paul Walmsley
@ 2020-01-15 7:06 ` Greentime Hu
0 siblings, 0 replies; 6+ messages in thread
From: Greentime Hu @ 2020-01-15 7:06 UTC (permalink / raw)
To: Paul Walmsley
Cc: Gt, greentime, Palmer Dabbelt, linux-riscv,
Linux Kernel Mailing List, Andreas Schwab, Anup Patel
On Wed, Jan 15, 2020 at 6:55 AM Paul Walmsley <paul.walmsley@sifive.com> wrote:
>
> Hi Greentime,
>
> On Tue, 14 Jan 2020, Greentime Hu wrote:
>
> > I think it is because the sections are too far for bqeu to jump and
> > the config I used just small enough for it to jump so I didn't see
> > this bug. Sorry about that.
>
> No problem.
>
> > I tried this fix to boot in Unleashed board.
> >
> > #ifdef CONFIG_SMP
> > li t0, CONFIG_NR_CPUS
> > - bgeu a0, t0, .Lsecondary_park
> > + blt a0, t0, .Lgood_cores
> > + tail .Lsecondary_park
> > +.Lgood_cores:
> > #endif
>
> Looks reasonable to me. Care to update and repost the patch?
Yes, Paul. I have sent the v4 patch.
It is tested in Unleashed board.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-01-15 7:07 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-09 3:15 [PATCH v3] riscv: make sure the cores stay looping in .Lsecondary_park Greentime Hu
2020-01-09 19:27 ` Paul Walmsley
2020-01-12 18:12 ` Paul Walmsley
2020-01-14 3:48 ` Greentime Hu
2020-01-14 22:55 ` Paul Walmsley
2020-01-15 7:06 ` Greentime Hu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).