[v2] sh: init: use OF_EARLY_FLATTREE for early init

Message ID 20230204055116.22591-1-rdunlap@infradead.org
State New
Headers
Series [v2] sh: init: use OF_EARLY_FLATTREE for early init |

Commit Message

Randy Dunlap Feb. 4, 2023, 5:51 a.m. UTC
  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(-)
  

Comments

D. Jeff Dionne Feb. 4, 2023, 7:05 a.m. UTC | #1
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
>
  
Randy Dunlap Feb. 4, 2023, 7:13 a.m. UTC | #2
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
>>
>
  

Patch

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