diff --git a/bl2/bl2_image_load_v2.c b/bl2/bl2_image_load_v2.c index 6517703..ebbad45 100644 --- a/bl2/bl2_image_load_v2.c +++ b/bl2/bl2_image_load_v2.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2016-2018, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -54,6 +54,12 @@ } } + err = bl2_plat_handle_pre_image_load(bl2_node_info->image_id); + if (err) { + ERROR("BL2: Failure in pre image load handling (%i)\n", err); + plat_error_handler(err); + } + if (!(bl2_node_info->image_info->h.attr & IMAGE_ATTRIB_SKIP_LOADING)) { INFO("BL2: Loading image id %d\n", bl2_node_info->image_id); err = load_auth_image(bl2_node_info->image_id, diff --git a/docs/porting-guide.rst b/docs/porting-guide.rst index 7683ded..57da340 100644 --- a/docs/porting-guide.rst +++ b/docs/porting-guide.rst @@ -1424,10 +1424,10 @@ populated with the extents of secure RAM available for BL2 to use. See ``bl2_early_platform_setup()`` above. -Following function is required only when LOAD\_IMAGE\_V2 is enabled. +Following functions are optionally used only when LOAD\_IMAGE\_V2 is enabled. -Function : bl2\_plat\_handle\_post\_image\_load() [mandatory] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Function : bl2\_plat\_handle\_pre\_image\_load() [optional] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :: @@ -1435,9 +1435,20 @@ Return : int This function can be used by the platforms to update/use image information -for given ``image_id``. This function is currently invoked in BL2 to handle -BL image specific information based on the ``image_id`` passed, when -LOAD\_IMAGE\_V2 is enabled. +for given ``image_id``. This function is currently invoked in BL2 before +loading each image, when LOAD\_IMAGE\_V2 is enabled. + +Function : bl2\_plat\_handle\_post\_image\_load() [optional] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +:: + + Argument : unsigned int + Return : int + +This function can be used by the platforms to update/use image information +for given ``image_id``. This function is currently invoked in BL2 after +loading each image, when LOAD\_IMAGE\_V2 is enabled. Following functions are required only when LOAD\_IMAGE\_V2 is disabled. diff --git a/include/plat/common/platform.h b/include/plat/common/platform.h index 0960105..69a2957 100644 --- a/include/plat/common/platform.h +++ b/include/plat/common/platform.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -169,6 +169,7 @@ * This function can be used by the platforms to update/use image * information for given `image_id`. */ +int bl2_plat_handle_pre_image_load(unsigned int image_id); int bl2_plat_handle_post_image_load(unsigned int image_id); #else /* LOAD_IMAGE_V2 */ diff --git a/plat/common/platform_helpers_default.c b/plat/common/platform_helpers_default.c index 75c5199..597a585 100644 --- a/plat/common/platform_helpers_default.c +++ b/plat/common/platform_helpers_default.c @@ -13,6 +13,8 @@ #pragma weak plat_error_handler #pragma weak bl2_plat_preload_setup +#pragma weak bl2_plat_handle_pre_image_load +#pragma weak bl2_plat_handle_post_image_load #pragma weak plat_try_next_boot_source void __dead2 plat_error_handler(int err) @@ -25,6 +27,16 @@ { } +int bl2_plat_handle_pre_image_load(unsigned int image_id) +{ + return 0; +} + +int bl2_plat_handle_post_image_load(unsigned int image_id) +{ + return 0; +} + int plat_try_next_boot_source(void) { return 0;