[PATCH 13/14] rockchip: Enable bootstage on rockpro64

Pali Rohár pali at kernel.org
Thu Dec 22 00:12:39 CET 2022


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 <sjg at 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
> 


More information about the U-Boot mailing list