diff mbox series

[10/16] mips: unconditionally enable u_boot_list section in u-boot-spl.lds

Message ID 1578452505-7007-1-git-send-email-weijie.gao@mediatek.com
State New
Headers show
Series [01/16] configs: mtmips: add missing board selection for gardena-smart-gateway-mt7688 | expand

Commit Message

Weijie Gao Jan. 8, 2020, 3:01 a.m. UTC
u_boot_list is not only used by DM, but also by some SPL image load methods
such as spl_nor.c.

This patch removes CONFIG_SPL_DM surrounding the u_boot_list section to
make sure SPL image load methods can be correctly built into u-boot without
DM enabled.

Signed-off-by: Weijie Gao <weijie.gao at mediatek.com>
---
 arch/mips/cpu/u-boot-spl.lds | 2 --
 1 file changed, 2 deletions(-)

Comments

Daniel Schwierzeck Jan. 8, 2020, 4:11 p.m. UTC | #1
Am 08.01.20 um 04:01 schrieb Weijie Gao:
> u_boot_list is not only used by DM, but also by some SPL image load methods
> such as spl_nor.c.
> 
> This patch removes CONFIG_SPL_DM surrounding the u_boot_list section to
> make sure SPL image load methods can be correctly built into u-boot without
> DM enabled.
> 
> Signed-off-by: Weijie Gao <weijie.gao at mediatek.com>
> ---
>  arch/mips/cpu/u-boot-spl.lds | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/arch/mips/cpu/u-boot-spl.lds b/arch/mips/cpu/u-boot-spl.lds
> index d08d6222c4..cd143ab168 100644
> --- a/arch/mips/cpu/u-boot-spl.lds
> +++ b/arch/mips/cpu/u-boot-spl.lds
> @@ -27,12 +27,10 @@ SECTIONS
>  		*(SORT_BY_ALIGNMENT(.sdata*))
>  	} > .spl_mem
>  
> -#ifdef CONFIG_SPL_DM
>  	. = ALIGN(4);
>  	.u_boot_list : {
>  		KEEP(*(SORT(.u_boot_list*)));
>  	} > .spl_mem
> -#endif

unconditionally including this is a bad idea on SoC's with a very
constrained SRAM space (e.g. CI20 board) or in SPL/TPL scenarios.

One solution would be to replace #ifdef CONFIG_SPL_DM with something
like #ifdef CONFIG_MIPS_SPL_LIST and in Kconfig something like this:

config MIPS_SPL_LIST
   bool "..."
   default y if (SPL_DM | SPL_NOR_SUPPORT)
   default n


Alternatively with an inverted semantic:

#ifndef CONFIG_MIPS_SPL_LIST_EXLCUDE
...
#endif


config MIPS_SPL_LIST_EXLCUDE
    bool ""
    default n

config ARCH_JZ47XX
    ...
    select MIPS_SPL_LIST_EXLCUDE


>  
>  	. = ALIGN(4);
>  	__image_copy_end = .;
>
Weijie Gao Jan. 9, 2020, 8:40 a.m. UTC | #2
On Wed, 2020-01-08 at 17:11 +0100, Daniel Schwierzeck wrote:
> 
> Am 08.01.20 um 04:01 schrieb Weijie Gao:
> > u_boot_list is not only used by DM, but also by some SPL image load methods
> > such as spl_nor.c.
> > 
> > This patch removes CONFIG_SPL_DM surrounding the u_boot_list section to
> > make sure SPL image load methods can be correctly built into u-boot without
> > DM enabled.
> > 
> > Signed-off-by: Weijie Gao <weijie.gao at mediatek.com>
> > ---
> >  arch/mips/cpu/u-boot-spl.lds | 2 --
> >  1 file changed, 2 deletions(-)
> > 
> > diff --git a/arch/mips/cpu/u-boot-spl.lds b/arch/mips/cpu/u-boot-spl.lds
> > index d08d6222c4..cd143ab168 100644
> > --- a/arch/mips/cpu/u-boot-spl.lds
> > +++ b/arch/mips/cpu/u-boot-spl.lds
> > @@ -27,12 +27,10 @@ SECTIONS
> >  		*(SORT_BY_ALIGNMENT(.sdata*))
> >  	} > .spl_mem
> >  
> > -#ifdef CONFIG_SPL_DM
> >  	. = ALIGN(4);
> >  	.u_boot_list : {
> >  		KEEP(*(SORT(.u_boot_list*)));
> >  	} > .spl_mem
> > -#endif
> 
> unconditionally including this is a bad idea on SoC's with a very
> constrained SRAM space (e.g. CI20 board) or in SPL/TPL scenarios.
> 
> One solution would be to replace #ifdef CONFIG_SPL_DM with something
> like #ifdef CONFIG_MIPS_SPL_LIST and in Kconfig something like this:
> 
> config MIPS_SPL_LIST
>    bool "..."
>    default y if (SPL_DM | SPL_NOR_SUPPORT)
>    default n
> 
> 
> Alternatively with an inverted semantic:
> 
> #ifndef CONFIG_MIPS_SPL_LIST_EXLCUDE
> ...
> #endif
> 
> 
> config MIPS_SPL_LIST_EXLCUDE
>     bool ""
>     default n
> 
> config ARCH_JZ47XX
>     ...
>     select MIPS_SPL_LIST_EXLCUDE
> 
> 
> >  
> >  	. = ALIGN(4);
> >  	__image_copy_end = .;
> > 
> 

I think adding CONFIG_SPL_LOADER_SUPPORT is also OK:

#if defined(CONFIG_SPL_DM) || defined(CONFIG_SPL_LOADER_SUPPORT)
  	. = ALIGN(4);
  	.u_boot_list : {
  		KEEP(*(SORT(.u_boot_list*)));
  	} > .spl_mem
#endif


In mach Kconfig:
config SPL_LOADER_SUPPORT
	bool
	default y if SPL_NOR_SUPPORT
	default n
diff mbox series

Patch

diff --git a/arch/mips/cpu/u-boot-spl.lds b/arch/mips/cpu/u-boot-spl.lds
index d08d6222c4..cd143ab168 100644
--- a/arch/mips/cpu/u-boot-spl.lds
+++ b/arch/mips/cpu/u-boot-spl.lds
@@ -27,12 +27,10 @@  SECTIONS
 		*(SORT_BY_ALIGNMENT(.sdata*))
 	} > .spl_mem
 
-#ifdef CONFIG_SPL_DM
 	. = ALIGN(4);
 	.u_boot_list : {
 		KEEP(*(SORT(.u_boot_list*)));
 	} > .spl_mem
-#endif
 
 	. = ALIGN(4);
 	__image_copy_end = .;