bootm: Create bootm_final() for pre-boot cleanup

There are various functions which announce that booting is imminent and
do related preparation. Most of these are arch-specific.

In practice, most archs do a similar thing. It would be better to
have a common function, with perhaps some events for things that are
really arch- and board-specific.

Create a new bootm_final() function with the common pre-boot steps:
printing the "Starting kernel" message, recording bootstage data,
optionally writing bootstage to the FDT and printing a report, and
removing active devices.

Be careful to avoid using BIT() macros which are not available with host
tools.

Signed-off-by: Simon Glass <simon.glass@canonical.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Simon Glass
2026-03-05 19:36:13 -07:00
committed by Tom Rini
parent 5cc969caf0
commit 1ec3ee670d
2 changed files with 32 additions and 0 deletions

View File

@@ -7,6 +7,7 @@
#ifndef USE_HOSTCC
#include <bootm.h>
#include <bootstage.h>
#include <dm/root.h>
#include <cli.h>
#include <command.h>
#include <cpu_func.h>
@@ -1194,6 +1195,27 @@ void __weak switch_to_non_secure_mode(void)
{
}
void bootm_final(int flag)
{
printf("\nStarting kernel ...%s\n\n",
(flag & BOOTM_STATE_OS_FAKE_GO) ?
" (fake run for tracing)" : "");
bootstage_mark_name(BOOTSTAGE_ID_BOOTM_HANDOFF, "start_kernel");
if (IS_ENABLED(CONFIG_BOOTSTAGE_FDT) && IS_ENABLED(CONFIG_CMD_FDT))
bootstage_fdt_add_report();
if (IS_ENABLED(CONFIG_BOOTSTAGE_REPORT))
bootstage_report();
/*
* Call remove function of all devices with a removal flag set.
* This may be useful for last-stage operations, like cancelling
* of DMA operation or releasing device internal buffers.
*/
dm_remove_devices_active();
}
#else /* USE_HOSTCC */
#if defined(CONFIG_FIT_SIGNATURE)