mirror of
https://github.com/CTCaer/switch-l4t-atf.git
synced 2024-12-12 12:46:00 +00:00
Merge pull request #1141 from robertovargas-arm/boot_redundancy
Add platform hooks for boot redundancy support
This commit is contained in:
commit
27b2493c6f
@ -34,6 +34,9 @@ void bl2_main(void)
|
||||
auth_mod_init();
|
||||
#endif /* TRUSTED_BOARD_BOOT */
|
||||
|
||||
/* initialize boot source */
|
||||
bl2_plat_preload_setup();
|
||||
|
||||
/* Load the subsequent bootloader images. */
|
||||
next_bl_ep_info = bl2_load_images();
|
||||
|
||||
|
@ -354,7 +354,13 @@ static int load_auth_image_internal(unsigned int image_id,
|
||||
******************************************************************************/
|
||||
int load_auth_image(unsigned int image_id, image_info_t *image_data)
|
||||
{
|
||||
return load_auth_image_internal(image_id, image_data, 0);
|
||||
int err;
|
||||
|
||||
do {
|
||||
err = load_auth_image_internal(image_id, image_data, 0);
|
||||
} while (err != 0 && plat_try_next_boot_source());
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
#else /* LOAD_IMAGE_V2 */
|
||||
@ -553,8 +559,14 @@ int load_auth_image(meminfo_t *mem_layout,
|
||||
image_info_t *image_data,
|
||||
entry_point_info_t *entry_point_info)
|
||||
{
|
||||
return load_auth_image_internal(mem_layout, image_id, image_base,
|
||||
image_data, entry_point_info, 0);
|
||||
int err;
|
||||
|
||||
do {
|
||||
err = load_auth_image_internal(mem_layout, image_id, image_base,
|
||||
image_data, entry_point_info, 0);
|
||||
} while (err != 0 && plat_try_next_boot_source());
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
#endif /* LOAD_IMAGE_V2 */
|
||||
|
@ -1596,6 +1596,34 @@ BL2 is responsible for loading the normal world BL33 image (e.g. UEFI).
|
||||
This function isn't needed if either ``PRELOADED_BL33_BASE`` or ``EL3_PAYLOAD_BASE``
|
||||
build options are used.
|
||||
|
||||
Function : bl2\_plat\_preload\_setup [optional]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
::
|
||||
Argument : void
|
||||
Return : void
|
||||
|
||||
This optional function performs any BL2 platform initialization
|
||||
required before image loading, that is not done later in
|
||||
bl2\_platform\_setup(). Specifically, if support for multiple
|
||||
boot sources is required, it initializes the boot sequence used by
|
||||
plat\_try\_next\_boot\_source().
|
||||
|
||||
Function : plat\_try\_next\_boot\_source() [optional]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
::
|
||||
Argument : void
|
||||
Return : int
|
||||
|
||||
This optional function passes to the next boot source in the redundancy
|
||||
sequence.
|
||||
|
||||
This function moves the current boot redundancy source to the next
|
||||
element in the boot sequence. If there are no more boot sources then it
|
||||
must return 0, otherwise it must return 1. The default implementation
|
||||
of this always returns 0.
|
||||
|
||||
FWU Boot Loader Stage 2 (BL2U)
|
||||
------------------------------
|
||||
|
||||
|
@ -100,6 +100,8 @@ int plat_crash_console_flush(void);
|
||||
void plat_error_handler(int err) __dead2;
|
||||
void plat_panic_handler(void) __dead2;
|
||||
const char *plat_log_get_prefix(unsigned int log_level);
|
||||
void bl2_plat_preload_setup(void);
|
||||
int plat_try_next_boot_source(void);
|
||||
|
||||
/*******************************************************************************
|
||||
* Mandatory BL1 functions
|
||||
|
@ -14,6 +14,8 @@
|
||||
.weak plat_disable_acp
|
||||
.weak platform_mem_init
|
||||
.weak plat_panic_handler
|
||||
.weak bl2_plat_preload_setup
|
||||
.weak plat_try_next_boot_source
|
||||
|
||||
/* -----------------------------------------------------
|
||||
* Placeholder function which should be redefined by
|
||||
@ -79,3 +81,23 @@ endfunc platform_mem_init
|
||||
func plat_panic_handler
|
||||
b plat_panic_handler
|
||||
endfunc plat_panic_handler
|
||||
|
||||
|
||||
/* -----------------------------------------------------
|
||||
* Placeholder function which should be redefined by
|
||||
* each platfrom.
|
||||
* -----------------------------------------------------
|
||||
*/
|
||||
func bl2_plat_preload_setup
|
||||
bx lr
|
||||
endfunc bl2_plat_preload_setup
|
||||
|
||||
/* -----------------------------------------------------
|
||||
* Placeholder function which should be redefined by
|
||||
* each platfrom.
|
||||
* -----------------------------------------------------
|
||||
*/
|
||||
func plat_try_next_boot_source
|
||||
mov r0, #0
|
||||
bx lr
|
||||
endfunc plat_try_next_boot_source
|
||||
|
@ -17,6 +17,8 @@
|
||||
.weak bl1_plat_prepare_exit
|
||||
.weak plat_error_handler
|
||||
.weak plat_panic_handler
|
||||
.weak bl2_plat_preload_setup
|
||||
.weak plat_try_next_boot_source
|
||||
|
||||
#if !ENABLE_PLAT_COMPAT
|
||||
.globl platform_get_core_pos
|
||||
@ -129,3 +131,22 @@ func plat_panic_handler
|
||||
wfi
|
||||
b plat_panic_handler
|
||||
endfunc plat_panic_handler
|
||||
|
||||
/* -----------------------------------------------------
|
||||
* Placeholder function which should be redefined by
|
||||
* each platfrom.
|
||||
* -----------------------------------------------------
|
||||
*/
|
||||
func bl2_plat_preload_setup
|
||||
ret
|
||||
endfunc bl2_plat_preload_setup
|
||||
|
||||
/* -----------------------------------------------------
|
||||
* Placeholder function which should be redefined by
|
||||
* each platfrom.
|
||||
* -----------------------------------------------------
|
||||
*/
|
||||
func plat_try_next_boot_source
|
||||
mov x0, #0
|
||||
ret
|
||||
endfunc plat_try_next_boot_source
|
||||
|
Loading…
Reference in New Issue
Block a user