[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