[U-Boot] [PATCH] bootm: relocate ramdisk if CONFIG_SYS_BOOT_RAMDISK_HIGH set
Cédric Le Goater
clg at kaod.org
Fri Dec 9 10:39:09 CET 2016
On 12/08/2016 07:51 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>
> Reviewed-by: Simon Glass <sjg at chromium.org>
> Reviewed-by: Joel Stanley <joel at jms.id.au>
Reviewed-by: Cédric Le Goater <clg at kaod.org>
and I gave it a good test on various boards we have.
Thanks,
C.
> ---
>
> cmd/bootm.c | 3 +++
> common/image.c | 10 ----------
> include/image.h | 6 ------
> 3 files changed, 3 insertions(+), 16 deletions(-)
>
> diff --git a/cmd/bootm.c b/cmd/bootm.c
> index 083f3d1..a7e181d 100644
> --- a/cmd/bootm.c
> +++ b/cmd/bootm.c
> @@ -126,6 +126,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 bd07e86..b4a6839 100644
> --- a/common/image.c
> +++ b/common/image.c
> @@ -1571,10 +1571,7 @@ int image_setup_linux(bootm_headers_t *images)
> {
> ulong of_size = images->ft_len;
> char **of_flat_tree = &images->ft_addr;
> - ulong *initrd_start = &images->initrd_start;
> - ulong *initrd_end = &images->initrd_end;
> struct lmb *lmb = &images->lmb;
> - ulong rd_len;
> int ret;
>
> if (IMAGE_ENABLE_OF_LIBFDT)
> @@ -1588,13 +1585,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;
> - }
>
> 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 575f592..4c39bd7 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 U-Boot
mailing list