]> git.baikalelectronics.ru Git - arm-tf.git/commitdiff
bl2: add bl2_plat_handle_pre_image_load()
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Thu, 1 Feb 2018 07:45:51 +0000 (16:45 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Thu, 1 Feb 2018 15:18:54 +0000 (00:18 +0900)
There are cases where we need to manipulate image information before
the load.  For example, for decompressing data, we cannot load the
compressed images to their final destination.  Instead, we need to
load them to the temporary buffer for the decompressor.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
bl2/bl2_image_load_v2.c
docs/porting-guide.rst
include/plat/common/platform.h
plat/common/platform_helpers_default.c

index 6517703d87893b52e1447e3b3d12fe36e6892ef2..ebbad45e04a36c08b918e649cd11b5d05a1bc385 100644 (file)
@@ -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 @@ entry_point_info_t *bl2_load_images(void)
                        }
                }
 
+               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,
index 7683ded0e6e91cbb69dc4891a38a39ed8a9c18a5..57da340a7d99a7a9bc48d0620a4ace9774a8ea51 100644 (file)
@@ -1424,10 +1424,22 @@ The purpose of this function is to return a pointer to a ``meminfo`` structure
 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]
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+::
+
+    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 before
+loading each image, when LOAD\_IMAGE\_V2 is enabled.
+
+Function : bl2\_plat\_handle\_post\_image\_load() [optional]
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 ::
 
@@ -1435,9 +1447,8 @@ Function : bl2\_plat\_handle\_post\_image\_load() [mandatory]
     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 after
+loading each image, when LOAD\_IMAGE\_V2 is enabled.
 
 Following functions are required only when LOAD\_IMAGE\_V2 is disabled.
 
index 096010589a43d16d8d7dcf93955d675d12a1ffea..69a2957afd570c864da3e4397864973a42cc7307 100644 (file)
@@ -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 @@ struct meminfo *bl2_plat_sec_mem_layout(void);
  * 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 */
index 75c5199d7e7c17375d2ac7e611e1d3356b942065..597a585064b028a3ba8537709a0132dd8c19726d 100644 (file)
@@ -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 @@ void bl2_plat_preload_setup(void)
 {
 }
 
+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;