From b6d9aa6aafc0ae2f551de301e1f371c4814cef68 Mon Sep 17 00:00:00 2001 From: Vishnu Singh Date: Tue, 16 Sep 2025 12:55:15 +0530 Subject: [PATCH] bootstage: stash boot records to reserved mem before kernel handoff MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit U-Boot now stashes its bootstage buffer into a reserved memory region whenever CONFIG_BOOTSTAGE_STASH is enabled, just before exiting to the kernel. This allows a post boot parser to read a unified timeline (SPL→U-Boot→Kernel→MCU/DSP) directly from DDR, enabling standardized and repeatable boot-time profiling across releases and SoCs. Change summary: Call bootstage_stash_default() in announce_and_cleanup() when CONFIG_BOOTSTAGE_STASH is set. Reference boot-time parser utility: https://github.com/v-singh1/boot-time-parser Sample boot time report: +--------------------------------------------------------------------+ am62xx-evm Boot Time Report +--------------------------------------------------------------------+ Device Power On : 0 ms SPL Time : 843 ms U-Boot Time : 2173 ms Kernel handoff time : 462 ms Kernel Time : 2522 ms Total Boot Time : 6000 ms +--------------------------------------------------------------------+ +--------------------------------------------------------------------+ Bootloader and Kernel Boot Records +--------------------------------------------------------------------+ BOOTSTAGE_AWAKE = 0 ms (+ 0 ms) BOOTSTAGE_START_UBOOT_F = 843 ms (+ 0 ms) BOOTSTAGE_ACCUM_DM_F = 843 ms (+ 0 ms) BOOTSTAGE_START_UBOOT_R = 1951 ms (+1108 ms) BOOTSTAGE_ACCUM_DM_R = 1951 ms (+ 0 ms) BOOTSTAGE_NET_ETH_START = 2032 ms (+ 81 ms) BOOTSTAGE_NET_ETH_INIT = 2053 ms (+ 21 ms) BOOTSTAGE_MAIN_LOOP = 2055 ms (+ 2 ms) BOOTSTAGE_START_MCU = 2661 ms (+606 ms) BOOTSTAGE_BOOTM_START = 2959 ms (+298 ms) BOOTSTAGE_RUN_OS = 3016 ms (+ 57 ms) BOOTSTAGE_BOOTM_HANDOFF = 3016 ms (+ 0 ms) BOOTSTAGE_KERNEL_START = 3478 ms (+462 ms) BOOTSTAGE_KERNEL_END = 6000 ms (+2522 ms) +--------------------------------------------------------------------+ +--------------------------------------------------------------------+ MCU Boot Records +--------------------------------------------------------------------+ MCU_AWAKE = 2661 ms (+ 0 ms) BOARD_PERIPHERALS_INIT = 2661 ms (+ 0 ms) MAIN_TASK_CREATE = 2661 ms (+ 0 ms) FIRST_TASK = 2662 ms (+ 1 ms) DRIVERS_OPEN = 2662 ms (+ 0 ms) BOARD_DRIVERS_OPEN = 2662 ms (+ 0 ms) IPC_SYNC_FOR_LINUX = 6636 ms (+3974 ms) IPC_REGISTER_CLIENT = 6636 ms (+ 0 ms) IPC_SUSPEND_TASK = 6636 ms (+ 0 ms) IPC_RECEIVE_TASK = 6636 ms (+ 0 ms) IPC_SYNC_ALL = 6787 ms (+151 ms) +--------------------------------------------------------------------+ Signed-off-by: Vishnu Singh --- arch/arm/lib/bootm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c index ca4cec61f22..b874aa252c6 100644 --- a/arch/arm/lib/bootm.c +++ b/arch/arm/lib/bootm.c @@ -57,6 +57,7 @@ static void announce_and_cleanup(int fake) #ifdef CONFIG_BOOTSTAGE_FDT bootstage_fdt_add_report(); #endif + bootstage_stash_default(); #ifdef CONFIG_BOOTSTAGE_REPORT bootstage_report(); #endif -- 2.47.3