[PATCH 04/24] spl: Allow disabling binman symbols in SPL

Alper Nebi Yasak alpernebiyasak at gmail.com
Tue Feb 15 12:42:51 CET 2022


On 08/02/2022 21:49, Simon Glass wrote:
> When CONFIG_SPL_FIT is enabled we do not access U-Boot directly in
> the image, since it is embedded in a FIT which is parsed at runtime.
> 
> Provide a CONFIG option to drop the symbols in this case.
> 
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
> 
>  common/spl/Kconfig | 24 ++++++++++++++++++++++++
>  common/spl/spl.c   |  4 ++++
>  2 files changed, 28 insertions(+)
> 
> diff --git a/common/spl/Kconfig b/common/spl/Kconfig
> index e0d0a6f77b..9418d37b2e 100644
> --- a/common/spl/Kconfig
> +++ b/common/spl/Kconfig
> @@ -101,6 +101,18 @@ config SPL_SHOW_ERRORS
>  
>  	  This adds a small amount to SPL code size, perhaps 100 bytes.
>  
> +config SPL_BINMAN_SYMBOLS
> +	bool "Declare binman symbols in SPL"
> +	depends on SPL_FRAMEWORK && BINMAN
> +	default y
> +	help
> +	  This enables use of symbols in SPL which refer to U-Boot, enabling SPL
> +	  to obtain the location of U-Boot simply by calling spl_get_image_pos()
> +	  and spl_get_image_size().
> +
> +	  For this to work, you must have a U-Boot image in the binman image, so
> +	  binman can update SPL with the location of it.
> +
>  menu "PowerPC and LayerScape SPL Boot options"
>  
>  config SPL_NAND_BOOT
> @@ -1321,6 +1333,18 @@ config TPL_SIZE_LIMIT
>  	  Specifies the maximum length of the U-Boot TPL image.
>  	  If this value is zero, it is ignored.
>  
> +config TPL_BINMAN_SYMBOLS
> +	bool "Declare binman symbols in SPL"

SPL -> TPL here and two more in the help text.

> +	depends on SPL_FRAMEWORK && BINMAN
> +	default y
> +	help
> +	  This enables use of symbols in TPL which refer to U-Boot, enabling SPL
> +	  to obtain the location of U-Boot simply by calling spl_get_image_pos()
> +	  and spl_get_image_size().
> +
> +	  For this to work, you must have a U-Boot image in the binman image, so
> +	  binman can update SPL with the location of it.
> +
>  config TPL_FRAMEWORK
>  	bool "Support TPL based upon the common SPL framework"
>  	default y if SPL_FRAMEWORK
> diff --git a/common/spl/spl.c b/common/spl/spl.c
> index 444907432c..b452d4feeb 100644
> --- a/common/spl/spl.c
> +++ b/common/spl/spl.c
> @@ -49,9 +49,11 @@ DECLARE_GLOBAL_DATA_PTR;
>  
>  u32 *boot_params_ptr = NULL;
>  
> +#if CONFIG_IS_ENABLED(BINMAN_SYMBOLS)
>  /* See spl.h for information about this */
>  binman_sym_declare(ulong, u_boot_any, image_pos);
>  binman_sym_declare(ulong, u_boot_any, size);
> +#endif
>  
>  #ifdef CONFIG_TPL
>  binman_sym_declare(ulong, u_boot_spl, image_pos);
> @@ -140,6 +142,7 @@ void spl_fixup_fdt(void *fdt_blob)
>  #endif
>  }
>  
> +#if CONFIG_IS_ENABLED(BINMAN_SYMBOLS)
>  ulong spl_get_image_pos(void)
>  {
>  	return spl_phase() == PHASE_TPL ?
> @@ -153,6 +156,7 @@ ulong spl_get_image_size(void)
>  		binman_sym(ulong, u_boot_spl, size) :
>  		binman_sym(ulong, u_boot_any, size);
>  }
> +#endif /* BINMAN_SYMBOLS */
>  
>  ulong spl_get_image_text_base(void)
>  {


More information about the U-Boot mailing list