mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-08 19:11:53 +00:00
Introduce Verifying Program Loader (VPL)
Add support for VPL, a new phase of U-Boot. This runs after TPL. It is responsible for selecting which SPL binary to run, based on a verified-boot process. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
d3eba95a7e
commit
f86ca5ad8f
13 changed files with 131 additions and 19 deletions
|
@ -62,6 +62,7 @@ static inline bool u_boot_first_phase(void)
|
|||
enum u_boot_phase {
|
||||
PHASE_NONE, /* Invalid phase, signifying before U-Boot */
|
||||
PHASE_TPL, /* Running in TPL */
|
||||
PHASE_VPL, /* Running in VPL */
|
||||
PHASE_SPL, /* Running in SPL */
|
||||
PHASE_BOARD_F, /* Running in U-Boot before relocation */
|
||||
PHASE_BOARD_R, /* Running in U-Boot after relocation */
|
||||
|
@ -114,7 +115,9 @@ static inline enum u_boot_phase spl_phase(void)
|
|||
{
|
||||
#ifdef CONFIG_TPL_BUILD
|
||||
return PHASE_TPL;
|
||||
#elif CONFIG_SPL_BUILD
|
||||
#elif defined(CONFIG_VPL_BUILD)
|
||||
return PHASE_VPL;
|
||||
#elif defined(CONFIG_SPL_BUILD)
|
||||
return PHASE_SPL;
|
||||
#else
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
@ -136,10 +139,15 @@ static inline enum u_boot_phase spl_prev_phase(void)
|
|||
{
|
||||
#ifdef CONFIG_TPL_BUILD
|
||||
return PHASE_NONE;
|
||||
#elif defined(CONFIG_VPL_BUILD)
|
||||
return PHASE_TPL; /* VPL requires TPL */
|
||||
#elif defined(CONFIG_SPL_BUILD)
|
||||
return IS_ENABLED(CONFIG_TPL) ? PHASE_TPL : PHASE_NONE;
|
||||
return IS_ENABLED(CONFIG_VPL) ? PHASE_VPL :
|
||||
IS_ENABLED(CONFIG_TPL) ? PHASE_TPL :
|
||||
PHASE_NONE;
|
||||
#else
|
||||
return IS_ENABLED(CONFIG_SPL) ? PHASE_SPL : PHASE_NONE;
|
||||
return IS_ENABLED(CONFIG_SPL) ? PHASE_SPL :
|
||||
PHASE_NONE;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -152,6 +160,8 @@ static inline enum u_boot_phase spl_prev_phase(void)
|
|||
static inline enum u_boot_phase spl_next_phase(void)
|
||||
{
|
||||
#ifdef CONFIG_TPL_BUILD
|
||||
return IS_ENABLED(CONFIG_VPL) ? PHASE_VPL : PHASE_SPL;
|
||||
#elif defined(CONFIG_VPL_BUILD)
|
||||
return PHASE_SPL;
|
||||
#else
|
||||
return PHASE_BOARD_F;
|
||||
|
@ -168,6 +178,8 @@ static inline const char *spl_phase_name(enum u_boot_phase phase)
|
|||
switch (phase) {
|
||||
case PHASE_TPL:
|
||||
return "TPL";
|
||||
case PHASE_VPL:
|
||||
return "VPL";
|
||||
case PHASE_SPL:
|
||||
return "SPL";
|
||||
case PHASE_BOARD_F:
|
||||
|
@ -189,6 +201,8 @@ static inline const char *spl_phase_prefix(enum u_boot_phase phase)
|
|||
switch (phase) {
|
||||
case PHASE_TPL:
|
||||
return "tpl";
|
||||
case PHASE_VPL:
|
||||
return "vpl";
|
||||
case PHASE_SPL:
|
||||
return "spl";
|
||||
case PHASE_BOARD_F:
|
||||
|
@ -203,6 +217,8 @@ static inline const char *spl_phase_prefix(enum u_boot_phase phase)
|
|||
#ifdef CONFIG_SPL_BUILD
|
||||
# ifdef CONFIG_TPL_BUILD
|
||||
# define SPL_TPL_NAME "TPL"
|
||||
# elif defined(CONFIG_VPL_BUILD)
|
||||
# define SPL_TPL_NAME "VPL"
|
||||
# else
|
||||
# define SPL_TPL_NAME "SPL"
|
||||
# endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue