Skip to content

Commit

Permalink
bootstash: Do not provide a default address for all
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
trini committed Jul 19, 2024
1 parent 6b8df60 commit b81e31a
Show file tree
Hide file tree
Showing 9 changed files with 18 additions and 21 deletions.
6 changes: 2 additions & 4 deletions arch/arm/mach-rockchip/tpl.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
3 changes: 0 additions & 3 deletions arch/arm/mach-stm32mp/Kconfig.13x
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 0 additions & 3 deletions arch/arm/mach-stm32mp/Kconfig.15x
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 0 additions & 3 deletions arch/arm/mach-stm32mp/Kconfig.25x
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 1 addition & 2 deletions arch/x86/cpu/cpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
6 changes: 5 additions & 1 deletion boot/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 7 additions & 1 deletion cmd/bootstage.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down Expand Up @@ -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
};

/*
Expand Down Expand Up @@ -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
);
5 changes: 1 addition & 4 deletions common/board_f.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 2 additions & 0 deletions common/bootstage.c
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand All @@ -513,6 +514,7 @@ int _bootstage_unstash_default(void)

return bootstage_unstash(stash, CONFIG_BOOTSTAGE_STASH_SIZE);
}
#endif

int bootstage_get_size(void)
{
Expand Down

0 comments on commit b81e31a

Please sign in to comment.