diff options
author | Tom Rini <trini@konsulko.com> | 2022-05-02 19:02:44 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2022-05-02 19:02:44 -0400 |
commit | edb6982b5800603a67ff3710ef074ff7ac86e5ea (patch) | |
tree | fc34fe0a38d6f3884c60993ce06fb0f58536d60a /arch/sandbox/cpu/spl.c | |
parent | 2406a91734eb4eeeb50fdfaeff65d0b7f464dba9 (diff) | |
parent | a31eff3015afc80429e2734781eaf52e48ab6663 (diff) |
Merge branch '2022-05-02-add-verifying-program-loader'
To quote the author:
U-Boot provides a verified-boot feature based around FIT, but there is
no standard way of implementing it for a board. At present the various
required pieces must be built up separately, to produce a working
implementation. In particular, there is no built-in support for selecting
A/B boot or recovery mode.
This series introduces VPL, a verified program loader phase for U-Boot.
Its purpose is to run the verified-boot process and decide which SPL
binary should be run. It is critical that this decision happens before
SPL runs, since SPL sets up SDRAM and we need to be able to update the
SDRAM-init code in the field.
Adding VPL into the boot flow provides a standard place to implement
verified boot. This series includes the phase itself, some useful Kconfig
options and a sandbox_vpl build for sandbox. No verfied-boot support is
provided in this series.
Most of the patches in this series are fixes and improvements to docs and
various Kconfig conditions for SPL.
Diffstat (limited to 'arch/sandbox/cpu/spl.c')
-rw-r--r-- | arch/sandbox/cpu/spl.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/sandbox/cpu/spl.c b/arch/sandbox/cpu/spl.c index 3f107b8acb..fe5d44d36e 100644 --- a/arch/sandbox/cpu/spl.c +++ b/arch/sandbox/cpu/spl.c @@ -32,13 +32,21 @@ int sandbox_find_next_phase(char *fname, int maxlen, bool use_img) return 0; } -/* SPL / TPL init function */ +/* SPL / TPL / VPL init function */ void board_init_f(ulong flag) { struct sandbox_state *state = state_get_current(); + int ret; gd->arch.ram_buf = state->ram_buf; gd->ram_size = state->ram_size; + + ret = spl_early_init(); + if (ret) { + debug("spl_early_init() failed: %d\n", ret); + hang(); + } + preloader_console_init(); } u32 spl_boot_device(void) @@ -75,8 +83,6 @@ void spl_board_init(void) { struct sandbox_state *state = state_get_current(); - preloader_console_init(); - if (state->run_unittests) { struct unit_test *tests = UNIT_TEST_ALL_START(); const int count = UNIT_TEST_ALL_COUNT(); |