* [PATCH] arm64: Initialize jump labels before setup_machine_fdt()
@ 2022-06-02 2:21 Stephen Boyd
2022-06-02 6:50 ` Jason A. Donenfeld
2022-06-02 19:41 ` Catalin Marinas
0 siblings, 2 replies; 8+ messages in thread
From: Stephen Boyd @ 2022-06-02 2:21 UTC (permalink / raw)
To: Catalin Marinas, Will Deacon
Cc: linux-kernel, patches, linux-arm-kernel, Hsin-Yi Wang,
Douglas Anderson, Ard Biesheuvel, Steven Rostedt,
Jason A . Donenfeld, Dominik Brodowski
A static key warning splat appears during early boot on arm64 systems
that credit randomness from devicetrees that contain an "rng-seed"
property. This is because setup_machine_fdt() is called before
jump_label_init() during setup_arch(). Let's swap the order of these two
calls so that jump labels are initialized before the devicetree is
unflattened and the rng seed is credited.
static_key_enable_cpuslocked(): static key '0xffffffe51c6fcfc0' used before call to jump_label_init()
WARNING: CPU: 0 PID: 0 at kernel/jump_label.c:166 static_key_enable_cpuslocked+0xb0/0xb8
Modules linked in:
CPU: 0 PID: 0 Comm: swapper Not tainted 5.18.0+ #224 44b43e377bfc84bc99bb5ab885ff694984ee09ff
pstate: 600001c9 (nZCv dAIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : static_key_enable_cpuslocked+0xb0/0xb8
lr : static_key_enable_cpuslocked+0xb0/0xb8
sp : ffffffe51c393cf0
x29: ffffffe51c393cf0 x28: 000000008185054c x27: 00000000f1042f10
x26: 0000000000000000 x25: 00000000f10302b2 x24: 0000002513200000
x23: 0000002513200000 x22: ffffffe51c1c9000 x21: fffffffdfdc00000
x20: ffffffe51c2f0831 x19: ffffffe51c6fcfc0 x18: 00000000ffff1020
x17: 00000000e1e2ac90 x16: 00000000000000e0 x15: ffffffe51b710708
x14: 0000000000000066 x13: 0000000000000018 x12: 0000000000000000
x11: 0000000000000000 x10: 00000000ffffffff x9 : 0000000000000000
x8 : 0000000000000000 x7 : 61632065726f6665 x6 : 6220646573752027
x5 : ffffffe51c641d25 x4 : ffffffe51c13142c x3 : ffff0a00ffffff05
x2 : 40000000ffffe003 x1 : 00000000000001c0 x0 : 0000000000000065
Call trace:
static_key_enable_cpuslocked+0xb0/0xb8
static_key_enable+0x2c/0x40
crng_set_ready+0x24/0x30
execute_in_process_context+0x80/0x90
_credit_init_bits+0x100/0x154
add_bootloader_randomness+0x64/0x78
early_init_dt_scan_chosen+0x140/0x184
early_init_dt_scan_nodes+0x28/0x4c
early_init_dt_scan+0x40/0x44
setup_machine_fdt+0x7c/0x120
setup_arch+0x74/0x1d8
start_kernel+0x84/0x44c
__primary_switched+0xc0/0xc8
---[ end trace 0000000000000000 ]---
random: crng init done
Machine model: Google Lazor (rev1 - 2) with LTE
Cc: Hsin-Yi Wang <hsinyi@chromium.org>
Cc: Douglas Anderson <dianders@chromium.org>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Jason A. Donenfeld <Jason@zx2c4.com>
Cc: Dominik Brodowski <linux@dominikbrodowski.net>
Fixes: f5bda35fba61 ("random: use static branch for crng_ready()")
Signed-off-by: Stephen Boyd <swboyd@chromium.org>
---
arch/arm64/kernel/setup.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
index fea3223704b6..cf3a759f10d4 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -303,13 +303,14 @@ void __init __no_sanitize_address setup_arch(char **cmdline_p)
early_fixmap_init();
early_ioremap_init();
- setup_machine_fdt(__fdt_pointer);
-
/*
* Initialise the static keys early as they may be enabled by the
- * cpufeature code and early parameters.
+ * cpufeature code, early parameters, and DT setup.
*/
jump_label_init();
+
+ setup_machine_fdt(__fdt_pointer);
+
parse_early_param();
/*
--
https://chromeos.dev
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH] arm64: Initialize jump labels before setup_machine_fdt() 2022-06-02 2:21 [PATCH] arm64: Initialize jump labels before setup_machine_fdt() Stephen Boyd @ 2022-06-02 6:50 ` Jason A. Donenfeld 2022-06-02 19:41 ` Catalin Marinas 1 sibling, 0 replies; 8+ messages in thread From: Jason A. Donenfeld @ 2022-06-02 6:50 UTC (permalink / raw) To: Stephen Boyd Cc: Catalin Marinas, Will Deacon, linux-kernel, patches, linux-arm-kernel, Hsin-Yi Wang, Douglas Anderson, Ard Biesheuvel, Steven Rostedt, Dominik Brodowski Hi Stephen, On 6/2/22, Stephen Boyd <swboyd@chromium.org> wrote: > A static key warning splat appears during early boot on arm64 systems > that credit randomness from devicetrees that contain an "rng-seed" > property. This is because setup_machine_fdt() is called before > jump_label_init() during setup_arch(). Let's swap the order of these two > calls so that jump labels are initialized before the devicetree is > unflattened and the rng seed is credited. > > static_key_enable_cpuslocked(): static key '0xffffffe51c6fcfc0' used before > call to jump_label_init() > WARNING: CPU: 0 PID: 0 at kernel/jump_label.c:166 > static_key_enable_cpuslocked+0xb0/0xb8 > Modules linked in: > CPU: 0 PID: 0 Comm: swapper Not tainted 5.18.0+ #224 > 44b43e377bfc84bc99bb5ab885ff694984ee09ff > pstate: 600001c9 (nZCv dAIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--) > pc : static_key_enable_cpuslocked+0xb0/0xb8 > lr : static_key_enable_cpuslocked+0xb0/0xb8 > sp : ffffffe51c393cf0 > x29: ffffffe51c393cf0 x28: 000000008185054c x27: 00000000f1042f10 > x26: 0000000000000000 x25: 00000000f10302b2 x24: 0000002513200000 > x23: 0000002513200000 x22: ffffffe51c1c9000 x21: fffffffdfdc00000 > x20: ffffffe51c2f0831 x19: ffffffe51c6fcfc0 x18: 00000000ffff1020 > x17: 00000000e1e2ac90 x16: 00000000000000e0 x15: ffffffe51b710708 > x14: 0000000000000066 x13: 0000000000000018 x12: 0000000000000000 > x11: 0000000000000000 x10: 00000000ffffffff x9 : 0000000000000000 > x8 : 0000000000000000 x7 : 61632065726f6665 x6 : 6220646573752027 > x5 : ffffffe51c641d25 x4 : ffffffe51c13142c x3 : ffff0a00ffffff05 > x2 : 40000000ffffe003 x1 : 00000000000001c0 x0 : 0000000000000065 > Call trace: > static_key_enable_cpuslocked+0xb0/0xb8 > static_key_enable+0x2c/0x40 > crng_set_ready+0x24/0x30 > execute_in_process_context+0x80/0x90 > _credit_init_bits+0x100/0x154 > add_bootloader_randomness+0x64/0x78 > early_init_dt_scan_chosen+0x140/0x184 > early_init_dt_scan_nodes+0x28/0x4c > early_init_dt_scan+0x40/0x44 > setup_machine_fdt+0x7c/0x120 > setup_arch+0x74/0x1d8 > start_kernel+0x84/0x44c > __primary_switched+0xc0/0xc8 > ---[ end trace 0000000000000000 ]--- > random: crng init done > Machine model: Google Lazor (rev1 - 2) with LTE > > Cc: Hsin-Yi Wang <hsinyi@chromium.org> > Cc: Douglas Anderson <dianders@chromium.org> > Cc: Ard Biesheuvel <ardb@kernel.org> > Cc: Steven Rostedt <rostedt@goodmis.org> > Cc: Jason A. Donenfeld <Jason@zx2c4.com> > Cc: Dominik Brodowski <linux@dominikbrodowski.net> > Fixes: f5bda35fba61 ("random: use static branch for crng_ready()") > Signed-off-by: Stephen Boyd <swboyd@chromium.org> Thanks for fixing this. Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com> In looking at the matter more in depth, it looks like riscv does things in the right order, but arm32 still does not. AFAICT, it uses the logic in init/main.c, in which jump_label_init() is called before setup_arch()->setup_machine_fdt(). Want to submit a patch for arm32? Jason _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] arm64: Initialize jump labels before setup_machine_fdt() 2022-06-02 2:21 [PATCH] arm64: Initialize jump labels before setup_machine_fdt() Stephen Boyd 2022-06-02 6:50 ` Jason A. Donenfeld @ 2022-06-02 19:41 ` Catalin Marinas 2022-06-02 19:42 ` Jason A. Donenfeld 1 sibling, 1 reply; 8+ messages in thread From: Catalin Marinas @ 2022-06-02 19:41 UTC (permalink / raw) To: Stephen Boyd, Will Deacon Cc: Dominik Brodowski, Ard Biesheuvel, Jason A . Donenfeld, linux-arm-kernel, linux-kernel, Douglas Anderson, Hsin-Yi Wang, Steven Rostedt, patches On Wed, 1 Jun 2022 19:21:09 -0700, Stephen Boyd wrote: > A static key warning splat appears during early boot on arm64 systems > that credit randomness from devicetrees that contain an "rng-seed" > property. This is because setup_machine_fdt() is called before > jump_label_init() during setup_arch(). Let's swap the order of these two > calls so that jump labels are initialized before the devicetree is > unflattened and the rng seed is credited. > > [...] Applied to arm64 (for-next/core), thanks! [1/1] arm64: Initialize jump labels before setup_machine_fdt() https://git.kernel.org/arm64/c/73e2d827a501 -- Catalin _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] arm64: Initialize jump labels before setup_machine_fdt() 2022-06-02 19:41 ` Catalin Marinas @ 2022-06-02 19:42 ` Jason A. Donenfeld 2022-06-02 19:46 ` Catalin Marinas 0 siblings, 1 reply; 8+ messages in thread From: Jason A. Donenfeld @ 2022-06-02 19:42 UTC (permalink / raw) To: Catalin Marinas Cc: Stephen Boyd, Will Deacon, Dominik Brodowski, Ard Biesheuvel, linux-arm-kernel, LKML, Douglas Anderson, Hsin-Yi Wang, Steven Rostedt, patches Hi Catalin, On Thu, Jun 2, 2022 at 9:41 PM Catalin Marinas <catalin.marinas@arm.com> wrote: > > On Wed, 1 Jun 2022 19:21:09 -0700, Stephen Boyd wrote: > > A static key warning splat appears during early boot on arm64 systems > > that credit randomness from devicetrees that contain an "rng-seed" > > property. This is because setup_machine_fdt() is called before > > jump_label_init() during setup_arch(). Let's swap the order of these two > > calls so that jump labels are initialized before the devicetree is > > unflattened and the rng seed is credited. > > > > [...] > > Applied to arm64 (for-next/core), thanks! > > [1/1] arm64: Initialize jump labels before setup_machine_fdt() > https://git.kernel.org/arm64/c/73e2d827a501 I'm not sure precisely what your for-next tag corresponds to, but just FYI, this should probably go into 5.19 asap and be marked for stable@. Jason _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] arm64: Initialize jump labels before setup_machine_fdt() 2022-06-02 19:42 ` Jason A. Donenfeld @ 2022-06-02 19:46 ` Catalin Marinas 2022-06-02 20:18 ` Jason A. Donenfeld 0 siblings, 1 reply; 8+ messages in thread From: Catalin Marinas @ 2022-06-02 19:46 UTC (permalink / raw) To: Jason A. Donenfeld Cc: Stephen Boyd, Will Deacon, Dominik Brodowski, Ard Biesheuvel, linux-arm-kernel, LKML, Douglas Anderson, Hsin-Yi Wang, Steven Rostedt, patches Hi Jason, On Thu, Jun 02, 2022 at 09:42:49PM +0200, Jason A. Donenfeld wrote: > On Thu, Jun 2, 2022 at 9:41 PM Catalin Marinas <catalin.marinas@arm.com> wrote: > > On Wed, 1 Jun 2022 19:21:09 -0700, Stephen Boyd wrote: > > > A static key warning splat appears during early boot on arm64 systems > > > that credit randomness from devicetrees that contain an "rng-seed" > > > property. This is because setup_machine_fdt() is called before > > > jump_label_init() during setup_arch(). Let's swap the order of these two > > > calls so that jump labels are initialized before the devicetree is > > > unflattened and the rng seed is credited. > > > > > > [...] > > > > Applied to arm64 (for-next/core), thanks! > > > > [1/1] arm64: Initialize jump labels before setup_machine_fdt() > > https://git.kernel.org/arm64/c/73e2d827a501 > > I'm not sure precisely what your for-next tag corresponds to, but just > FYI, this should probably go into 5.19 asap and be marked for stable@. The for-next/core branch should go in 5.19-rc1 (I'll send a pull request tomorrow). There's no need to cc stable since the fixed commit just went in (unless you mean something else by "marked for stable"). -- Catalin _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] arm64: Initialize jump labels before setup_machine_fdt() 2022-06-02 19:46 ` Catalin Marinas @ 2022-06-02 20:18 ` Jason A. Donenfeld 2022-06-02 21:08 ` Catalin Marinas 0 siblings, 1 reply; 8+ messages in thread From: Jason A. Donenfeld @ 2022-06-02 20:18 UTC (permalink / raw) To: Catalin Marinas Cc: Stephen Boyd, Will Deacon, Dominik Brodowski, Ard Biesheuvel, linux-arm-kernel, LKML, Douglas Anderson, Hsin-Yi Wang, Steven Rostedt, patches On Thu, Jun 2, 2022 at 9:46 PM Catalin Marinas <catalin.marinas@arm.com> wrote: > > Hi Jason, > > On Thu, Jun 02, 2022 at 09:42:49PM +0200, Jason A. Donenfeld wrote: > > On Thu, Jun 2, 2022 at 9:41 PM Catalin Marinas <catalin.marinas@arm.com> wrote: > > > On Wed, 1 Jun 2022 19:21:09 -0700, Stephen Boyd wrote: > > > > A static key warning splat appears during early boot on arm64 systems > > > > that credit randomness from devicetrees that contain an "rng-seed" > > > > property. This is because setup_machine_fdt() is called before > > > > jump_label_init() during setup_arch(). Let's swap the order of these two > > > > calls so that jump labels are initialized before the devicetree is > > > > unflattened and the rng seed is credited. > > > > > > > > [...] > > > > > > Applied to arm64 (for-next/core), thanks! > > > > > > [1/1] arm64: Initialize jump labels before setup_machine_fdt() > > > https://git.kernel.org/arm64/c/73e2d827a501 > > > > I'm not sure precisely what your for-next tag corresponds to, but just > > FYI, this should probably go into 5.19 asap and be marked for stable@. > > The for-next/core branch should go in 5.19-rc1 (I'll send a pull request > tomorrow). There's no need to cc stable since the fixed commit just went > in (unless you mean something else by "marked for stable"). It is actually in stable, so please do CC. Otherwise I'll just forward manually. Jason _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] arm64: Initialize jump labels before setup_machine_fdt() 2022-06-02 20:18 ` Jason A. Donenfeld @ 2022-06-02 21:08 ` Catalin Marinas 2022-06-02 21:10 ` Jason A. Donenfeld 0 siblings, 1 reply; 8+ messages in thread From: Catalin Marinas @ 2022-06-02 21:08 UTC (permalink / raw) To: Jason A. Donenfeld Cc: Stephen Boyd, Will Deacon, Dominik Brodowski, Ard Biesheuvel, linux-arm-kernel, LKML, Douglas Anderson, Hsin-Yi Wang, Steven Rostedt, patches On Thu, Jun 02, 2022 at 10:18:04PM +0200, Jason A. Donenfeld wrote: > On Thu, Jun 2, 2022 at 9:46 PM Catalin Marinas <catalin.marinas@arm.com> wrote: > > On Thu, Jun 02, 2022 at 09:42:49PM +0200, Jason A. Donenfeld wrote: > > > On Thu, Jun 2, 2022 at 9:41 PM Catalin Marinas <catalin.marinas@arm.com> wrote: > > > > On Wed, 1 Jun 2022 19:21:09 -0700, Stephen Boyd wrote: > > > > > A static key warning splat appears during early boot on arm64 systems > > > > > that credit randomness from devicetrees that contain an "rng-seed" > > > > > property. This is because setup_machine_fdt() is called before > > > > > jump_label_init() during setup_arch(). Let's swap the order of these two > > > > > calls so that jump labels are initialized before the devicetree is > > > > > unflattened and the rng seed is credited. > > > > > > > > > > [...] > > > > > > > > Applied to arm64 (for-next/core), thanks! > > > > > > > > [1/1] arm64: Initialize jump labels before setup_machine_fdt() > > > > https://git.kernel.org/arm64/c/73e2d827a501 > > > > > > I'm not sure precisely what your for-next tag corresponds to, but just > > > FYI, this should probably go into 5.19 asap and be marked for stable@. > > > > The for-next/core branch should go in 5.19-rc1 (I'll send a pull request > > tomorrow). There's no need to cc stable since the fixed commit just went > > in (unless you mean something else by "marked for stable"). > > It is actually in stable, so please do CC. Otherwise I'll just forward manually. Ah, I didn't know this (the fixed commit doesn't have a cc stable either). So please forward it manually once Linus pulls it. Thanks. -- Catalin _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] arm64: Initialize jump labels before setup_machine_fdt() 2022-06-02 21:08 ` Catalin Marinas @ 2022-06-02 21:10 ` Jason A. Donenfeld 0 siblings, 0 replies; 8+ messages in thread From: Jason A. Donenfeld @ 2022-06-02 21:10 UTC (permalink / raw) To: Catalin Marinas Cc: Stephen Boyd, Will Deacon, Dominik Brodowski, Ard Biesheuvel, linux-arm-kernel, LKML, Douglas Anderson, Hsin-Yi Wang, Steven Rostedt, patches, Greg Kroah-Hartman +Greg Hi Catalin, On Thu, Jun 2, 2022 at 11:08 PM Catalin Marinas <catalin.marinas@arm.com> wrote: > > On Thu, Jun 02, 2022 at 10:18:04PM +0200, Jason A. Donenfeld wrote: > > On Thu, Jun 2, 2022 at 9:46 PM Catalin Marinas <catalin.marinas@arm.com> wrote: > > > On Thu, Jun 02, 2022 at 09:42:49PM +0200, Jason A. Donenfeld wrote: > > > > On Thu, Jun 2, 2022 at 9:41 PM Catalin Marinas <catalin.marinas@arm.com> wrote: > > > > > On Wed, 1 Jun 2022 19:21:09 -0700, Stephen Boyd wrote: > > > > > > A static key warning splat appears during early boot on arm64 systems > > > > > > that credit randomness from devicetrees that contain an "rng-seed" > > > > > > property. This is because setup_machine_fdt() is called before > > > > > > jump_label_init() during setup_arch(). Let's swap the order of these two > > > > > > calls so that jump labels are initialized before the devicetree is > > > > > > unflattened and the rng seed is credited. > > > > > > > > > > > > [...] > > > > > > > > > > Applied to arm64 (for-next/core), thanks! > > > > > > > > > > [1/1] arm64: Initialize jump labels before setup_machine_fdt() > > > > > https://git.kernel.org/arm64/c/73e2d827a501 > > > > > > > > I'm not sure precisely what your for-next tag corresponds to, but just > > > > FYI, this should probably go into 5.19 asap and be marked for stable@. > > > > > > The for-next/core branch should go in 5.19-rc1 (I'll send a pull request > > > tomorrow). There's no need to cc stable since the fixed commit just went > > > in (unless you mean something else by "marked for stable"). > > > > It is actually in stable, so please do CC. Otherwise I'll just forward manually. > > Ah, I didn't know this (the fixed commit doesn't have a cc stable > either). So please forward it manually once Linus pulls it. Will do. Jason _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-06-02 21:12 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-06-02 2:21 [PATCH] arm64: Initialize jump labels before setup_machine_fdt() Stephen Boyd 2022-06-02 6:50 ` Jason A. Donenfeld 2022-06-02 19:41 ` Catalin Marinas 2022-06-02 19:42 ` Jason A. Donenfeld 2022-06-02 19:46 ` Catalin Marinas 2022-06-02 20:18 ` Jason A. Donenfeld 2022-06-02 21:08 ` Catalin Marinas 2022-06-02 21:10 ` Jason A. Donenfeld
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).