On Wednesday 21 December 2022 16:08:27 Simon Glass wrote: > This board is useful for benchmarking overall U-Boot performance. Enable > the bootstage feature so we get a report. > > Since this returns to the boot rom before finishing executing > board_init_r() in SPL, add a few bootstage calls so that we can collect > timing from TPL. > > For the stash region, use a portion of SRAM, 64KB below the stack top. > This allows the TPL image to be up to nearly 120KB (it is typically about > 64KB). SPL normally runs from SDRAM at 0, so can use the same stash > region. > > Signed-off-by: Simon Glass <s...@chromium.org> > --- > > arch/arm/mach-rockchip/tpl.c | 18 +++++++++++++++--- > common/spl/spl.c | 2 +- > configs/rockpro64-rk3399_defconfig | 8 ++++++++ > 3 files changed, 24 insertions(+), 4 deletions(-) > > diff --git a/arch/arm/mach-rockchip/tpl.c b/arch/arm/mach-rockchip/tpl.c > index ed46a9ad286..2b7f852a28f 100644 > --- a/arch/arm/mach-rockchip/tpl.c > +++ b/arch/arm/mach-rockchip/tpl.c > @@ -4,6 +4,7 @@ > */ > > #include <common.h> > +#include <bootstage.h> > #include <debug_uart.h> > #include <dm.h> > #include <hang.h> > @@ -70,15 +71,17 @@ void board_init_f(ulong dummy) > U_BOOT_TIME ")\n"); > #endif > #endif > + /* Init secure timer */ > + rockchip_stimer_init(); > + > + puts("u_boot_first_phase(): "); > + printhex8(u_boot_first_phase()); > ret = spl_early_init(); > if (ret) { > debug("spl_early_init() failed: %d\n", ret); > hang(); > } > > - /* Init secure timer */ > - rockchip_stimer_init(); > - > /* Init ARM arch timer */ > if (IS_ENABLED(CONFIG_SYS_ARCH_TIMER)) > timer_init(); > @@ -93,6 +96,15 @@ 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); > + if (ret) > + debug("Failed to stash bootstage: err=%d\n", ret); > +#endif > back_to_bootrom(BROM_BOOT_NEXTSTAGE); > > return 0; > diff --git a/common/spl/spl.c b/common/spl/spl.c > index 1d2e8fda728..71cded774b8 100644 > --- a/common/spl/spl.c > +++ b/common/spl/spl.c > @@ -910,7 +910,7 @@ void preloader_console_init(void) > gd->have_console = 1; > > #if CONFIG_IS_ENABLED(BANNER_PRINT) > - puts("\nU-Boot " SPL_TPL_NAME " " PLAIN_VERSION " (" U_BOOT_DATE " - " > + puts("\nxU-Boot " SPL_TPL_NAME " " PLAIN_VERSION " (" U_BOOT_DATE " - "
Why 'x'? > U_BOOT_TIME " " U_BOOT_TZ ")\n"); > #endif > #ifdef CONFIG_SPL_DISPLAY_PRINT > diff --git a/configs/rockpro64-rk3399_defconfig > b/configs/rockpro64-rk3399_defconfig > index 5b8d678f6bb..2f1ae156bd4 100644 > --- a/configs/rockpro64-rk3399_defconfig > +++ b/configs/rockpro64-rk3399_defconfig > @@ -9,6 +9,7 @@ CONFIG_ENV_OFFSET=0x3F8000 > CONFIG_DEFAULT_DEVICE_TREE="rk3399-rockpro64" > CONFIG_ROCKCHIP_RK3399=y > CONFIG_TARGET_ROCKPRO64_RK3399=y > +CONFIG_BOOTSTAGE_STASH_ADDR=0xff8e0000 > CONFIG_DEBUG_UART_BASE=0xFF1A0000 > CONFIG_DEBUG_UART_CLOCK=24000000 > CONFIG_SPL_SPI_FLASH_SUPPORT=y > @@ -17,6 +18,12 @@ CONFIG_SYS_LOAD_ADDR=0x800800 > CONFIG_DEBUG_UART=y > CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y > CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x300000 > +CONFIG_BOOTSTAGE=y > +CONFIG_SPL_BOOTSTAGE=y > +CONFIG_TPL_BOOTSTAGE=y > +CONFIG_BOOTSTAGE_REPORT=y > +CONFIG_SPL_BOOTSTAGE_RECORD_COUNT=10 > +CONFIG_BOOTSTAGE_STASH=y > CONFIG_USE_PREBOOT=y > CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rockpro64.dtb" > CONFIG_DISPLAY_BOARDINFO_LATE=y > @@ -40,6 +47,7 @@ CONFIG_CMD_PCI=y > CONFIG_CMD_USB=y > # CONFIG_CMD_SETEXPR is not set > CONFIG_CMD_TIME=y > +CONFIG_CMD_BOOTSTAGE=y > CONFIG_SPL_OF_CONTROL=y > CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names > interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" > CONFIG_ENV_IS_IN_SPI_FLASH=y > -- > 2.39.0.314.g84b9a713c41-goog >