[PATCH u-boot v3 2/3] bootm: relocate ramdisk if CONFIG_SYS_BOOT_RAMDISK_HIGH set

Cédric Le Goater clg at kaod.org
Thu Dec 8 04:19:11 AEDT 2016


On 12/05/2016 07:17 PM, Rick Altherr wrote:
> In 35fc84f, bootm was refactored so plain 'bootm' and
> 'bootm <subcommand>' shared a common implementation.
> The 'bootm ramdisk' command implementation is now part of the common
> implementation but not invoke by plain 'bootm' since the original
> implementation never did ramdisk relocation.  Instead, ramdisk
> relocation happened in image_setup_linux() which is typically called
> during the OS portion of 'bootm'.
> 
> On ARM, parameters to the Linux kernel can either be passed by FDT or
> ATAGS. When using FDT, image_setup_linux() is called which also triggers
> ramdisk relocation.  When using ATAGS, image_setup_linux() is _not_
> called because it mostly does FDT setup.
> 
> Instead of calling image_setup_linux() in both FDT and ATAGS cases,
> include BOOTM_STATE_RAMDISK in the requested states during a plain
> 'bootm' if CONFIG_SYS_BOOT_RAMDISK_HIGH is set and remove the ramdisk
> relocation from image_setup_linux().  This causes ramdisk relocation to
> happen on any system where CONFIG_SYS_BOOT_RAMDISK_HIGH regardless of
> the OS being booted. Also remove IMAGE_ENABLE_RAMDISK_HIGH as it was
> only used by the now-removed code from image_setup_linux().
> 
> Signed-off-by: Rick Altherr <raltherr at google.com>
> ---
>  cmd/bootm.c     | 3 +++
>  common/image.c  | 7 -------
>  include/image.h | 6 ------
>  3 files changed, 3 insertions(+), 13 deletions(-)
> 
> diff --git a/cmd/bootm.c b/cmd/bootm.c
> index 16fdea5..8da750e 100644
> --- a/cmd/bootm.c
> +++ b/cmd/bootm.c
> @@ -131,6 +131,9 @@ int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>  	return do_bootm_states(cmdtp, flag, argc, argv, BOOTM_STATE_START |
>  		BOOTM_STATE_FINDOS | BOOTM_STATE_FINDOTHER |
>  		BOOTM_STATE_LOADOS |
> +#ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH
> +		BOOTM_STATE_RAMDISK |
> +#endif
>  #if defined(CONFIG_PPC) || defined(CONFIG_MIPS)
>  		BOOTM_STATE_OS_CMDLINE |
>  #endif
> diff --git a/common/image.c b/common/image.c
> index 0be09e5..6584f7f 100644
> --- a/common/image.c
> +++ b/common/image.c
> @@ -1470,13 +1470,6 @@ int image_setup_linux(bootm_headers_t *images)
>  			return ret;
>  		}
>  	}
> -	if (IMAGE_ENABLE_RAMDISK_HIGH) {
> -		rd_len = images->rd_end - images->rd_start;
> -		ret = boot_ramdisk_high(lmb, images->rd_start, rd_len,
> -				initrd_start, initrd_end);
> -		if (ret)
> -			return ret;
> -	}

you might to clean up these warnings first: 

../common/image.c: In function 'image_setup_linux':
../common/image.c:1543:8: warning: unused variable 'rd_len' [-Wunused-variable]
  ulong rd_len;
        ^~~~~~
../common/image.c:1541:9: warning: unused variable 'initrd_end' [-Wunused-variable]
  ulong *initrd_end = &images->initrd_end;
         ^~~~~~~~~~
../common/image.c:1540:9: warning: unused variable 'initrd_start' [-Wunused-variable]
  ulong *initrd_start = &images->initrd_start;
         ^~~~~~~~~~~~

Thanks,

C. 


>  
>  	if (IMAGE_ENABLE_OF_LIBFDT) {
>  		ret = boot_relocate_fdt(lmb, of_flat_tree, &of_size);
> diff --git a/include/image.h b/include/image.h
> index d788c26..a16187f 100644
> --- a/include/image.h
> +++ b/include/image.h
> @@ -99,12 +99,6 @@ struct lmb;
>  
>  #endif /* IMAGE_ENABLE_FIT */
>  
> -#ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH
> -# define IMAGE_ENABLE_RAMDISK_HIGH	1
> -#else
> -# define IMAGE_ENABLE_RAMDISK_HIGH	0
> -#endif
> -
>  #ifdef CONFIG_SYS_BOOT_GET_CMDLINE
>  # define IMAGE_BOOT_GET_CMDLINE		1
>  #else
> 



More information about the openbmc mailing list