Message ID | 20230204055116.22591-1-rdunlap@infradead.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] sh: init: use OF_EARLY_FLATTREE for early init | expand |
Randy, which SH3 chipset target are you building for? Of course all that stay need to be converted to device tree, but a DT SH3 proof of existence that you build for already will surely cover good swath of the missing drivers. J. > On Feb 4, 2023, at 14:51, Randy Dunlap <rdunlap@infradead.org> 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: Arnd Bergmann <arnd@arndb.de> > Cc: Geert Uytterhoeven <geert+renesas@glider.be> > Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> > Cc: linux-sh@vger.kernel.org > --- > v2: use Suggested-by: for Rob. > add more Cc's. > > 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 >
On 2/3/23 23:05, D. Jeff Dionne wrote: > Randy, which SH3 chipset target are you building for? Of course all that stay need to be converted to device tree, but a DT SH3 proof of existence that you build for already will surely cover good swath of the missing drivers. > Hi Jeff, I don't have a specific target. I'm just fixing a build error. > >> On Feb 4, 2023, at 14:51, Randy Dunlap <rdunlap@infradead.org> 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: Arnd Bergmann <arnd@arndb.de> >> Cc: Geert Uytterhoeven <geert+renesas@glider.be> >> Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> >> Cc: linux-sh@vger.kernel.org >> --- >> v2: use Suggested-by: for Rob. >> add more Cc's. >> >> 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 >> >
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: Arnd Bergmann <arnd@arndb.de> Cc: Geert Uytterhoeven <geert+renesas@glider.be> Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> Cc: linux-sh@vger.kernel.org --- v2: use Suggested-by: for Rob. add more Cc's. arch/sh/kernel/head_32.S | 6 +++--- arch/sh/kernel/setup.c | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-)