[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