From 82e26e0d6883673bdedbcdb0ddd4bc967ce6ce70 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:16 -0600 Subject: spl: Use CONFIG_SPL... instead of CONFIG_..._SPL_... We like to put the SPL first so it is clear that it relates to SPL. Rename various malloc-related options which have crept in, to stick to this convention. Signed-off-by: Simon Glass Reviewed-by: Marcel Ziswiler Reviewed-by: Martyn Welch Reviewed-by: Svyatoslav Ryhel --- common/spl/Kconfig | 14 +++++++------- common/spl/Kconfig.nxp | 2 +- common/spl/spl.c | 6 +++--- common/spl/spl_fit.c | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) (limited to 'common') diff --git a/common/spl/Kconfig b/common/spl/Kconfig index 1c2fe78e3e0..b9d96fbe135 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -402,21 +402,21 @@ config SPL_SEPARATE_BSS location is used. Normally we put the device tree at the end of BSS but with this option enabled, it goes at _image_binary_end. -config SYS_SPL_MALLOC +config SPL_SYS_MALLOC bool "Enable malloc pool in SPL" depends on SPL_FRAMEWORK -config HAS_CUSTOM_SPL_MALLOC_START +config SPL_HAS_CUSTOM_MALLOC_START bool "For the SPL malloc pool, define a custom starting address" - depends on SYS_SPL_MALLOC + depends on SPL_SYS_MALLOC -config CUSTOM_SYS_SPL_MALLOC_ADDR +config SPL_CUSTOM_SYS_MALLOC_ADDR hex "SPL malloc addr" - depends on HAS_CUSTOM_SPL_MALLOC_START + depends on SPL_HAS_CUSTOM_MALLOC_START -config SYS_SPL_MALLOC_SIZE +config SPL_SYS_MALLOC_SIZE hex "Size of the SPL malloc pool" - depends on SYS_SPL_MALLOC + depends on SPL_SYS_MALLOC default 0x100000 config SPL_READ_ONLY diff --git a/common/spl/Kconfig.nxp b/common/spl/Kconfig.nxp index fc696cf0cee..53e9b9f8d34 100644 --- a/common/spl/Kconfig.nxp +++ b/common/spl/Kconfig.nxp @@ -59,7 +59,7 @@ config SPL_RELOC_TEXT_BASE config SPL_RELOC_STACK hex "Address of the start of the stack SPL will use after relocation." help - If unspecified, this is equal to CFG_SYS_SPL_MALLOC_START. Starting + If unspecified, this is equal to CFG_SPL_SYS_MALLOC_START. Starting address of the malloc pool used in SPL. When this option is set the full malloc is used in SPL and it is set up by spl_init() and before that, the simple malloc() can be used if CONFIG_SYS_MALLOC_F is defined. diff --git a/common/spl/spl.c b/common/spl/spl.c index cd294e81b2a..5c0cf9a2e0a 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -750,8 +750,8 @@ void board_init_r(gd_t *dummy1, ulong dummy2) spl_set_bd(); -#if defined(CONFIG_SYS_SPL_MALLOC) - mem_malloc_init(SYS_SPL_MALLOC_START, CONFIG_SYS_SPL_MALLOC_SIZE); +#if defined(CONFIG_SPL_SYS_MALLOC) + mem_malloc_init(SPL_SYS_MALLOC_START, CONFIG_SPL_SYS_MALLOC_SIZE); gd->flags |= GD_FLG_FULL_MALLOC_INIT; #endif if (!(gd->flags & GD_FLG_SPL_INIT)) { @@ -882,7 +882,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) default: debug("Unsupported OS image.. Jumping nevertheless..\n"); } -#if CONFIG_VAL(SYS_MALLOC_F_LEN) && !defined(CONFIG_SYS_SPL_MALLOC_SIZE) +#if CONFIG_VAL(SYS_MALLOC_F_LEN) && !defined(CONFIG_SPL_SYS_MALLOC_SIZE) debug("SPL malloc() used 0x%lx bytes (%ld KB)\n", gd->malloc_ptr, gd->malloc_ptr / 1024); #endif diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c index b1668c0396c..1dfae1ab2fe 100644 --- a/common/spl/spl_fit.c +++ b/common/spl/spl_fit.c @@ -531,7 +531,7 @@ static void *spl_get_fit_load_buffer(size_t size) buf = malloc_cache_aligned(size); if (!buf) { pr_err("Could not get FIT buffer of %lu bytes\n", (ulong)size); - pr_err("\tcheck CONFIG_SYS_SPL_MALLOC_SIZE\n"); + pr_err("\tcheck CONFIG_SPL_SYS_MALLOC_SIZE\n"); buf = spl_get_load_buffer(0, size); } return buf; -- cgit v1.3.1 From 9cbdc3a0fca805bb1fd9ccf85114c504860814b9 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:17 -0600 Subject: spl: Rename SYS_SPL_ARGS_ADDR to SPL_PAYLOAD_ARGS_ADDR Rename this so that SPL is first, as per U-Boot convention. Also add PAYLOAD_ since this is where in memory the parameters for the payload have been stored. Signed-off-by: Simon Glass --- arch/arm/cpu/armv8/fsl-layerscape/doc/README.falcon | 2 +- common/spl/Kconfig | 2 +- common/spl/spl.c | 8 ++++---- common/spl/spl_ext.c | 4 ++-- common/spl/spl_fat.c | 4 ++-- common/spl/spl_mmc.c | 2 +- common/spl/spl_nand.c | 10 +++++----- common/spl/spl_nor.c | 8 ++++---- common/spl/spl_spi.c | 2 +- common/spl/spl_ubi.c | 2 +- common/spl/spl_xip.c | 2 +- configs/am3517_evm_defconfig | 2 +- configs/devkit8000_defconfig | 2 +- configs/display5_defconfig | 2 +- configs/display5_factory_defconfig | 2 +- configs/gwventana_emmc_defconfig | 2 +- configs/gwventana_nand_defconfig | 2 +- configs/igep00x0_defconfig | 2 +- configs/imx28_xea_defconfig | 2 +- configs/imx6dl_mamoj_defconfig | 2 +- configs/imx6q_logic_defconfig | 2 +- configs/imx6qdl_icore_mipi_defconfig | 2 +- configs/imx6qdl_icore_mmc_defconfig | 2 +- configs/imx6qdl_icore_rqs_defconfig | 2 +- configs/ls1046ardb_qspi_spl_defconfig | 2 +- configs/mccmon6_nor_defconfig | 2 +- configs/omap35_logic_defconfig | 2 +- configs/omap35_logic_somlv_defconfig | 2 +- configs/omap3_logic_defconfig | 2 +- configs/omap3_logic_somlv_defconfig | 2 +- configs/riotboard_defconfig | 2 +- configs/stm32746g-eval_spl_defconfig | 2 +- configs/stm32f746-disco_spl_defconfig | 2 +- configs/stm32f769-disco_spl_defconfig | 2 +- configs/syzygy_hub_defconfig | 2 +- configs/vyasa-rk3288_defconfig | 2 +- configs/xilinx_zynq_virt_defconfig | 2 +- configs/xilinx_zynqmp_virt_defconfig | 2 +- doc/develop/falcon.rst | 2 +- 39 files changed, 51 insertions(+), 51 deletions(-) (limited to 'common') diff --git a/arch/arm/cpu/armv8/fsl-layerscape/doc/README.falcon b/arch/arm/cpu/armv8/fsl-layerscape/doc/README.falcon index b3c6693a42c..2bbe4e2d123 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/doc/README.falcon +++ b/arch/arm/cpu/armv8/fsl-layerscape/doc/README.falcon @@ -30,7 +30,7 @@ to understand the device tree in FIT image should be the one actually used, or leave it absent to favor the stored sectors. It is easier to deploy the FIT image with embedded static device tree to multiple boards. -Macro CONFIG_SYS_SPL_ARGS_ADDR serves two purposes. One is the pointer to load +Macro CONFIG_SPL_PAYLOAD_ARGS_ADDR serves two purposes. One is the pointer to load the stored sectors to. Normally this is the static device tree. The second purpose is the memory location of signature header for secure boot. After the FIT image is loaded into memory, it is validated against the signature header diff --git a/common/spl/Kconfig b/common/spl/Kconfig index b9d96fbe135..46323597942 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -1063,7 +1063,7 @@ config SPL_OS_BOOT Enable booting directly to an OS from SPL. for more info read doc/README.falcon -config SYS_SPL_ARGS_ADDR +config SPL_PAYLOAD_ARGS_ADDR hex "Address in memory to load 'args' file for Falcon Mode to" depends on SPL_OS_BOOT default 0x88000000 if ARCH_OMAP2PLUS diff --git a/common/spl/spl.c b/common/spl/spl.c index 5c0cf9a2e0a..0f453365516 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -814,8 +814,8 @@ void board_init_r(gd_t *dummy1, ulong dummy2) } memset(&spl_image, '\0', sizeof(spl_image)); -#ifdef CONFIG_SYS_SPL_ARGS_ADDR - spl_image.arg = (void *)CONFIG_SYS_SPL_ARGS_ADDR; +#ifdef CONFIG_SPL_PAYLOAD_ARGS_ADDR + spl_image.arg = (void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR; #endif spl_image.boot_device = BOOT_DEVICE_NONE; board_boot_order(spl_boot_list); @@ -873,8 +873,8 @@ void board_init_r(gd_t *dummy1, ulong dummy2) #if CONFIG_IS_ENABLED(OS_BOOT) case IH_OS_LINUX: debug("Jumping to Linux\n"); -#if defined(CONFIG_SYS_SPL_ARGS_ADDR) - spl_fixup_fdt((void *)CONFIG_SYS_SPL_ARGS_ADDR); +#if defined(CONFIG_SPL_PAYLOAD_ARGS_ADDR) + spl_fixup_fdt((void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR); #endif spl_board_prepare_for_linux(); jump_to_image_linux(&spl_image); diff --git a/common/spl/spl_ext.c b/common/spl/spl_ext.c index 2bf34344391..902564a6077 100644 --- a/common/spl/spl_ext.c +++ b/common/spl/spl_ext.c @@ -97,7 +97,7 @@ int spl_load_image_ext_os(struct spl_image_info *spl_image, puts("spl: ext4fs_open failed\n"); goto defaults; } - err = ext4fs_read((void *)CONFIG_SYS_SPL_ARGS_ADDR, 0, filelen, &actlen); + err = ext4fs_read((void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR, 0, filelen, &actlen); if (err < 0) { printf("spl: error reading image %s, err - %d, falling back to default\n", file, err); @@ -127,7 +127,7 @@ defaults: if (err < 0) puts("spl: ext4fs_open failed\n"); - err = ext4fs_read((void *)CONFIG_SYS_SPL_ARGS_ADDR, 0, filelen, &actlen); + err = ext4fs_read((void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR, 0, filelen, &actlen); if (err < 0) { #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT printf("%s: error reading image %s, err - %d\n", diff --git a/common/spl/spl_fat.c b/common/spl/spl_fat.c index f8a5b80a3bd..c6e2526ade1 100644 --- a/common/spl/spl_fat.c +++ b/common/spl/spl_fat.c @@ -128,7 +128,7 @@ int spl_load_image_fat_os(struct spl_image_info *spl_image, #if defined(CONFIG_SPL_ENV_SUPPORT) && defined(CONFIG_SPL_OS_BOOT) file = env_get("falcon_args_file"); if (file) { - err = file_fat_read(file, (void *)CONFIG_SYS_SPL_ARGS_ADDR, 0); + err = file_fat_read(file, (void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR, 0); if (err <= 0) { printf("spl: error reading image %s, err - %d, falling back to default\n", file, err); @@ -153,7 +153,7 @@ defaults: #endif err = file_fat_read(CONFIG_SPL_FS_LOAD_ARGS_NAME, - (void *)CONFIG_SYS_SPL_ARGS_ADDR, 0); + (void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR, 0); if (err <= 0) { #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT printf("%s: error reading image %s, err - %d\n", diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c index 20f687e1389..0ab85d2168c 100644 --- a/common/spl/spl_mmc.c +++ b/common/spl/spl_mmc.c @@ -235,7 +235,7 @@ static int mmc_load_image_raw_os(struct spl_image_info *spl_image, count = blk_dread(mmc_get_blk_desc(mmc), CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR, CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS, - (void *) CONFIG_SYS_SPL_ARGS_ADDR); + (void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR); if (count != CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS) { #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT puts("mmc_load_image_raw_os: mmc block read error\n"); diff --git a/common/spl/spl_nand.c b/common/spl/spl_nand.c index dc45204fc0e..6cc34004f49 100644 --- a/common/spl/spl_nand.c +++ b/common/spl/spl_nand.c @@ -159,11 +159,11 @@ static int spl_nand_load_image(struct spl_image_info *spl_image, CONFIG_CMD_SPL_WRITE_SIZE, (void *)CONFIG_TEXT_BASE); /* copy to destintion */ - for (dst = (int *)CONFIG_SYS_SPL_ARGS_ADDR, - src = (int *)CONFIG_TEXT_BASE; - src < (int *)(CONFIG_TEXT_BASE + - CONFIG_CMD_SPL_WRITE_SIZE); - src++, dst++) { + for (dst = (int *)CONFIG_SPL_PAYLOAD_ARGS_ADDR, + src = (int *)CONFIG_TEXT_BASE; + src < (int *)(CONFIG_TEXT_BASE + + CONFIG_CMD_SPL_WRITE_SIZE); + src++, dst++) { writel(readl(src), dst); } diff --git a/common/spl/spl_nor.c b/common/spl/spl_nor.c index 5b65b96a77d..79d4f1d7aa8 100644 --- a/common/spl/spl_nor.c +++ b/common/spl/spl_nor.c @@ -54,8 +54,8 @@ static int spl_nor_load_image(struct spl_image_info *spl_image, CONFIG_SYS_OS_BASE, (void *)header); -#if defined CONFIG_SYS_SPL_ARGS_ADDR && defined CONFIG_CMD_SPL_NOR_OFS - memcpy((void *)CONFIG_SYS_SPL_ARGS_ADDR, +#if defined CONFIG_SPL_PAYLOAD_ARGS_ADDR && defined CONFIG_CMD_SPL_NOR_OFS + memcpy((void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR, (void *)CONFIG_CMD_SPL_NOR_OFS, CONFIG_CMD_SPL_WRITE_SIZE); #endif @@ -74,8 +74,8 @@ static int spl_nor_load_image(struct spl_image_info *spl_image, (void *)(CONFIG_SYS_OS_BASE + sizeof(struct legacy_img_hdr)), spl_image->size); -#ifdef CONFIG_SYS_SPL_ARGS_ADDR - spl_image->arg = (void *)CONFIG_SYS_SPL_ARGS_ADDR; +#ifdef CONFIG_SPL_PAYLOAD_ARGS_ADDR + spl_image->arg = (void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR; #endif return 0; diff --git a/common/spl/spl_spi.c b/common/spl/spl_spi.c index 2aff025f76e..d69069a75bf 100644 --- a/common/spl/spl_spi.c +++ b/common/spl/spl_spi.c @@ -47,7 +47,7 @@ static int spi_load_image_os(struct spl_image_info *spl_image, /* Read device tree. */ spi_flash_read(flash, CFG_SYS_SPI_ARGS_OFFS, CFG_SYS_SPI_ARGS_SIZE, - (void *)CONFIG_SYS_SPL_ARGS_ADDR); + (void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR); return 0; } diff --git a/common/spl/spl_ubi.c b/common/spl/spl_ubi.c index bcac25cd021..d7ab9efd110 100644 --- a/common/spl/spl_ubi.c +++ b/common/spl/spl_ubi.c @@ -50,7 +50,7 @@ int spl_ubi_load_image(struct spl_image_info *spl_image, volumes[0].vol_id = CONFIG_SPL_UBI_LOAD_KERNEL_ID; volumes[0].load_addr = (void *)CONFIG_SYS_LOAD_ADDR; volumes[1].vol_id = CONFIG_SPL_UBI_LOAD_ARGS_ID; - volumes[1].load_addr = (void *)CONFIG_SYS_SPL_ARGS_ADDR; + volumes[1].load_addr = (void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR; ret = ubispl_load_volumes(&info, volumes, 2); if (!ret) { diff --git a/common/spl/spl_xip.c b/common/spl/spl_xip.c index 77c23ba0597..959915ffa61 100644 --- a/common/spl/spl_xip.c +++ b/common/spl/spl_xip.c @@ -14,7 +14,7 @@ static int spl_xip(struct spl_image_info *spl_image, { #if CONFIG_IS_ENABLED(OS_BOOT) if (!spl_start_uboot()) { - spl_image->arg = (void *)CONFIG_SYS_SPL_ARGS_ADDR; + spl_image->arg = (void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR; spl_image->name = "Linux"; spl_image->os = IH_OS_LINUX; spl_image->load_addr = CONFIG_SYS_LOAD_ADDR; diff --git a/configs/am3517_evm_defconfig b/configs/am3517_evm_defconfig index 06a3ec785d8..0a83ac9378c 100644 --- a/configs/am3517_evm_defconfig +++ b/configs/am3517_evm_defconfig @@ -32,7 +32,7 @@ CONFIG_SPL_NAND_ECC=y CONFIG_SPL_NAND_SIMPLE=y CONFIG_SPL_NAND_BASE=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x84000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x84000000 CONFIG_SYS_NAND_SPL_KERNEL_OFFS=0x2a0000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x1700 diff --git a/configs/devkit8000_defconfig b/configs/devkit8000_defconfig index 1431e54dc95..ef16da176a9 100644 --- a/configs/devkit8000_defconfig +++ b/configs/devkit8000_defconfig @@ -28,7 +28,7 @@ CONFIG_SPL_NAND_ECC=y CONFIG_SPL_NAND_SIMPLE=y CONFIG_SPL_NAND_BASE=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x80000100 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x80000100 CONFIG_SYS_NAND_SPL_KERNEL_OFFS=0x280000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x500 diff --git a/configs/display5_defconfig b/configs/display5_defconfig index 496fd4adbac..24f22f0b035 100644 --- a/configs/display5_defconfig +++ b/configs/display5_defconfig @@ -45,7 +45,7 @@ CONFIG_SPL_ENV_SUPPORT=y CONFIG_SPL_SAVEENV=y CONFIG_SPL_I2C=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x18000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x18000000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x100 CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR=0x3F00 diff --git a/configs/display5_factory_defconfig b/configs/display5_factory_defconfig index fbec341d897..19b18983730 100644 --- a/configs/display5_factory_defconfig +++ b/configs/display5_factory_defconfig @@ -40,7 +40,7 @@ CONFIG_SPL_SYS_MALLOC=y CONFIG_SPL_DMA=y CONFIG_SPL_I2C=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x18000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x18000000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x100 CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR=0x3F00 diff --git a/configs/gwventana_emmc_defconfig b/configs/gwventana_emmc_defconfig index cf70dd9d353..08afc7fb9ca 100644 --- a/configs/gwventana_emmc_defconfig +++ b/configs/gwventana_emmc_defconfig @@ -49,7 +49,7 @@ CONFIG_SPL_FIT_IMAGE_TINY=y CONFIG_SPL_DMA=y CONFIG_SPL_I2C=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x18000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x18000000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x1000 CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR=0x800 diff --git a/configs/gwventana_nand_defconfig b/configs/gwventana_nand_defconfig index 453662cbf99..3f0cb19d159 100644 --- a/configs/gwventana_nand_defconfig +++ b/configs/gwventana_nand_defconfig @@ -50,7 +50,7 @@ CONFIG_SPL_DMA=y CONFIG_SPL_I2C=y CONFIG_SPL_NAND_SUPPORT=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x18000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x18000000 CONFIG_SYS_NAND_SPL_KERNEL_OFFS=0x1200000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x1000 diff --git a/configs/igep00x0_defconfig b/configs/igep00x0_defconfig index a6dce15c3a0..993bbe29c6b 100644 --- a/configs/igep00x0_defconfig +++ b/configs/igep00x0_defconfig @@ -43,7 +43,7 @@ CONFIG_SPL_UBI_LOAD_KERNEL_ID=3 CONFIG_SPL_UBI_LOAD_ARGS_ID=4 CONFIG_SPL_ONENAND_SUPPORT=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x84000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x84000000 CONFIG_SYS_NAND_SPL_KERNEL_OFFS=0x280000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x1700 diff --git a/configs/imx28_xea_defconfig b/configs/imx28_xea_defconfig index cef7352ad88..c1b0487f7ea 100644 --- a/configs/imx28_xea_defconfig +++ b/configs/imx28_xea_defconfig @@ -51,7 +51,7 @@ CONFIG_SPL_DMA=y CONFIG_SPL_MMC_TINY=y CONFIG_SPL_DM_SPI_FLASH=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x44000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x44000000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x800 CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR=0x400 diff --git a/configs/imx6dl_mamoj_defconfig b/configs/imx6dl_mamoj_defconfig index 933a9d83f34..35ded27c835 100644 --- a/configs/imx6dl_mamoj_defconfig +++ b/configs/imx6dl_mamoj_defconfig @@ -20,7 +20,7 @@ CONFIG_DISTRO_DEFAULTS=y CONFIG_BOOTDELAY=3 CONFIG_SPL_SYS_MALLOC=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x13000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x13000000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x1000 CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR=0x800 diff --git a/configs/imx6q_logic_defconfig b/configs/imx6q_logic_defconfig index 8be0cf7cc58..5ee1f5d255f 100644 --- a/configs/imx6q_logic_defconfig +++ b/configs/imx6q_logic_defconfig @@ -35,7 +35,7 @@ CONFIG_SPL_FS_LOAD_PAYLOAD_NAME="u-boot-dtb.img" CONFIG_SPL_I2C=y CONFIG_SPL_NAND_SUPPORT=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x18000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x18000000 CONFIG_SYS_NAND_SPL_KERNEL_OFFS=0x500000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x1000 diff --git a/configs/imx6qdl_icore_mipi_defconfig b/configs/imx6qdl_icore_mipi_defconfig index 2089df32864..46be3b69c8c 100644 --- a/configs/imx6qdl_icore_mipi_defconfig +++ b/configs/imx6qdl_icore_mipi_defconfig @@ -35,7 +35,7 @@ CONFIG_BOOTCOMMAND="run $modeboot" CONFIG_SPL_RAW_IMAGE_SUPPORT=y CONFIG_SPL_SYS_MALLOC=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x18000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x18000000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x1000 CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR=0x800 diff --git a/configs/imx6qdl_icore_mmc_defconfig b/configs/imx6qdl_icore_mmc_defconfig index 9d1d3bcc314..c71e87efab7 100644 --- a/configs/imx6qdl_icore_mmc_defconfig +++ b/configs/imx6qdl_icore_mmc_defconfig @@ -38,7 +38,7 @@ CONFIG_BOOTCOMMAND="run $modeboot" CONFIG_SPL_RAW_IMAGE_SUPPORT=y CONFIG_SPL_SYS_MALLOC=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x18000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x18000000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x1000 CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR=0x800 diff --git a/configs/imx6qdl_icore_rqs_defconfig b/configs/imx6qdl_icore_rqs_defconfig index a33a5d7568d..83d5e193826 100644 --- a/configs/imx6qdl_icore_rqs_defconfig +++ b/configs/imx6qdl_icore_rqs_defconfig @@ -32,7 +32,7 @@ CONFIG_BOOTCOMMAND="run $modeboot" CONFIG_SPL_RAW_IMAGE_SUPPORT=y CONFIG_SPL_SYS_MALLOC=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x18000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x18000000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x1000 CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR=0x800 diff --git a/configs/ls1046ardb_qspi_spl_defconfig b/configs/ls1046ardb_qspi_spl_defconfig index 78f1185ec68..84bd1b1d0f4 100644 --- a/configs/ls1046ardb_qspi_spl_defconfig +++ b/configs/ls1046ardb_qspi_spl_defconfig @@ -61,7 +61,7 @@ CONFIG_SPL_I2C=y CONFIG_SPL_MPC8XXX_INIT_DDR=y CONFIG_SPL_NOR_SUPPORT=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x90000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x90000000 CONFIG_SYS_OS_BASE=0x40980000 CONFIG_SPL_WATCHDOG=y CONFIG_SPL_TARGET="spl/u-boot-spl.pbl" diff --git a/configs/mccmon6_nor_defconfig b/configs/mccmon6_nor_defconfig index 88a72b39299..5e8fbd01bf9 100644 --- a/configs/mccmon6_nor_defconfig +++ b/configs/mccmon6_nor_defconfig @@ -29,7 +29,7 @@ CONFIG_SPL_FIT_IMAGE_TINY=y CONFIG_SPL_ENV_SUPPORT=y CONFIG_SPL_NOR_SUPPORT=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x18000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x18000000 CONFIG_SYS_OS_BASE=0x8180000 CONFIG_SYS_MAXARGS=32 CONFIG_SYS_PBSIZE=532 diff --git a/configs/omap35_logic_defconfig b/configs/omap35_logic_defconfig index 4a4b79ae10d..539b0cfa4f7 100644 --- a/configs/omap35_logic_defconfig +++ b/configs/omap35_logic_defconfig @@ -36,7 +36,7 @@ CONFIG_SPL_NAND_ECC=y CONFIG_SPL_NAND_SIMPLE=y CONFIG_SPL_NAND_BASE=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x84000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x84000000 CONFIG_SYS_NAND_SPL_KERNEL_OFFS=0x280000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x1700 diff --git a/configs/omap35_logic_somlv_defconfig b/configs/omap35_logic_somlv_defconfig index 3893a83ce9c..f14ce3d23db 100644 --- a/configs/omap35_logic_somlv_defconfig +++ b/configs/omap35_logic_somlv_defconfig @@ -37,7 +37,7 @@ CONFIG_SPL_NAND_ECC=y CONFIG_SPL_NAND_SIMPLE=y CONFIG_SPL_NAND_BASE=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x84000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x84000000 CONFIG_SYS_NAND_SPL_KERNEL_OFFS=0x280000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x1700 diff --git a/configs/omap3_logic_defconfig b/configs/omap3_logic_defconfig index e31d5aac45c..7d3d602c9d9 100644 --- a/configs/omap3_logic_defconfig +++ b/configs/omap3_logic_defconfig @@ -35,7 +35,7 @@ CONFIG_SPL_NAND_ECC=y CONFIG_SPL_NAND_SIMPLE=y CONFIG_SPL_NAND_BASE=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x84000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x84000000 CONFIG_SYS_NAND_SPL_KERNEL_OFFS=0x280000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x1700 diff --git a/configs/omap3_logic_somlv_defconfig b/configs/omap3_logic_somlv_defconfig index 2a9f20478e9..0141a425e07 100644 --- a/configs/omap3_logic_somlv_defconfig +++ b/configs/omap3_logic_somlv_defconfig @@ -37,7 +37,7 @@ CONFIG_SPL_NAND_ECC=y CONFIG_SPL_NAND_SIMPLE=y CONFIG_SPL_NAND_BASE=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x84000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x84000000 CONFIG_SYS_NAND_SPL_KERNEL_OFFS=0x280000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x1700 diff --git a/configs/riotboard_defconfig b/configs/riotboard_defconfig index f8bc8c63969..6ab405d7f98 100644 --- a/configs/riotboard_defconfig +++ b/configs/riotboard_defconfig @@ -35,7 +35,7 @@ CONFIG_SPL_FS_EXT4=y CONFIG_SPL_FS_LOAD_PAYLOAD_NAME="u-boot-dtb.img" CONFIG_SPL_FS_LOAD_ARGS_NAME="imx6dl-riotboard.dtb" CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x13000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x13000000 CONFIG_SYS_MAXARGS=32 CONFIG_SYS_PBSIZE=532 CONFIG_CMD_GPIO=y diff --git a/configs/stm32746g-eval_spl_defconfig b/configs/stm32746g-eval_spl_defconfig index 6f2f5ec360a..3864e21a180 100644 --- a/configs/stm32746g-eval_spl_defconfig +++ b/configs/stm32746g-eval_spl_defconfig @@ -36,7 +36,7 @@ CONFIG_SPL_BOARD_INIT=y CONFIG_SPL_SYS_MALLOC_SIMPLE=y CONFIG_SPL_MTD_SUPPORT=y CONFIG_SPL_XIP_SUPPORT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x80c0000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x80c0000 CONFIG_SPL_DM_RESET=y CONFIG_SYS_PROMPT="U-Boot > " CONFIG_SYS_PBSIZE=1050 diff --git a/configs/stm32f746-disco_spl_defconfig b/configs/stm32f746-disco_spl_defconfig index 1b8b5a17b7c..b2a786121c5 100644 --- a/configs/stm32f746-disco_spl_defconfig +++ b/configs/stm32f746-disco_spl_defconfig @@ -36,7 +36,7 @@ CONFIG_SPL_BOARD_INIT=y CONFIG_SPL_SYS_MALLOC_SIMPLE=y CONFIG_SPL_MTD_SUPPORT=y CONFIG_SPL_XIP_SUPPORT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x80c0000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x80c0000 CONFIG_SPL_DM_RESET=y CONFIG_SYS_PROMPT="U-Boot > " CONFIG_SYS_PBSIZE=1050 diff --git a/configs/stm32f769-disco_spl_defconfig b/configs/stm32f769-disco_spl_defconfig index 9b926b22182..34622032210 100644 --- a/configs/stm32f769-disco_spl_defconfig +++ b/configs/stm32f769-disco_spl_defconfig @@ -35,7 +35,7 @@ CONFIG_SPL_BOARD_INIT=y CONFIG_SPL_SYS_MALLOC_SIMPLE=y CONFIG_SPL_MTD_SUPPORT=y CONFIG_SPL_XIP_SUPPORT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x81c0000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x81c0000 CONFIG_SPL_DM_RESET=y CONFIG_SYS_PROMPT="U-Boot > " CONFIG_SYS_PBSIZE=1050 diff --git a/configs/syzygy_hub_defconfig b/configs/syzygy_hub_defconfig index 7bcb3191000..78cbaa7a0b8 100644 --- a/configs/syzygy_hub_defconfig +++ b/configs/syzygy_hub_defconfig @@ -32,7 +32,7 @@ CONFIG_SPL_SYS_MALLOC=y CONFIG_SPL_SYS_MALLOC_SIZE=0x2000000 CONFIG_SPL_FS_LOAD_ARGS_NAME="system.dtb" CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x10000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x10000000 CONFIG_SYS_MAXARGS=32 CONFIG_SYS_PBSIZE=2071 CONFIG_SYS_BOOTM_LEN=0x3c00000 diff --git a/configs/vyasa-rk3288_defconfig b/configs/vyasa-rk3288_defconfig index 9bca6fe2eea..0ae901a7239 100644 --- a/configs/vyasa-rk3288_defconfig +++ b/configs/vyasa-rk3288_defconfig @@ -32,7 +32,7 @@ CONFIG_SPL_NO_BSS_LIMIT=y CONFIG_SPL_STACK_R=y CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x2000 CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0xffe5000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0xffe5000 CONFIG_SPL_FALCON_BOOT_MMCSD=y CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR=0x8800 CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR=0x8000 diff --git a/configs/xilinx_zynq_virt_defconfig b/configs/xilinx_zynq_virt_defconfig index 16c127b7400..817fb4142d1 100644 --- a/configs/xilinx_zynq_virt_defconfig +++ b/configs/xilinx_zynq_virt_defconfig @@ -43,7 +43,7 @@ CONFIG_SPL_FS_LOAD_PAYLOAD_NAME="u-boot.img" CONFIG_SPL_FS_LOAD_ARGS_NAME="system.dtb" CONFIG_SPL_FPGA=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x10000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x10000000 CONFIG_SPL_SPI_LOAD=y CONFIG_SYS_SPI_U_BOOT_OFFS=0x100000 CONFIG_SYS_MAXARGS=32 diff --git a/configs/xilinx_zynqmp_virt_defconfig b/configs/xilinx_zynqmp_virt_defconfig index 51e0d254f4a..b284494092a 100644 --- a/configs/xilinx_zynqmp_virt_defconfig +++ b/configs/xilinx_zynqmp_virt_defconfig @@ -43,7 +43,7 @@ CONFIG_SPL_FS_LOAD_KERNEL_NAME="atf-uboot.ub" CONFIG_SPL_FS_LOAD_ARGS_NAME="u-boot.bin" CONFIG_SPL_FPGA=y CONFIG_SPL_OS_BOOT=y -CONFIG_SYS_SPL_ARGS_ADDR=0x8000000 +CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x8000000 CONFIG_SPL_RAM_SUPPORT=y CONFIG_SPL_RAM_DEVICE=y CONFIG_SPL_SPI_LOAD=y diff --git a/doc/develop/falcon.rst b/doc/develop/falcon.rst index a569d1a2951..2f25fc8532f 100644 --- a/doc/develop/falcon.rst +++ b/doc/develop/falcon.rst @@ -63,7 +63,7 @@ CONFIG_CMD_SPL Enable the "spl export" command. The command "spl export" is then available in U-Boot mode. -CONFIG_SYS_SPL_ARGS_ADDR +CONFIG_SPL_PAYLOAD_ARGS_ADDR Address in RAM where the parameters must be copied by SPL. In most cases, it is + 0x100. -- cgit v1.3.1 From 52779874dac3f096f9f7893f0b3603aeff4c646b Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:18 -0600 Subject: spl: Avoid #ifdef with CONFIG_SPL_SYS_MALLOC Use IF_ENABLED_INT() to avoid needing to use the preprocessor. Signed-off-by: Simon Glass --- common/spl/spl.c | 8 ++++---- include/system-constants.h | 7 ++++++- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'common') diff --git a/common/spl/spl.c b/common/spl/spl.c index 0f453365516..a58b070d17e 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -750,10 +750,10 @@ void board_init_r(gd_t *dummy1, ulong dummy2) spl_set_bd(); -#if defined(CONFIG_SPL_SYS_MALLOC) - mem_malloc_init(SPL_SYS_MALLOC_START, CONFIG_SPL_SYS_MALLOC_SIZE); - gd->flags |= GD_FLG_FULL_MALLOC_INIT; -#endif + if (IS_ENABLED(CONFIG_SPL_SYS_MALLOC)) { + mem_malloc_init(SPL_SYS_MALLOC_START, SPL_SYS_MALLOC_SIZE); + gd->flags |= GD_FLG_FULL_MALLOC_INIT; + } if (!(gd->flags & GD_FLG_SPL_INIT)) { if (spl_init()) hang(); diff --git a/include/system-constants.h b/include/system-constants.h index f0a191be590..dca6a86b01f 100644 --- a/include/system-constants.h +++ b/include/system-constants.h @@ -24,9 +24,14 @@ */ #ifdef CONFIG_SPL_HAS_CUSTOM_MALLOC_START #define SPL_SYS_MALLOC_START CONFIG_SPL_CUSTOM_SYS_MALLOC_ADDR -#else +#elif defined(CONFIG_SPL_BSS_START_ADDR) #define SPL_SYS_MALLOC_START (CONFIG_SPL_BSS_START_ADDR + \ CONFIG_SPL_BSS_MAX_SIZE) +#else +/* feature not enabled: this value avoids compiler errors but is not used */ +#define SPL_SYS_MALLOC_START 0 #endif +#define SPL_SYS_MALLOC_SIZE \ + IF_ENABLED_INT(CONFIG_SPL_SYS_MALLOC, CONFIG_SPL_SYS_MALLOC_SIZE) #endif -- cgit v1.3.1 From 6c2bdf5c1a2daec80019b43e52a8537e7cb93ba2 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:19 -0600 Subject: spl: mx6: powerpc: Drop the condition on timer_init() It doesn't make sense to have some boards do this differently. Drop the condition in the hope that the maintainers can figure out any run-time problems. This has been tested on qemu-ppce500 Signed-off-by: Simon Glass Acked-by: Christophe Leroy --- common/spl/spl.c | 6 ------ 1 file changed, 6 deletions(-) (limited to 'common') diff --git a/common/spl/spl.c b/common/spl/spl.c index a58b070d17e..d930d2083de 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -758,13 +758,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) if (spl_init()) hang(); } -#if !defined(CONFIG_PPC) && !defined(CONFIG_ARCH_MX6) - /* - * timer_init() does not exist on PPC systems. The timer is initialized - * and enabled (decrementer) in interrupt_init() here. - */ timer_init(); -#endif if (CONFIG_IS_ENABLED(BLOBLIST)) { ret = bloblist_init(); if (ret) { -- cgit v1.3.1 From 6371c47999ea78d00cf98028ced210bea8337711 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:20 -0600 Subject: spl: Drop #ifdefs for BOARD_INIT and watchdog Avoid using the preprocessor for these checks. Signed-off-by: Simon Glass --- common/spl/spl.c | 10 ++++------ include/spl.h | 8 ++++++-- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'common') diff --git a/common/spl/spl.c b/common/spl/spl.c index d930d2083de..530ade556ee 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -778,13 +778,11 @@ void board_init_r(gd_t *dummy1, ulong dummy2) } } -#if CONFIG_IS_ENABLED(BOARD_INIT) - spl_board_init(); -#endif + if (CONFIG_IS_ENABLED(BOARD_INIT)) + spl_board_init(); -#if defined(CONFIG_SPL_WATCHDOG) && CONFIG_IS_ENABLED(WDT) - initr_watchdog(); -#endif + if (IS_ENABLED(CONFIG_SPL_WATCHDOG) && CONFIG_IS_ENABLED(WDT)) + initr_watchdog(); if (IS_ENABLED(CONFIG_SPL_OS_BOOT) || CONFIG_IS_ENABLED(HANDOFF) || IS_ENABLED(CONFIG_SPL_ATF)) diff --git a/include/spl.h b/include/spl.h index 0fedddd00ef..ab06e32ebd9 100644 --- a/include/spl.h +++ b/include/spl.h @@ -707,9 +707,13 @@ int spl_early_init(void); */ int spl_init(void); -#ifdef CONFIG_SPL_BOARD_INIT +/* + * spl_board_init() - Do board-specific init in SPL + * + * If xPL_BOARD_INIT is enabled, this is called from board_init_r() before + * jumping to the next phase. + */ void spl_board_init(void); -#endif /** * spl_was_boot_source() - check if U-Boot booted from SPL -- cgit v1.3.1 From e0be6eaf581d06af788509e588129c4dbae967d2 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:21 -0600 Subject: spl: Avoid #ifdef with CONFIG_SPL_PAYLOAD_ARGS_ADDR Move the condition to the header file to improve readability. Signed-off-by: Simon Glass --- common/spl/spl.c | 10 ++++------ include/system-constants.h | 7 +++++++ 2 files changed, 11 insertions(+), 6 deletions(-) (limited to 'common') diff --git a/common/spl/spl.c b/common/spl/spl.c index 530ade556ee..8ed2eeb5930 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -806,9 +806,8 @@ void board_init_r(gd_t *dummy1, ulong dummy2) } memset(&spl_image, '\0', sizeof(spl_image)); -#ifdef CONFIG_SPL_PAYLOAD_ARGS_ADDR - spl_image.arg = (void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR; -#endif + if (IS_ENABLED(CONFIG_SPL_OS_BOOT)) + spl_image.arg = (void *)SPL_PAYLOAD_ARGS_ADDR; spl_image.boot_device = BOOT_DEVICE_NONE; board_boot_order(spl_boot_list); @@ -865,9 +864,8 @@ void board_init_r(gd_t *dummy1, ulong dummy2) #if CONFIG_IS_ENABLED(OS_BOOT) case IH_OS_LINUX: debug("Jumping to Linux\n"); -#if defined(CONFIG_SPL_PAYLOAD_ARGS_ADDR) - spl_fixup_fdt((void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR); -#endif + if (IS_ENABLED(CONFIG_SPL_OS_BOOT)) + spl_fixup_fdt((void *)SPL_PAYLOAD_ARGS_ADDR); spl_board_prepare_for_linux(); jump_to_image_linux(&spl_image); #endif diff --git a/include/system-constants.h b/include/system-constants.h index dca6a86b01f..59371568d1e 100644 --- a/include/system-constants.h +++ b/include/system-constants.h @@ -34,4 +34,11 @@ #define SPL_SYS_MALLOC_SIZE \ IF_ENABLED_INT(CONFIG_SPL_SYS_MALLOC, CONFIG_SPL_SYS_MALLOC_SIZE) +/* deal with an optional value */ +#ifdef CONFIG_SPL_OS_BOOT +#define SPL_PAYLOAD_ARGS_ADDR CONFIG_SPL_PAYLOAD_ARGS_ADDR +#else +#define SPL_PAYLOAD_ARGS_ADDR 0 +#endif + #endif -- cgit v1.3.1 From f817e08ff290c51f6471345d7bc11507cde8ffbc Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:22 -0600 Subject: spl: Drop the switch() statement for OS selection This code is pretty ugly, with many #ifdefs There are quite a lot of IH_OS_U_BOOT values so the compiler struggles to create a jump table here. Also, most of the options are normally disabled. Change it to an else...if construct instead. Add an accessor for the spl_image field behind an #ifdef to avoid needing #ifdef in the C code. Signed-off-by: Simon Glass --- common/spl/spl.c | 32 ++++++++++---------------------- include/spl.h | 9 +++++++++ 2 files changed, 19 insertions(+), 22 deletions(-) (limited to 'common') diff --git a/common/spl/spl.c b/common/spl/spl.c index 8ed2eeb5930..898ddfe0c78 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -744,7 +744,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) BOOT_DEVICE_NONE, }; struct spl_image_info spl_image; - int ret; + int ret, os; debug(">>" SPL_TPL_PROMPT "board_init_r()\n"); @@ -837,39 +837,27 @@ void board_init_r(gd_t *dummy1, ulong dummy2) ret); } - switch (spl_image.os) { - case IH_OS_U_BOOT: + os = spl_image.os; + if (os == IH_OS_U_BOOT) { debug("Jumping to %s...\n", spl_phase_name(spl_next_phase())); - break; -#if CONFIG_IS_ENABLED(ATF) - case IH_OS_ARM_TRUSTED_FIRMWARE: + } else if (CONFIG_IS_ENABLED(ATF) && os == IH_OS_ARM_TRUSTED_FIRMWARE) { debug("Jumping to U-Boot via ARM Trusted Firmware\n"); - spl_fixup_fdt(spl_image.fdt_addr); + spl_fixup_fdt(spl_image_fdt_addr(&spl_image)); spl_invoke_atf(&spl_image); - break; -#endif -#if CONFIG_IS_ENABLED(OPTEE_IMAGE) - case IH_OS_TEE: + } else if (CONFIG_IS_ENABLED(OPTEE_IMAGE) && os == IH_OS_TEE) { debug("Jumping to U-Boot via OP-TEE\n"); - spl_board_prepare_for_optee(spl_image.fdt_addr); + spl_board_prepare_for_optee(spl_image_fdt_addr(&spl_image)); jump_to_image_optee(&spl_image); - break; -#endif -#if CONFIG_IS_ENABLED(OPENSBI) - case IH_OS_OPENSBI: + } else if (CONFIG_IS_ENABLED(OPENSBI) && os == IH_OS_OPENSBI) { debug("Jumping to U-Boot via RISC-V OpenSBI\n"); spl_invoke_opensbi(&spl_image); - break; -#endif -#if CONFIG_IS_ENABLED(OS_BOOT) - case IH_OS_LINUX: + } else if (CONFIG_IS_ENABLED(OS_BOOT) && os == IH_OS_LINUX) { debug("Jumping to Linux\n"); if (IS_ENABLED(CONFIG_SPL_OS_BOOT)) spl_fixup_fdt((void *)SPL_PAYLOAD_ARGS_ADDR); spl_board_prepare_for_linux(); jump_to_image_linux(&spl_image); -#endif - default: + } else { debug("Unsupported OS image.. Jumping nevertheless..\n"); } #if CONFIG_VAL(SYS_MALLOC_F_LEN) && !defined(CONFIG_SPL_SYS_MALLOC_SIZE) diff --git a/include/spl.h b/include/spl.h index ab06e32ebd9..6c6ca07dbcc 100644 --- a/include/spl.h +++ b/include/spl.h @@ -263,6 +263,15 @@ struct spl_image_info { #endif }; +static inline void *spl_image_fdt_addr(struct spl_image_info *info) +{ +#if CONFIG_IS_ENABLED(LOAD_FIT) || CONFIG_IS_ENABLED(LOAD_FIT_FULL) + return info->fdt_addr; +#else + return 0; +#endif +} + /** * Information required to load data from a device * -- cgit v1.3.1 From 3d6d50751469fbadec3e34fbb6d06f21746619dd Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:27 -0600 Subject: spl: Use SYS_MALLOC_F instead of SYS_MALLOC_F_LEN Use the new SPL/TPL/VPL_SYS_MALLOC_F symbols to determine whether the malloc pool exists. Signed-off-by: Simon Glass Reviewed-by: Sean Anderson --- Kconfig | 9 ++++----- arch/arm/lib/bdinfo.c | 2 +- arch/mips/cpu/start.S | 4 ++-- arch/mips/mach-mtmips/mt7621/spl/start.S | 4 ++-- arch/powerpc/cpu/mpc83xx/start.S | 2 +- arch/powerpc/cpu/mpc85xx/start.S | 4 ++-- arch/sandbox/cpu/start.c | 2 +- arch/sh/lib/start.S | 4 ++-- common/Makefile | 6 +----- common/board_f.c | 2 +- common/board_r.c | 2 +- common/dlmalloc.c | 12 ++++++------ common/init/board_init.c | 4 ++-- common/spl/spl.c | 6 +++--- include/asm-generic/global_data.h | 2 +- lib/asm-offsets.c | 2 +- 16 files changed, 31 insertions(+), 36 deletions(-) (limited to 'common') diff --git a/Kconfig b/Kconfig index 927e2def085..068da61d845 100644 --- a/Kconfig +++ b/Kconfig @@ -307,8 +307,7 @@ config SPL_SYS_MALLOC_F config SPL_SYS_MALLOC_F_LEN hex "Size of malloc() pool in SPL" - depends on SYS_MALLOC_F && SPL - default 0x0 if !SPL_FRAMEWORK + depends on SPL_SYS_MALLOC_F default 0x2800 if RCAR_GEN3 default 0x2000 if IMX8MQ default SYS_MALLOC_F_LEN @@ -332,7 +331,7 @@ config TPL_SYS_MALLOC_F config TPL_SYS_MALLOC_F_LEN hex "Size of malloc() pool in TPL" - depends on SYS_MALLOC_F && TPL + depends on TPL_SYS_MALLOC_F default SPL_SYS_MALLOC_F_LEN help Sets the size of the malloc() pool in TPL. This is used for @@ -366,8 +365,8 @@ config VPL_SYS_MALLOC_F config VPL_SYS_MALLOC_F_LEN hex "Size of malloc() pool in VPL before relocation" - depends on SYS_MALLOC_F && VPL - default SYS_MALLOC_F_LEN + depends on VPL_SYS_MALLOC_F + default SPL_SYS_MALLOC_F_LEN help Sets the size of the malloc() pool in VPL. This is used for driver model and other features, which must allocate memory for diff --git a/arch/arm/lib/bdinfo.c b/arch/arm/lib/bdinfo.c index 5e6eaad968d..b88b01eefdc 100644 --- a/arch/arm/lib/bdinfo.c +++ b/arch/arm/lib/bdinfo.c @@ -57,7 +57,7 @@ void arch_print_bdinfo(void) #ifdef CONFIG_BOARD_TYPES printf("Board Type = %ld\n", gd->board_type); #endif -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) printf("Early malloc usage: %lx / %x\n", gd->malloc_ptr, CONFIG_VAL(SYS_MALLOC_F_LEN)); #endif diff --git a/arch/mips/cpu/start.S b/arch/mips/cpu/start.S index 2acc21d5871..a95c95bc783 100644 --- a/arch/mips/cpu/start.S +++ b/arch/mips/cpu/start.S @@ -46,7 +46,7 @@ sp, sp, GD_SIZE # reserve space for gd and sp, sp, t0 # force 16 byte alignment move k0, sp # save gd pointer -#if CONFIG_VAL(SYS_MALLOC_F_LEN) && \ +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) && \ !CONFIG_IS_ENABLED(INIT_STACK_WITHOUT_MALLOC_F) li t2, CONFIG_VAL(SYS_MALLOC_F_LEN) PTR_SUBU \ @@ -63,7 +63,7 @@ blt t0, t1, 1b nop -#if CONFIG_VAL(SYS_MALLOC_F_LEN) && \ +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) && \ !CONFIG_IS_ENABLED(INIT_STACK_WITHOUT_MALLOC_F) PTR_S sp, GD_MALLOC_BASE(k0) # gd->malloc_base offset #endif diff --git a/arch/mips/mach-mtmips/mt7621/spl/start.S b/arch/mips/mach-mtmips/mt7621/spl/start.S index d2f9c031cba..d56e624f313 100644 --- a/arch/mips/mach-mtmips/mt7621/spl/start.S +++ b/arch/mips/mach-mtmips/mt7621/spl/start.S @@ -37,7 +37,7 @@ sp, sp, GD_SIZE # reserve space for gd and sp, sp, t0 # force 16 byte alignment move k0, sp # save gd pointer -#if CONFIG_VAL(SYS_MALLOC_F_LEN) && \ +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) && \ !CONFIG_IS_ENABLED(INIT_STACK_WITHOUT_MALLOC_F) li t2, CONFIG_VAL(SYS_MALLOC_F_LEN) PTR_SUBU \ @@ -54,7 +54,7 @@ blt t0, t1, 1b nop -#if CONFIG_VAL(SYS_MALLOC_F_LEN) && \ +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) && \ !CONFIG_IS_ENABLED(INIT_STACK_WITHOUT_MALLOC_F) PTR_S sp, GD_MALLOC_BASE(k0) # gd->malloc_base offset #endif diff --git a/arch/powerpc/cpu/mpc83xx/start.S b/arch/powerpc/cpu/mpc83xx/start.S index 6749263da8a..d72d3147f63 100644 --- a/arch/powerpc/cpu/mpc83xx/start.S +++ b/arch/powerpc/cpu/mpc83xx/start.S @@ -244,7 +244,7 @@ in_flash: cmplw r3, r4 bne 1b -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) #if CONFIG_VAL(SYS_MALLOC_F_LEN) + GENERATED_GBL_DATA_SIZE > CFG_SYS_INIT_RAM_SIZE #error "SYS_MALLOC_F_LEN too large to fit into initial RAM." diff --git a/arch/powerpc/cpu/mpc85xx/start.S b/arch/powerpc/cpu/mpc85xx/start.S index 562b6993b9d..e9c30427734 100644 --- a/arch/powerpc/cpu/mpc85xx/start.S +++ b/arch/powerpc/cpu/mpc85xx/start.S @@ -1233,7 +1233,7 @@ _start_cont: lis r3,(CFG_SYS_INIT_RAM_ADDR)@h ori r3,r3,((CFG_SYS_INIT_SP_OFFSET-16)&~0xf)@l /* Align to 16 */ -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) #if CONFIG_VAL(SYS_MALLOC_F_LEN) + GENERATED_GBL_DATA_SIZE > CFG_SYS_INIT_RAM_SIZE #error "SYS_MALLOC_F_LEN too large to fit into initial RAM." #endif @@ -1253,7 +1253,7 @@ _start_cont: cmplw r4,r3 bne 1b -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) lis r4,SYS_INIT_SP_ADDR@h ori r4,r4,SYS_INIT_SP_ADDR@l diff --git a/arch/sandbox/cpu/start.c b/arch/sandbox/cpu/start.c index 1026898727f..bbd9e77afed 100644 --- a/arch/sandbox/cpu/start.c +++ b/arch/sandbox/cpu/start.c @@ -529,7 +529,7 @@ int sandbox_main(int argc, char *argv[]) goto err; } -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) gd->malloc_base = CFG_MALLOC_F_ADDR; #endif #if CONFIG_IS_ENABLED(LOG) diff --git a/arch/sh/lib/start.S b/arch/sh/lib/start.S index ddb9aa9f87b..f0e1c805b01 100644 --- a/arch/sh/lib/start.S +++ b/arch/sh/lib/start.S @@ -53,7 +53,7 @@ _start: mov.l ._gd_init, r13 /* global data */ mov.l ._stack_init, r15 /* stack */ -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) mov.l ._gd_malloc_base, r14 mov.l r15, @r14 #endif @@ -73,7 +73,7 @@ loop: ._bss_start: .long bss_start ._bss_end: .long bss_end ._gd_init: .long (_start - GENERATED_GBL_DATA_SIZE) -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) ._gd_malloc_base: .long (_start - GENERATED_GBL_DATA_SIZE + GD_MALLOC_BASE) #endif ._stack_init: .long (_start - GENERATED_GBL_DATA_SIZE - CONFIG_SYS_MALLOC_LEN - 16) diff --git a/common/Makefile b/common/Makefile index 5c1617206f0..cdeadf72026 100644 --- a/common/Makefile +++ b/common/Makefile @@ -74,11 +74,7 @@ endif # CONFIG_SPL_BUILD obj-$(CONFIG_CROS_EC) += cros_ec.o obj-y += dlmalloc.o -ifdef CONFIG_SYS_MALLOC_F -ifneq ($(CONFIG_$(SPL_TPL_)SYS_MALLOC_F_LEN),0x0) -obj-y += malloc_simple.o -endif -endif +obj-$(CONFIG_$(SPL_TPL_)SYS_MALLOC_F) += malloc_simple.o obj-$(CONFIG_CYCLIC) += cyclic.o obj-$(CONFIG_$(SPL_TPL_)EVENT) += event.o diff --git a/common/board_f.c b/common/board_f.c index aef395b1354..99c2a43c196 100644 --- a/common/board_f.c +++ b/common/board_f.c @@ -794,7 +794,7 @@ static int initf_bootstage(void) static int initf_dm(void) { -#if defined(CONFIG_DM) && CONFIG_VAL(SYS_MALLOC_F_LEN) +#if defined(CONFIG_DM) && CONFIG_IS_ENABLED(SYS_MALLOC_F) int ret; bootstage_start(BOOTSTAGE_ID_ACCUM_DM_F, "dm_f"); diff --git a/common/board_r.c b/common/board_r.c index e30963339cf..52786901be5 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -191,7 +191,7 @@ static int initr_malloc(void) { ulong start; -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) debug("Pre-reloc malloc() used %#lx bytes (%ld KB)\n", gd->malloc_ptr, gd->malloc_ptr / 1024); #endif diff --git a/common/dlmalloc.c b/common/dlmalloc.c index aa933bdf577..87a09d38fb3 100644 --- a/common/dlmalloc.c +++ b/common/dlmalloc.c @@ -1291,7 +1291,7 @@ Void_t* mALLOc(bytes) size_t bytes; INTERNAL_SIZE_T nb; -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT)) return malloc_simple(bytes); #endif @@ -1572,7 +1572,7 @@ void fREe(mem) Void_t* mem; mchunkptr fwd; /* misc temp for linking */ int islr; /* track whether merging with last_remainder */ -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) /* free() is a no-op - all the memory will be freed on relocation */ if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT)) { VALGRIND_FREELIKE_BLOCK(mem, SIZE_SZ); @@ -1735,7 +1735,7 @@ Void_t* rEALLOc(oldmem, bytes) Void_t* oldmem; size_t bytes; /* realloc of null is supposed to be same as malloc */ if (oldmem == NULL) return mALLOc(bytes); -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT)) { /* This is harder to support and should not be needed */ panic("pre-reloc realloc() is not supported"); @@ -1957,7 +1957,7 @@ Void_t* mEMALIGn(alignment, bytes) size_t alignment; size_t bytes; if ((long)bytes < 0) return NULL; -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT)) { return memalign_simple(alignment, bytes); } @@ -2153,7 +2153,7 @@ Void_t* cALLOc(n, elem_size) size_t n; size_t elem_size; return NULL; else { -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT)) { memset(mem, 0, sz); return mem; @@ -2455,7 +2455,7 @@ int mALLOPt(param_number, value) int param_number; int value; int initf_malloc(void) { -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) assert(gd->malloc_base); /* Set up by crt0.S */ gd->malloc_limit = CONFIG_VAL(SYS_MALLOC_F_LEN); gd->malloc_ptr = 0; diff --git a/common/init/board_init.c b/common/init/board_init.c index ab8c508ad83..ed2365daa35 100644 --- a/common/init/board_init.c +++ b/common/init/board_init.c @@ -79,7 +79,7 @@ ulong board_init_f_alloc_reserve(ulong top) { /* Reserve early malloc arena */ #ifndef CFG_MALLOC_F_ADDR -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) top -= CONFIG_VAL(SYS_MALLOC_F_LEN); #endif #endif @@ -159,7 +159,7 @@ void board_init_f_init_reserve(ulong base) * Use gd as it is now properly set for all architectures. */ -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) /* go down one 'early malloc arena' */ gd->malloc_base = base; #if CONFIG_IS_ENABLED(ZERO_MEM_BEFORE_USE) diff --git a/common/spl/spl.c b/common/spl/spl.c index 898ddfe0c78..9b0276cbdb5 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -523,7 +523,7 @@ static int spl_common_init(bool setup_malloc) { int ret; -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) if (setup_malloc) { #ifdef CFG_MALLOC_F_ADDR gd->malloc_base = CFG_MALLOC_F_ADDR; @@ -860,7 +860,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) } else { debug("Unsupported OS image.. Jumping nevertheless..\n"); } -#if CONFIG_VAL(SYS_MALLOC_F_LEN) && !defined(CONFIG_SPL_SYS_MALLOC_SIZE) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) && !defined(CONFIG_SPL_SYS_MALLOC_SIZE) debug("SPL malloc() used 0x%lx bytes (%ld KB)\n", gd->malloc_ptr, gd->malloc_ptr / 1024); #endif @@ -961,7 +961,7 @@ ulong spl_relocate_stack_gd(void) if (CONFIG_IS_ENABLED(SYS_REPORT_STACK_F_USAGE)) spl_relocate_stack_check(); -#if defined(CONFIG_SPL_SYS_MALLOC_SIMPLE) && CONFIG_VAL(SYS_MALLOC_F_LEN) +#if defined(CONFIG_SPL_SYS_MALLOC_SIMPLE) && CONFIG_IS_ENABLED(SYS_MALLOC_F) if (CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN) { debug("SPL malloc() before relocation used 0x%lx bytes (%ld KB)\n", gd->malloc_ptr, gd->malloc_ptr / 1024); diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index c6d63b3657c..f8fc87f1e46 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -307,7 +307,7 @@ struct global_data { #if CONFIG_IS_ENABLED(CMD_BDINFO_EXTRA) unsigned long malloc_start; #endif -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) /** * @malloc_base: base address of early malloc() */ diff --git a/lib/asm-offsets.c b/lib/asm-offsets.c index 0808cd4b0c1..216d9716d0d 100644 --- a/lib/asm-offsets.c +++ b/lib/asm-offsets.c @@ -32,7 +32,7 @@ int main(void) DEFINE(GD_FLAGS, offsetof(struct global_data, flags)); -#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#if CONFIG_IS_ENABLED(SYS_MALLOC_F) DEFINE(GD_MALLOC_BASE, offsetof(struct global_data, malloc_base)); #endif -- cgit v1.3.1 From 2003a83cc8b3937cda09e712c75f50f579eed3fa Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:31 -0600 Subject: spl: Avoid an #ifdef when printing gd->malloc_ptr Use an accessor in the header file to avoid this. Signed-off-by: Simon Glass --- common/spl/spl.c | 9 +++++---- include/asm-generic/global_data.h | 6 ++++++ 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'common') diff --git a/common/spl/spl.c b/common/spl/spl.c index 9b0276cbdb5..d676a0312af 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -860,10 +860,11 @@ void board_init_r(gd_t *dummy1, ulong dummy2) } else { debug("Unsupported OS image.. Jumping nevertheless..\n"); } -#if CONFIG_IS_ENABLED(SYS_MALLOC_F) && !defined(CONFIG_SPL_SYS_MALLOC_SIZE) - debug("SPL malloc() used 0x%lx bytes (%ld KB)\n", gd->malloc_ptr, - gd->malloc_ptr / 1024); -#endif + if (CONFIG_IS_ENABLED(SYS_MALLOC_F) && + !IS_ENABLED(CONFIG_SPL_SYS_MALLOC_SIZE)) + debug("SPL malloc() used 0x%lx bytes (%ld KB)\n", + gd_malloc_ptr(), gd_malloc_ptr() / 1024); + bootstage_mark_name(get_bootstage_id(false), "end phase"); #ifdef CONFIG_BOOTSTAGE_STASH ret = bootstage_stash((void *)CONFIG_BOOTSTAGE_STASH_ADDR, diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index f8fc87f1e46..937fb12516c 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -588,6 +588,12 @@ static_assert(sizeof(struct global_data) == GD_SIZE); #define gd_set_pci_ram_top(val) #endif +#if CONFIG_VAL(SYS_MALLOC_F_LEN) +#define gd_malloc_ptr() gd->malloc_ptr +#else +#define gd_malloc_ptr() 0L +#endif + /** * enum gd_flags - global data flags * -- cgit v1.3.1 From 17ba50106efe04ca5249ce33a8ef8374b584ee8d Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:32 -0600 Subject: spl: Remove #ifdefs with BOOTSTAGE This feature has some helpers in its header file so that its functions resolve to nothing when the feature is disabled. Add a few more and use these to simplify the code. With this there are no more #ifdefs in board_init_r() Signed-off-by: Simon Glass --- common/bootstage.c | 14 ++++++++++++++ common/spl/spl.c | 15 +++------------ include/bootstage.h | 22 ++++++++++++++++++++++ 3 files changed, 39 insertions(+), 12 deletions(-) (limited to 'common') diff --git a/common/bootstage.c b/common/bootstage.c index 326c40f1561..a68d883c684 100644 --- a/common/bootstage.c +++ b/common/bootstage.c @@ -502,6 +502,20 @@ int bootstage_unstash(const void *base, int size) return 0; } +int _bootstage_stash_default(void) +{ + return bootstage_stash(map_sysmem(CONFIG_BOOTSTAGE_STASH_ADDR, 0), + CONFIG_BOOTSTAGE_STASH_SIZE); +} + +int _bootstage_unstash_default(void) +{ + const void *stash = map_sysmem(CONFIG_BOOTSTAGE_STASH_ADDR, + CONFIG_BOOTSTAGE_STASH_SIZE); + + return bootstage_unstash(stash, CONFIG_BOOTSTAGE_STASH_SIZE); +} + int bootstage_get_size(void) { struct bootstage_data *data = gd->bootstage; diff --git a/common/spl/spl.c b/common/spl/spl.c index d676a0312af..2239ee933b8 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -538,17 +538,11 @@ static int spl_common_init(bool setup_malloc) ret); return ret; } -#ifdef CONFIG_BOOTSTAGE_STASH if (!u_boot_first_phase()) { - const void *stash = map_sysmem(CONFIG_BOOTSTAGE_STASH_ADDR, - CONFIG_BOOTSTAGE_STASH_SIZE); - - ret = bootstage_unstash(stash, CONFIG_BOOTSTAGE_STASH_SIZE); + ret = bootstage_unstash_default(); if (ret) - debug("%s: Failed to unstash bootstage: ret=%d\n", - __func__, ret); + log_debug("Failed to unstash bootstage: ret=%d\n", ret); } -#endif /* CONFIG_BOOTSTAGE_STASH */ bootstage_mark_name(get_bootstage_id(true), spl_phase_name(spl_phase())); #if CONFIG_IS_ENABLED(LOG) @@ -866,12 +860,9 @@ void board_init_r(gd_t *dummy1, ulong dummy2) gd_malloc_ptr(), gd_malloc_ptr() / 1024); bootstage_mark_name(get_bootstage_id(false), "end phase"); -#ifdef CONFIG_BOOTSTAGE_STASH - ret = bootstage_stash((void *)CONFIG_BOOTSTAGE_STASH_ADDR, - CONFIG_BOOTSTAGE_STASH_SIZE); + ret = bootstage_stash_default(); if (ret) debug("Failed to stash bootstage: err=%d\n", ret); -#endif if (IS_ENABLED(CONFIG_SPL_VIDEO_REMOVE)) { struct udevice *dev; diff --git a/include/bootstage.h b/include/bootstage.h index 685939ccffc..f9376c320c9 100644 --- a/include/bootstage.h +++ b/include/bootstage.h @@ -244,6 +244,8 @@ void show_boot_progress(int val); #ifdef ENABLE_BOOTSTAGE +#include + /* This is the full bootstage implementation */ /** @@ -452,6 +454,26 @@ static inline int bootstage_init(bool first) #endif /* ENABLE_BOOTSTAGE */ +/* helpers for SPL */ +int _bootstage_stash_default(void); +int _bootstage_unstash_default(void); + +static inline int bootstage_stash_default(void) +{ + if (CONFIG_IS_ENABLED(BOOTSTAGE) && IS_ENABLED(CONFIG_BOOTSTAGE_STASH)) + return _bootstage_stash_default(); + + return 0; +} + +static inline int bootstage_unstash_default(void) +{ + if (CONFIG_IS_ENABLED(BOOTSTAGE) && IS_ENABLED(CONFIG_BOOTSTAGE_STASH)) + return _bootstage_unstash_default(); + + return 0; +} + /* Helper macro for adding a bootstage to a line of code */ #define BOOTSTAGE_MARKER() \ bootstage_mark_code(__FILE__, __func__, __LINE__) -- cgit v1.3.1 From d7c232e6b578940acdf541cd7f88857f1fd1808a Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:33 -0600 Subject: spl: Rename spl_load_fit_image() to load_simple_fit() We have two functions called spl_load_fit_image(), one in spl.c and one in spl_fit.c Rename the second one, to indicate that it relates to simple FIT parsing, rather than the full version. Signed-off-by: Simon Glass --- common/spl/spl_fit.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'common') diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c index 1dfae1ab2fe..822d0ce0e44 100644 --- a/common/spl/spl_fit.c +++ b/common/spl/spl_fit.c @@ -208,7 +208,7 @@ static int get_aligned_image_size(struct spl_load_info *info, int data_size, } /** - * spl_load_fit_image(): load the image described in a certain FIT node + * load_simple_fit(): load the image described in a certain FIT node * @info: points to information about the device to load data from * @sector: the start sector of the FIT image on the device * @ctx: points to the FIT context structure @@ -221,9 +221,9 @@ static int get_aligned_image_size(struct spl_load_info *info, int data_size, * * Return: 0 on success or a negative error number. */ -static int spl_load_fit_image(struct spl_load_info *info, ulong sector, - const struct spl_fit_info *ctx, int node, - struct spl_image_info *image_info) +static int load_simple_fit(struct spl_load_info *info, ulong sector, + const struct spl_fit_info *ctx, int node, + struct spl_image_info *image_info) { int offset; size_t length; @@ -386,8 +386,7 @@ static int spl_fit_append_fdt(struct spl_image_info *spl_image, else return node; } else { - ret = spl_load_fit_image(info, sector, ctx, node, - &image_info); + ret = load_simple_fit(info, sector, ctx, node, &image_info); if (ret < 0) return ret; } @@ -426,8 +425,8 @@ static int spl_fit_append_fdt(struct spl_image_info *spl_image, __func__); } image_info.load_addr = (ulong)tmpbuffer; - ret = spl_load_fit_image(info, sector, ctx, - node, &image_info); + ret = load_simple_fit(info, sector, ctx, node, + &image_info); if (ret < 0) break; @@ -617,7 +616,7 @@ static int spl_fit_load_fpga(struct spl_fit_info *ctx, warn_deprecated("'fpga' property in config node. Use 'loadables'"); /* Load the image and set up the fpga_image structure */ - ret = spl_load_fit_image(info, sector, ctx, node, &fpga_image); + ret = load_simple_fit(info, sector, ctx, node, &fpga_image); if (ret) { printf("%s: Cannot load the FPGA: %i\n", __func__, ret); return ret; @@ -742,7 +741,7 @@ int spl_load_simple_fit(struct spl_image_info *spl_image, } /* Load the image and set up the spl_image structure */ - ret = spl_load_fit_image(info, sector, &ctx, node, spl_image); + ret = load_simple_fit(info, sector, &ctx, node, spl_image); if (ret) return ret; @@ -783,7 +782,7 @@ int spl_load_simple_fit(struct spl_image_info *spl_image, continue; image_info.load_addr = 0; - ret = spl_load_fit_image(info, sector, &ctx, node, &image_info); + ret = load_simple_fit(info, sector, &ctx, node, &image_info); if (ret < 0) { printf("%s: can't load image loadables index %d (ret = %d)\n", __func__, index, ret); -- cgit v1.3.1 From 035ab46e3930c8142cae881e08923043632faa51 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:34 -0600 Subject: spl: Move the full FIT code to spl_fit.c For some reason this code was put in the main spl.c file. Move it out to the FIT implementation where it belongs. Signed-off-by: Simon Glass --- common/spl/spl.c | 108 ++++----------------------------------------------- common/spl/spl_fit.c | 93 ++++++++++++++++++++++++++++++++++++++++++++ include/spl.h | 11 ++++++ 3 files changed, 111 insertions(+), 101 deletions(-) (limited to 'common') diff --git a/common/spl/spl.c b/common/spl/spl.c index 2239ee933b8..9f605b32407 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -256,102 +256,6 @@ void spl_set_header_raw_uboot(struct spl_image_info *spl_image) } #endif -#if CONFIG_IS_ENABLED(LOAD_FIT_FULL) -/* Parse and load full fitImage in SPL */ -static int spl_load_fit_image(struct spl_image_info *spl_image, - const struct legacy_img_hdr *header) -{ - struct bootm_headers images; - const char *fit_uname_config = NULL; - uintptr_t fdt_hack; - const char *uname; - ulong fw_data = 0, dt_data = 0, img_data = 0; - ulong fw_len = 0, dt_len = 0, img_len = 0; - int idx, conf_noffset; - int ret; - -#ifdef CONFIG_SPL_FIT_SIGNATURE - images.verify = 1; -#endif - ret = fit_image_load(&images, (ulong)header, - NULL, &fit_uname_config, - IH_ARCH_DEFAULT, IH_TYPE_STANDALONE, -1, - FIT_LOAD_OPTIONAL, &fw_data, &fw_len); - if (ret >= 0) { - printf("DEPRECATED: 'standalone = ' property."); - printf("Please use either 'firmware =' or 'kernel ='\n"); - } else { - ret = fit_image_load(&images, (ulong)header, NULL, - &fit_uname_config, IH_ARCH_DEFAULT, - IH_TYPE_FIRMWARE, -1, FIT_LOAD_OPTIONAL, - &fw_data, &fw_len); - } - - if (ret < 0) { - ret = fit_image_load(&images, (ulong)header, NULL, - &fit_uname_config, IH_ARCH_DEFAULT, - IH_TYPE_KERNEL, -1, FIT_LOAD_OPTIONAL, - &fw_data, &fw_len); - } - - if (ret < 0) - return ret; - - spl_image->size = fw_len; - spl_image->entry_point = fw_data; - spl_image->load_addr = fw_data; - if (fit_image_get_os(header, ret, &spl_image->os)) - spl_image->os = IH_OS_INVALID; - spl_image->name = genimg_get_os_name(spl_image->os); - - debug(SPL_TPL_PROMPT "payload image: %32s load addr: 0x%lx size: %d\n", - spl_image->name, spl_image->load_addr, spl_image->size); - -#ifdef CONFIG_SPL_FIT_SIGNATURE - images.verify = 1; -#endif - ret = fit_image_load(&images, (ulong)header, NULL, &fit_uname_config, - IH_ARCH_DEFAULT, IH_TYPE_FLATDT, -1, - FIT_LOAD_OPTIONAL, &dt_data, &dt_len); - if (ret >= 0) { - spl_image->fdt_addr = (void *)dt_data; - - if (spl_image->os == IH_OS_U_BOOT) { - /* HACK: U-Boot expects FDT at a specific address */ - fdt_hack = spl_image->load_addr + spl_image->size; - fdt_hack = (fdt_hack + 3) & ~3; - debug("Relocating FDT to %p\n", spl_image->fdt_addr); - memcpy((void *)fdt_hack, spl_image->fdt_addr, dt_len); - } - } - - conf_noffset = fit_conf_get_node((const void *)header, - fit_uname_config); - if (conf_noffset < 0) - return 0; - - for (idx = 0; - uname = fdt_stringlist_get((const void *)header, conf_noffset, - FIT_LOADABLE_PROP, idx, - NULL), uname; - idx++) - { -#ifdef CONFIG_SPL_FIT_SIGNATURE - images.verify = 1; -#endif - ret = fit_image_load(&images, (ulong)header, - &uname, &fit_uname_config, - IH_ARCH_DEFAULT, IH_TYPE_LOADABLE, -1, - FIT_LOAD_OPTIONAL_NON_ZERO, - &img_data, &img_len); - if (ret < 0) - return ret; - } - - return 0; -} -#endif - __weak int spl_parse_board_header(struct spl_image_info *spl_image, const struct spl_boot_device *bootdev, const void *image_header, size_t size) @@ -371,12 +275,14 @@ int spl_parse_image_header(struct spl_image_info *spl_image, const struct spl_boot_device *bootdev, const struct legacy_img_hdr *header) { -#if CONFIG_IS_ENABLED(LOAD_FIT_FULL) - int ret = spl_load_fit_image(spl_image, header); + int ret; - if (!ret) - return ret; -#endif + if (CONFIG_IS_ENABLED(LOAD_FIT_FULL)) { + ret = spl_load_fit_image(spl_image, header); + + if (!ret) + return ret; + } if (image_get_magic(header) == IH_MAGIC) { int ret; diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c index 822d0ce0e44..9373a562b26 100644 --- a/common/spl/spl_fit.c +++ b/common/spl/spl_fit.c @@ -827,3 +827,96 @@ int spl_load_simple_fit(struct spl_image_info *spl_image, return 0; } + +/* Parse and load full fitImage in SPL */ +int spl_load_fit_image(struct spl_image_info *spl_image, + const struct legacy_img_hdr *header) +{ + struct bootm_headers images; + const char *fit_uname_config = NULL; + uintptr_t fdt_hack; + const char *uname; + ulong fw_data = 0, dt_data = 0, img_data = 0; + ulong fw_len = 0, dt_len = 0, img_len = 0; + int idx, conf_noffset; + int ret; + +#ifdef CONFIG_SPL_FIT_SIGNATURE + images.verify = 1; +#endif + ret = fit_image_load(&images, (ulong)header, + NULL, &fit_uname_config, + IH_ARCH_DEFAULT, IH_TYPE_STANDALONE, -1, + FIT_LOAD_OPTIONAL, &fw_data, &fw_len); + if (ret >= 0) { + printf("DEPRECATED: 'standalone = ' property."); + printf("Please use either 'firmware =' or 'kernel ='\n"); + } else { + ret = fit_image_load(&images, (ulong)header, NULL, + &fit_uname_config, IH_ARCH_DEFAULT, + IH_TYPE_FIRMWARE, -1, FIT_LOAD_OPTIONAL, + &fw_data, &fw_len); + } + + if (ret < 0) { + ret = fit_image_load(&images, (ulong)header, NULL, + &fit_uname_config, IH_ARCH_DEFAULT, + IH_TYPE_KERNEL, -1, FIT_LOAD_OPTIONAL, + &fw_data, &fw_len); + } + + if (ret < 0) + return ret; + + spl_image->size = fw_len; + spl_image->entry_point = fw_data; + spl_image->load_addr = fw_data; + if (fit_image_get_os(header, ret, &spl_image->os)) + spl_image->os = IH_OS_INVALID; + spl_image->name = genimg_get_os_name(spl_image->os); + + debug(SPL_TPL_PROMPT "payload image: %32s load addr: 0x%lx size: %d\n", + spl_image->name, spl_image->load_addr, spl_image->size); + +#ifdef CONFIG_SPL_FIT_SIGNATURE + images.verify = 1; +#endif + ret = fit_image_load(&images, (ulong)header, NULL, &fit_uname_config, + IH_ARCH_DEFAULT, IH_TYPE_FLATDT, -1, + FIT_LOAD_OPTIONAL, &dt_data, &dt_len); + if (ret >= 0) { + spl_image->fdt_addr = (void *)dt_data; + + if (spl_image->os == IH_OS_U_BOOT) { + /* HACK: U-Boot expects FDT at a specific address */ + fdt_hack = spl_image->load_addr + spl_image->size; + fdt_hack = (fdt_hack + 3) & ~3; + debug("Relocating FDT to %p\n", spl_image->fdt_addr); + memcpy((void *)fdt_hack, spl_image->fdt_addr, dt_len); + } + } + + conf_noffset = fit_conf_get_node((const void *)header, + fit_uname_config); + if (conf_noffset < 0) + return 0; + + for (idx = 0; + uname = fdt_stringlist_get((const void *)header, conf_noffset, + FIT_LOADABLE_PROP, idx, + NULL), uname; + idx++) { +#ifdef CONFIG_SPL_FIT_SIGNATURE + images.verify = 1; +#endif + ret = fit_image_load(&images, (ulong)header, + &uname, &fit_uname_config, + IH_ARCH_DEFAULT, IH_TYPE_LOADABLE, -1, + FIT_LOAD_OPTIONAL_NON_ZERO, + &img_data, &img_len); + if (ret < 0) + return ret; + } + + return 0; +} diff --git a/include/spl.h b/include/spl.h index 6c6ca07dbcc..59c508280bc 100644 --- a/include/spl.h +++ b/include/spl.h @@ -910,4 +910,15 @@ struct legacy_img_hdr *spl_get_load_buffer(ssize_t offset, size_t size); void board_boot_order(u32 *spl_boot_list); void spl_save_restore_data(void); + +/** + * spl_load_fit_image() - Fully parse and a FIT image in SPL + * + * @spl_image: SPL Image data to fill in + * @header: Pointer to FIT image + * Return 0 if OK, -ve on error + */ +int spl_load_fit_image(struct spl_image_info *spl_image, + const struct legacy_img_hdr *header); + #endif -- cgit v1.3.1 From 2354daaf3946b5d0eefc8c8c87b007b480680df5 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:35 -0600 Subject: spl: Use the correct FIT_..._PROP constants Rather than open-coding the property names, use the existing constants provided for this purpose. This better aligns the simple-FIT code with the full FIT implementation. Signed-off-by: Simon Glass --- common/spl/spl_fit.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'common') diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c index 9373a562b26..93480a5a60d 100644 --- a/common/spl/spl_fit.c +++ b/common/spl/spl_fit.c @@ -44,7 +44,7 @@ static int find_node_from_desc(const void *fit, int node, const char *str) for (child = fdt_first_subnode(fit, node); child >= 0; child = fdt_next_subnode(fit, child)) { int len; - const char *desc = fdt_getprop(fit, child, "description", &len); + const char *desc = fdt_getprop(fit, child, FIT_DESC_PROP, &len); if (!desc) continue; @@ -476,10 +476,11 @@ static int spl_fit_record_loadable(const struct spl_fit_info *ctx, int index, node = spl_fit_get_image_node(ctx, "loadables", index); ret = fdt_record_loadable(blob, index, name, image->load_addr, - image->size, image->entry_point, - fdt_getprop(ctx->fit, node, "type", NULL), - fdt_getprop(ctx->fit, node, "os", NULL), - fdt_getprop(ctx->fit, node, "arch", NULL)); + image->size, image->entry_point, + fdt_getprop(ctx->fit, node, FIT_TYPE_PROP, NULL), + fdt_getprop(ctx->fit, node, FIT_OS_PROP, NULL), + fdt_getprop(ctx->fit, node, FIT_ARCH_PROP, NULL)); + return ret; } -- cgit v1.3.1 From a17e1e76c8984396b82b2b20a1bf9d4e7160182a Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:36 -0600 Subject: spl: Move bloblist writing until the image is known The bloblist should not be finalised until the image is fully set up. This allows any final handoff information to be included in the bloblist. Signed-off-by: Simon Glass --- common/spl/spl.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'common') diff --git a/common/spl/spl.c b/common/spl/spl.c index 9f605b32407..0cf887fd626 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -724,18 +724,6 @@ void board_init_r(gd_t *dummy1, ulong dummy2) } spl_perform_fixups(&spl_image); - if (CONFIG_IS_ENABLED(HANDOFF)) { - ret = write_spl_handoff(); - if (ret) - printf(SPL_TPL_PROMPT - "SPL hand-off write failed (err=%d)\n", ret); - } - if (CONFIG_IS_ENABLED(BLOBLIST)) { - ret = bloblist_finish(); - if (ret) - printf("Warning: Failed to finish bloblist (ret=%d)\n", - ret); - } os = spl_image.os; if (os == IH_OS_U_BOOT) { @@ -782,6 +770,18 @@ void board_init_r(gd_t *dummy1, ulong dummy2) dev->name, rc); } } + if (CONFIG_IS_ENABLED(HANDOFF)) { + ret = write_spl_handoff(); + if (ret) + printf(SPL_TPL_PROMPT + "SPL hand-off write failed (err=%d)\n", ret); + } + if (CONFIG_IS_ENABLED(BLOBLIST)) { + ret = bloblist_finish(); + if (ret) + printf("Warning: Failed to finish bloblist (ret=%d)\n", + ret); + } spl_board_prepare_for_boot(); jump_to_image_no_args(&spl_image); -- cgit v1.3.1 From ff6c708b999aa8b713e7951b9195c8e743495d8b Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:50 -0600 Subject: sandbox: Move the bloblist down a little in memory Move this down by 4KB so that it is large enough to hold the devicetree. Also fix up the devicetree address in the documetation while we are here. Signed-off-by: Simon Glass --- common/Kconfig | 2 +- doc/arch/sandbox/sandbox.rst | 4 ++-- test/lib/kconfig.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) (limited to 'common') diff --git a/common/Kconfig b/common/Kconfig index 21eaa5e815f..5e79b542217 100644 --- a/common/Kconfig +++ b/common/Kconfig @@ -1012,7 +1012,7 @@ endchoice config BLOBLIST_ADDR hex "Address of bloblist" - default 0xc000 if SANDBOX + default 0xb000 if SANDBOX depends on BLOBLIST_FIXED help Sets the address of the bloblist, set up by the first part of U-Boot diff --git a/doc/arch/sandbox/sandbox.rst b/doc/arch/sandbox/sandbox.rst index a3631de7493..23902dee89e 100644 --- a/doc/arch/sandbox/sandbox.rst +++ b/doc/arch/sandbox/sandbox.rst @@ -614,8 +614,8 @@ that are mapped into that memory: ======= ======================== =============================== Addr Config Usage ======= ======================== =============================== - 0 CONFIG_SYS_FDT_LOAD_ADDR Device tree - c000 CONFIG_BLOBLIST_ADDR Blob list + 100 CONFIG_SYS_FDT_LOAD_ADDR Device tree + b000 CONFIG_BLOBLIST_ADDR Blob list 10000 CFG_MALLOC_F_ADDR Early memory allocation f0000 CONFIG_PRE_CON_BUF_ADDR Pre-console buffer 100000 CONFIG_TRACE_EARLY_ADDR Early trace buffer (if enabled). Also used diff --git a/test/lib/kconfig.c b/test/lib/kconfig.c index 76225ba8ffa..3914f699659 100644 --- a/test/lib/kconfig.c +++ b/test/lib/kconfig.c @@ -22,9 +22,9 @@ static int lib_test_is_enabled(struct unit_test_state *uts) ut_asserteq(0, CONFIG_IS_ENABLED(OF_PLATDATA)); ut_asserteq(0, CONFIG_IS_ENABLED(_UNDEFINED)); - ut_asserteq(0xc000, + ut_asserteq(0xb000, IF_ENABLED_INT(CONFIG_BLOBLIST_FIXED, CONFIG_BLOBLIST_ADDR)); - ut_asserteq(0xc000, + ut_asserteq(0xb000, CONFIG_IF_ENABLED_INT(BLOBLIST_FIXED, BLOBLIST_ADDR)); /* -- cgit v1.3.1 From 3d6531803e1cdc4c6976dae3c92220daba57f148 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:51 -0600 Subject: bloblist: Support initing from multiple places Typically the bloblist is set up after the devicetree is present. This makes sense because bloblist may use malloc() to allocate the space it needs. However sometimes the devicetree itself may be present in the bloblist. In that case it is at a known location in memory so we can init the bloblist very early, before devicetree. Add a flag to indicate whether the bloblist has been inited. Add a function to init it only if needed. Use that in the init sequence. Signed-off-by: Simon Glass --- common/bloblist.c | 13 ++++++++++++- common/board_f.c | 4 +--- include/asm-generic/global_data.h | 4 ++++ include/bloblist.h | 18 ++++++++++++++++++ 4 files changed, 35 insertions(+), 4 deletions(-) (limited to 'common') diff --git a/common/bloblist.c b/common/bloblist.c index 2144b10e1d0..6f2a4577708 100644 --- a/common/bloblist.c +++ b/common/bloblist.c @@ -476,6 +476,17 @@ int bloblist_init(void) log_debug("Found existing bloblist size %lx at %lx\n", size, addr); } + if (ret) + return log_msg_ret("ini", ret); + gd->flags |= GD_FLG_BLOBLIST_READY; + + return 0; +} - return ret; +int bloblist_maybe_init(void) +{ + if (CONFIG_IS_ENABLED(BLOBLIST) && !(gd->flags & GD_FLG_BLOBLIST_READY)) + return bloblist_init(); + + return 0; } diff --git a/common/board_f.c b/common/board_f.c index 99c2a43c196..d4d7d01f8f6 100644 --- a/common/board_f.c +++ b/common/board_f.c @@ -841,9 +841,7 @@ static const init_fnc_t init_sequence_f[] = { log_init, initf_bootstage, /* uses its own timer, so does not need DM */ event_init, -#ifdef CONFIG_BLOBLIST - bloblist_init, -#endif + bloblist_maybe_init, setup_spl_handoff, #if defined(CONFIG_CONSOLE_RECORD_INIT_F) console_record_init, diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index 937fb12516c..e8c6412e3f8 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -693,6 +693,10 @@ enum gd_flags { * the memory used to holds its tables has been mapped out. */ GD_FLG_DM_DEAD = 0x400000, + /** + * @GD_FLG_BLOBLIST_READY: bloblist is ready for use + */ + GD_FLG_BLOBLIST_READY = 0x800000, }; #endif /* __ASSEMBLY__ */ diff --git a/include/bloblist.h b/include/bloblist.h index 7ea72c6bd46..080cc46a126 100644 --- a/include/bloblist.h +++ b/include/bloblist.h @@ -413,8 +413,26 @@ void bloblist_reloc(void *to, uint to_size, void *from, uint from_size); * standard passage. The size is detected automatically so CONFIG_BLOBLIST_SIZE * can be 0. * + * Sets GD_FLG_BLOBLIST_READY in global_data flags on success + * * Return: 0 if OK, -ve on error */ int bloblist_init(void); +#if CONFIG_IS_ENABLED(BLOBLIST) +/** + * bloblist_maybe_init() - Init the bloblist system if not already done + * + * Calls bloblist_init() if the GD_FLG_BLOBLIST_READY flag is not et + * + * Return: 0 if OK, -ve on error + */ +int bloblist_maybe_init(void); +#else +static inline int bloblist_maybe_init(void) +{ + return 0; +} +#endif /* BLOBLIST */ + #endif /* __BLOBLIST_H */ -- cgit v1.3.1 From 14d9f63dcf88ab4e096496aa15898df1392aef0c Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 26 Sep 2023 08:14:52 -0600 Subject: bloblist: Add missing name Add a missing bloblist name. Signed-off-by: Simon Glass --- common/bloblist.c | 1 + 1 file changed, 1 insertion(+) (limited to 'common') diff --git a/common/bloblist.c b/common/bloblist.c index 6f2a4577708..a22f6c12b0c 100644 --- a/common/bloblist.c +++ b/common/bloblist.c @@ -51,6 +51,7 @@ static struct tag_name { /* BLOBLISTT_PROJECT_AREA */ { BLOBLISTT_U_BOOT_SPL_HANDOFF, "SPL hand-off" }, + { BLOBLISTT_VBE, "VBE" }, { BLOBLISTT_U_BOOT_VIDEO, "SPL video handoff" }, /* BLOBLISTT_VENDOR_AREA */ -- cgit v1.3.1