diff options
author | Heinrich Schuchardt <xypron.glpk@gmx.de> | 2019-05-04 11:47:48 +0200 |
---|---|---|
committer | Heinrich Schuchardt <xypron.glpk@gmx.de> | 2019-05-07 21:10:03 +0200 |
commit | 52cbac9b06bf247dda8ff261b15e3c13f88188db (patch) | |
tree | 8e6cb4e6d687c637209ec86ee297d3d86f6dac24 | |
parent | 44237e272f1eac3b026709e76333a07b2d3a3523 (diff) | |
download | u-boot-52cbac9b06bf247dda8ff261b15e3c13f88188db.tar.gz u-boot-52cbac9b06bf247dda8ff261b15e3c13f88188db.tar.bz2 u-boot-52cbac9b06bf247dda8ff261b15e3c13f88188db.zip |
efi_loader: clean up UEFI sub-system initialization
allow_unaligned(), switch_to_non_secure_mode(), and efi_init_obj_list() are
called in sequence in multiple places.
Move calls to allow_unaligned() and switch_to_non_secure_mode() to
efi_init_obj_list().
Remove unused includes.
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
-rw-r--r-- | cmd/bootefi.c | 27 | ||||
-rw-r--r-- | lib/efi_loader/efi_setup.c | 16 |
2 files changed, 16 insertions, 27 deletions
diff --git a/cmd/bootefi.c b/cmd/bootefi.c index f1d7d8bc66..52116b308c 100644 --- a/cmd/bootefi.c +++ b/cmd/bootefi.c @@ -6,7 +6,6 @@ */ #include <common.h> -#include <bootm.h> #include <charset.h> #include <command.h> #include <dm.h> @@ -17,9 +16,7 @@ #include <linux/libfdt_env.h> #include <mapmem.h> #include <memalign.h> -#include <asm/global_data.h> #include <asm-generic/sections.h> -#include <asm-generic/unaligned.h> #include <linux/linkage.h> DECLARE_GLOBAL_DATA_PTR; @@ -28,15 +25,6 @@ static struct efi_device_path *bootefi_image_path; static struct efi_device_path *bootefi_device_path; /* - * Allow unaligned memory access. - * - * This routine is overridden by architectures providing this feature. - */ -void __weak allow_unaligned(void) -{ -} - -/* * Set the load options of an image from an environment variable. * * @handle: the image handle @@ -338,11 +326,6 @@ static int do_efibootmgr(const char *fdt_opt) efi_handle_t handle; efi_status_t ret; - /* Allow unaligned memory access */ - allow_unaligned(); - - switch_to_non_secure_mode(); - /* Initialize EFI drivers */ ret = efi_init_obj_list(); if (ret != EFI_SUCCESS) { @@ -391,11 +374,6 @@ static int do_bootefi_image(const char *image_opt, const char *fdt_opt) efi_handle_t mem_handle = NULL, handle; efi_status_t ret; - /* Allow unaligned memory access */ - allow_unaligned(); - - switch_to_non_secure_mode(); - /* Initialize EFI drivers */ ret = efi_init_obj_list(); if (ret != EFI_SUCCESS) { @@ -582,11 +560,6 @@ static int do_efi_selftest(const char *fdt_opt) struct efi_loaded_image *loaded_image_info; efi_status_t ret; - /* Allow unaligned memory access */ - allow_unaligned(); - - switch_to_non_secure_mode(); - /* Initialize EFI drivers */ ret = efi_init_obj_list(); if (ret != EFI_SUCCESS) { diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c index 87db51cbb7..8691d686d2 100644 --- a/lib/efi_loader/efi_setup.c +++ b/lib/efi_loader/efi_setup.c @@ -6,12 +6,22 @@ */ #include <common.h> +#include <bootm.h> #include <efi_loader.h> #define OBJ_LIST_NOT_INITIALIZED 1 static efi_status_t efi_obj_list_initialized = OBJ_LIST_NOT_INITIALIZED; +/* + * Allow unaligned memory access. + * + * This routine is overridden by architectures providing this feature. + */ +void __weak allow_unaligned(void) +{ +} + /** * efi_init_platform_lang() - define supported languages * @@ -86,6 +96,12 @@ efi_status_t efi_init_obj_list(void) if (efi_obj_list_initialized != OBJ_LIST_NOT_INITIALIZED) return efi_obj_list_initialized; + /* Allow unaligned memory access */ + allow_unaligned(); + + /* On ARM switch from EL3 or secure mode to EL2 or non-secure mode */ + switch_to_non_secure_mode(); + /* Define supported languages */ ret = efi_init_platform_lang(); if (ret != EFI_SUCCESS) |