[PATCH] mkimage: sunxi_egon: Allow overriding the padding size

Andre Przywara andre.przywara at arm.com
Thu Oct 14 02:17:44 CEST 2021


On Tue, 12 Oct 2021 19:21:27 -0500
Samuel Holland <samuel at sholland.org> wrote:

> Due to a bug in the H3 SoC, where the CPU 0 hotplug flag cannot be
> written, resuming CPU 0 requires using the "Super Standby" code path in
> the BROM instead of the hotplug path. This path requires jumping to an
> eGON image in SRAM.
> 
> This resume image, whose single purpose is to jump back to the secure
> monitor, only needs to contain a single instruction. Padding the image
> to 8 KiB would be wasteful of SRAM. Hook up the -B (block size) option
> so users can set the block/padding size.

I like that one, I always got annoyed about this rather large fixed
padding size, even though the vast majority of users don't need it.

Also the default behaviour is unchanged, so little risk here.

> Signed-off-by: Samuel Holland <samuel at sholland.org>

Reviewed-by: Andre Przywara <andre.przywara at arm.com>

Cheers,
Andre

> ---
> 
>  tools/sunxi_egon.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/sunxi_egon.c b/tools/sunxi_egon.c
> index a5299eb6a1..d1398c07fb 100644
> --- a/tools/sunxi_egon.c
> +++ b/tools/sunxi_egon.c
> @@ -10,9 +10,10 @@
>  
>  /*
>   * NAND requires 8K padding. SD/eMMC gets away with 512 bytes,
> - * but let's use the larger padding to cover both.
> + * but let's use the larger padding by default to cover both.
>   */
>  #define PAD_SIZE			8192
> +#define PAD_SIZE_MIN			512
>  
>  static int egon_check_params(struct image_tool_params *params)
>  {
> @@ -114,10 +115,12 @@ static int egon_check_image_type(uint8_t type)
>  static int egon_vrec_header(struct image_tool_params *params,
>  			    struct image_type_params *tparams)
>  {
> +	int pad_size = ALIGN(params->bl_len ?: PAD_SIZE, PAD_SIZE_MIN);
> +
>  	tparams->hdr = calloc(sizeof(struct boot_file_head), 1);
>  
> -	/* Return padding to 8K blocks. */
> -	return ALIGN(params->file_size, PAD_SIZE) - params->file_size;
> +	/* Return padding to complete blocks. */
> +	return ALIGN(params->file_size, pad_size) - params->file_size;
>  }
>  
>  U_BOOT_IMAGE_TYPE(



More information about the U-Boot mailing list