Merge pull request #1182 from soby-mathew/sm/opt_tbbr_flush
authordavidcunado-arm <david.cunado@arm.com>
Sat, 9 Dec 2017 15:16:00 +0000 (15:16 +0000)
committerGitHub <noreply@github.com>
Sat, 9 Dec 2017 15:16:00 +0000 (15:16 +0000)
Unify cache flush code path after image load

common/bl_common.c
include/common/bl_common.h

index e4473ed309c677972d4ff4b265d2860b2317cb08..b0d1bfa7572a22a7b4f7846a42b2c11fb0910be5 100644 (file)
@@ -200,14 +200,14 @@ size_t image_size(unsigned int image_id)
 #if LOAD_IMAGE_V2
 
 /*******************************************************************************
- * Generic function to load an image at a specific address given
+ * Internal function to load an image at a specific address given
  * an image ID and extents of free memory.
  *
  * If the load is successful then the image information is updated.
  *
  * Returns 0 on success, a negative error code otherwise.
  ******************************************************************************/
-int load_image(unsigned int image_id, image_info_t *image_data)
+static int load_image(unsigned int image_id, image_info_t *image_data)
 {
        uintptr_t dev_handle;
        uintptr_t image_handle;
@@ -266,17 +266,6 @@ int load_image(unsigned int image_id, image_info_t *image_data)
                goto exit;
        }
 
-#if !TRUSTED_BOARD_BOOT
-       /*
-        * File has been successfully loaded.
-        * Flush the image to main memory so that it can be executed later by
-        * any CPU, regardless of cache and MMU state.
-        * When TBB is enabled the image is flushed later, after image
-        * authentication.
-        */
-       flush_dcache_range(image_base, image_size);
-#endif /* TRUSTED_BOARD_BOOT */
-
        INFO("Image id=%u loaded: %p - %p\n", image_id, (void *) image_base,
             (void *) (image_base + image_size));
 
@@ -329,18 +318,19 @@ static int load_auth_image_internal(unsigned int image_id,
                                   image_data->image_size);
                return -EAUTH;
        }
+#endif /* TRUSTED_BOARD_BOOT */
 
        /*
-        * File has been successfully loaded and authenticated.
         * Flush the image to main memory so that it can be executed later by
-        * any CPU, regardless of cache and MMU state.
-        * Do it only for child images, not for the parents (certificates).
+        * any CPU, regardless of cache and MMU state. If TBB is enabled, then
+        * the file has been successfully loaded and authenticated and flush
+        * only for child images, not for the parents (certificates).
         */
        if (!is_parent_image) {
                flush_dcache_range(image_data->image_base,
                                   image_data->image_size);
        }
-#endif /* TRUSTED_BOARD_BOOT */
+
 
        return 0;
 }
index 15ffc578c1a1fcc9dc21439a52049f2b2eb27dc4..8915ba069e8fd0c395c26463263e61962b177b79 100644 (file)
@@ -205,7 +205,6 @@ int is_mem_free(uintptr_t free_base, size_t free_size,
 
 #if LOAD_IMAGE_V2
 
-int load_image(unsigned int image_id, image_info_t *image_data);
 int load_auth_image(unsigned int image_id, image_info_t *image_data);
 
 #else