Message ID | 20230306040037.20350-4-rdunlap@infradead.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | sh: various doc, build, init fixes | expand |
On Sun, 2023-03-05 at 20:00 -0800, Randy Dunlap wrote: > When CONFIG_OF_EARLY_FLATTREE and CONFIG_SH_DEVICE_TREE are not set, > SH3 build fails with a call to early_init_dt_scan(), so in > arch/sh/kernel/setup.c and arch/sh/kernel/head_32.S, use > CONFIG_OF_EARLY_FLATTREE instead of CONFIG_OF_FLATTREE. > > Fixes this build error: > ../arch/sh/kernel/setup.c: In function 'sh_fdt_init': > ../arch/sh/kernel/setup.c:262:26: error: implicit declaration of function 'early_init_dt_scan' [-Werror=implicit-function-declaration] > 262 | if (!dt_virt || !early_init_dt_scan(dt_virt)) { > > Fixes: 03767daa1387 ("sh: fix build regression with CONFIG_OF && !CONFIG_OF_FLATTREE") > Fixes: eb6b6930a70f ("sh: fix memory corruption of unflattened device tree") > Signed-off-by: Randy Dunlap <rdunlap@infradead.org> > Suggested-by: Rob Herring <robh+dt@kernel.org> > Cc: Frank Rowand <frowand.list@gmail.com> > Cc: devicetree@vger.kernel.org > Cc: Rich Felker <dalias@libc.org> > Cc: Yoshinori Sato <ysato@users.sourceforge.jp> > Cc: Geert Uytterhoeven <geert+renesas@glider.be> > Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> > Cc: linux-sh@vger.kernel.org > Cc: stable@vger.kernel.org > --- > v2: use Suggested-by: for Rob. > add more Cc's. > v3: skipped > v4: update Cc's, refresh & resend > > arch/sh/kernel/head_32.S | 6 +++--- > arch/sh/kernel/setup.c | 4 ++-- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff arch/sh/kernel/setup.c arch/sh/kernel/setup.c > diff -- a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c > --- a/arch/sh/kernel/setup.c > +++ b/arch/sh/kernel/setup.c > @@ -244,7 +244,7 @@ void __init __weak plat_early_device_set > { > } > > -#ifdef CONFIG_OF_FLATTREE > +#ifdef CONFIG_OF_EARLY_FLATTREE > void __ref sh_fdt_init(phys_addr_t dt_phys) > { > static int done = 0; > @@ -326,7 +326,7 @@ void __init setup_arch(char **cmdline_p) > /* Let earlyprintk output early console messages */ > sh_early_platform_driver_probe("earlyprintk", 1, 1); > > -#ifdef CONFIG_OF_FLATTREE > +#ifdef CONFIG_OF_EARLY_FLATTREE > #ifdef CONFIG_USE_BUILTIN_DTB > unflatten_and_copy_device_tree(); > #else > diff -- a/arch/sh/kernel/head_32.S b/arch/sh/kernel/head_32.S > --- a/arch/sh/kernel/head_32.S > +++ b/arch/sh/kernel/head_32.S > @@ -64,7 +64,7 @@ ENTRY(_stext) > ldc r0, r6_bank > #endif > > -#ifdef CONFIG_OF_FLATTREE > +#ifdef CONFIG_OF_EARLY_FLATTREE > mov r4, r12 ! Store device tree blob pointer in r12 > #endif > > @@ -315,7 +315,7 @@ ENTRY(_stext) > 10: > #endif > > -#ifdef CONFIG_OF_FLATTREE > +#ifdef CONFIG_OF_EARLY_FLATTREE > mov.l 8f, r0 ! Make flat device tree available early. > jsr @r0 > mov r12, r4 > @@ -346,7 +346,7 @@ ENTRY(stack_start) > 5: .long start_kernel > 6: .long cpu_init > 7: .long init_thread_union > -#if defined(CONFIG_OF_FLATTREE) > +#if defined(CONFIG_OF_EARLY_FLATTREE) > 8: .long sh_fdt_init > #endif > Reviewed-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
diff arch/sh/kernel/setup.c arch/sh/kernel/setup.c diff -- a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c --- a/arch/sh/kernel/setup.c +++ b/arch/sh/kernel/setup.c @@ -244,7 +244,7 @@ void __init __weak plat_early_device_set { } -#ifdef CONFIG_OF_FLATTREE +#ifdef CONFIG_OF_EARLY_FLATTREE void __ref sh_fdt_init(phys_addr_t dt_phys) { static int done = 0; @@ -326,7 +326,7 @@ void __init setup_arch(char **cmdline_p) /* Let earlyprintk output early console messages */ sh_early_platform_driver_probe("earlyprintk", 1, 1); -#ifdef CONFIG_OF_FLATTREE +#ifdef CONFIG_OF_EARLY_FLATTREE #ifdef CONFIG_USE_BUILTIN_DTB unflatten_and_copy_device_tree(); #else diff -- a/arch/sh/kernel/head_32.S b/arch/sh/kernel/head_32.S --- a/arch/sh/kernel/head_32.S +++ b/arch/sh/kernel/head_32.S @@ -64,7 +64,7 @@ ENTRY(_stext) ldc r0, r6_bank #endif -#ifdef CONFIG_OF_FLATTREE +#ifdef CONFIG_OF_EARLY_FLATTREE mov r4, r12 ! Store device tree blob pointer in r12 #endif @@ -315,7 +315,7 @@ ENTRY(_stext) 10: #endif -#ifdef CONFIG_OF_FLATTREE +#ifdef CONFIG_OF_EARLY_FLATTREE mov.l 8f, r0 ! Make flat device tree available early. jsr @r0 mov r12, r4 @@ -346,7 +346,7 @@ ENTRY(stack_start) 5: .long start_kernel 6: .long cpu_init 7: .long init_thread_union -#if defined(CONFIG_OF_FLATTREE) +#if defined(CONFIG_OF_EARLY_FLATTREE) 8: .long sh_fdt_init #endif
When CONFIG_OF_EARLY_FLATTREE and CONFIG_SH_DEVICE_TREE are not set, SH3 build fails with a call to early_init_dt_scan(), so in arch/sh/kernel/setup.c and arch/sh/kernel/head_32.S, use CONFIG_OF_EARLY_FLATTREE instead of CONFIG_OF_FLATTREE. Fixes this build error: ../arch/sh/kernel/setup.c: In function 'sh_fdt_init': ../arch/sh/kernel/setup.c:262:26: error: implicit declaration of function 'early_init_dt_scan' [-Werror=implicit-function-declaration] 262 | if (!dt_virt || !early_init_dt_scan(dt_virt)) { Fixes: 03767daa1387 ("sh: fix build regression with CONFIG_OF && !CONFIG_OF_FLATTREE") Fixes: eb6b6930a70f ("sh: fix memory corruption of unflattened device tree") Signed-off-by: Randy Dunlap <rdunlap@infradead.org> Suggested-by: Rob Herring <robh+dt@kernel.org> Cc: Frank Rowand <frowand.list@gmail.com> Cc: devicetree@vger.kernel.org Cc: Rich Felker <dalias@libc.org> Cc: Yoshinori Sato <ysato@users.sourceforge.jp> Cc: Geert Uytterhoeven <geert+renesas@glider.be> Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> Cc: linux-sh@vger.kernel.org Cc: stable@vger.kernel.org --- v2: use Suggested-by: for Rob. add more Cc's. v3: skipped v4: update Cc's, refresh & resend arch/sh/kernel/head_32.S | 6 +++--- arch/sh/kernel/setup.c | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-)