bootstash: Do not provide a default address for all

A valid memory location to stash bootstage information at will be
architecture dependent. Move the existing defaults to the main Kconfig
file for this option and set 0x0 as the default only for sandbox.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Tom Rini 2024-07-15 12:42:00 +01:00
parent 6b8df6055a
commit b81e31a1e6
9 changed files with 18 additions and 21 deletions

View file

@ -92,15 +92,13 @@ void board_init_f(ulong dummy)
int board_return_to_bootrom(struct spl_image_info *spl_image,
struct spl_boot_device *bootdev)
{
#ifdef CONFIG_BOOTSTAGE_STASH
int ret;
bootstage_mark_name(BOOTSTAGE_ID_END_TPL, "end tpl");
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
back_to_bootrom(BROM_BOOT_NEXTSTAGE);
return 0;

View file

@ -28,9 +28,6 @@ config PRE_CON_BUF_ADDR
config PRE_CON_BUF_SZ
default 4096
config BOOTSTAGE_STASH_ADDR
default 0xC3000000
if BOOTCOUNT_GENERIC
config SYS_BOOTCOUNT_SINGLEWORD
default y

View file

@ -86,9 +86,6 @@ config PRE_CON_BUF_ADDR
config PRE_CON_BUF_SZ
default 4096
config BOOTSTAGE_STASH_ADDR
default 0xC3000000
if BOOTCOUNT_GENERIC
config SYS_BOOTCOUNT_SINGLEWORD
default y

View file

@ -24,9 +24,6 @@ config PRE_CON_BUF_ADDR
config PRE_CON_BUF_SZ
default 4096
config BOOTSTAGE_STASH_ADDR
default 0x87000000
if DEBUG_UART
config DEBUG_UART_BOARD_INIT

View file

@ -75,8 +75,7 @@ int __weak x86_cleanup_before_linux(void)
ret = mp_park_aps();
if (ret)
return log_msg_ret("park", ret);
bootstage_stash((void *)CONFIG_BOOTSTAGE_STASH_ADDR,
CONFIG_BOOTSTAGE_STASH_SIZE);
bootstage_stash_default();
return 0;
}

View file

@ -1019,13 +1019,17 @@ config BOOTSTAGE_STASH
config BOOTSTAGE_STASH_ADDR
hex "Address to stash boot timing information"
default 0x0
depends on BOOTSTAGE_STASH
default 0xC3000000 if STM32MP13X || STM32MP15X
default 0x87000000 if STM32MP25X
default 0x0 if SANDBOX
help
Provide an address which will not be overwritten by the OS when it
starts, so that it can read this information when ready.
config BOOTSTAGE_STASH_SIZE
hex "Size of boot timing stash region"
depends on BOOTSTAGE_STASH
default 0x1000
help
This should be large enough to hold the bootstage stash. A value of

View file

@ -15,6 +15,7 @@ static int do_bootstage_report(struct cmd_tbl *cmdtp, int flag, int argc,
return 0;
}
#if IS_ENABLED(CONFIG_BOOTSTAGE_STASH)
static int get_base_size(int argc, char *const argv[], ulong *basep,
ulong *sizep)
{
@ -58,11 +59,14 @@ static int do_bootstage_stash(struct cmd_tbl *cmdtp, int flag, int argc,
return 0;
}
#endif
static struct cmd_tbl cmd_bootstage_sub[] = {
U_BOOT_CMD_MKENT(report, 2, 1, do_bootstage_report, "", ""),
#if IS_ENABLED(CONFIG_BOOTSTAGE_STASH)
U_BOOT_CMD_MKENT(stash, 4, 0, do_bootstage_stash, "", ""),
U_BOOT_CMD_MKENT(unstash, 4, 0, do_bootstage_stash, "", ""),
#endif
};
/*
@ -90,6 +94,8 @@ U_BOOT_CMD(bootstage, 4, 1, do_boostage,
"Boot stage command",
" - check boot progress and timing\n"
"report - Print a report\n"
#if IS_ENABLED(CONFIG_BOOTSTAGE_STASH)
"stash [<start> [<size>]] - Stash data into memory\n"
"unstash [<start> [<size>]] - Unstash data from memory"
"unstash [<start> [<size>]] - Unstash data from memory\n"
#endif
);

View file

@ -810,10 +810,7 @@ static int initf_bootstage(void)
if (ret)
return ret;
if (from_spl) {
const void *stash = map_sysmem(CONFIG_BOOTSTAGE_STASH_ADDR,
CONFIG_BOOTSTAGE_STASH_SIZE);
ret = bootstage_unstash(stash, CONFIG_BOOTSTAGE_STASH_SIZE);
ret = bootstage_stash_default();
if (ret && ret != -ENOENT) {
debug("Failed to unstash bootstage: err=%d\n", ret);
return ret;

View file

@ -500,6 +500,7 @@ int bootstage_unstash(const void *base, int size)
return 0;
}
#if IS_ENABLED(CONFIG_BOOTSTAGE_STASH)
int _bootstage_stash_default(void)
{
return bootstage_stash(map_sysmem(CONFIG_BOOTSTAGE_STASH_ADDR, 0),
@ -513,6 +514,7 @@ int _bootstage_unstash_default(void)
return bootstage_unstash(stash, CONFIG_BOOTSTAGE_STASH_SIZE);
}
#endif
int bootstage_get_size(void)
{