Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
27b2493c
Unverified
Commit
27b2493c
authored
Oct 31, 2017
by
davidcunado-arm
Committed by
GitHub
Oct 31, 2017
Browse files
Merge pull request #1141 from robertovargas-arm/boot_redundancy
Add platform hooks for boot redundancy support
parents
a2ef56af
01f62b6d
Changes
6
Hide whitespace changes
Inline
Side-by-side
bl2/bl2_main.c
View file @
27b2493c
...
...
@@ -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
();
...
...
common/bl_common.c
View file @
27b2493c
...
...
@@ -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 */
...
...
docs/porting-guide.rst
View file @
27b2493c
...
...
@@ -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)
------------------------------
...
...
include/plat/common/platform.h
View file @
27b2493c
...
...
@@ -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
...
...
plat/common/aarch32/platform_helpers.S
View file @
27b2493c
...
...
@@ -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
plat/common/aarch64/platform_helpers.S
View file @
27b2493c
...
...
@@ -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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment