From: Mark Kettenis Date: Fri, 15 Jun 2018 21:47:13 +0000 (+0200) Subject: efi_loader: ARM: don't attempt to enter non-secure mode twice X-Git-Url: http://git.dujemihanovic.xyz/img/static/gitweb.css?a=commitdiff_plain;h=f17f2001ebe1e8a78e0ef0f99e63134f91ee1354;p=u-boot.git efi_loader: ARM: don't attempt to enter non-secure mode twice Multiple EFI binaries may be executed in sequence. So if we already are in non-secure mode after running the first one we should skip the switching code since it no longer works once we're non-secure. Signed-off-by: Mark Kettenis Signed-off-by: Alexander Graf --- diff --git a/cmd/bootefi.c b/cmd/bootefi.c index c8c2564512..bbfea919da 100644 --- a/cmd/bootefi.c +++ b/cmd/bootefi.c @@ -200,6 +200,8 @@ static efi_status_t efi_run_in_el2(EFIAPI efi_status_t (*entry)( #endif #ifdef CONFIG_ARMV7_NONSEC +static bool is_nonsec; + static efi_status_t efi_run_in_hyp(EFIAPI efi_status_t (*entry)( efi_handle_t image_handle, struct efi_system_table *st), efi_handle_t image_handle, struct efi_system_table *st) @@ -207,6 +209,8 @@ static efi_status_t efi_run_in_hyp(EFIAPI efi_status_t (*entry)( /* Enable caches again */ dcache_enable(); + is_nonsec = true; + return efi_do_enter(image_handle, st, entry); } #endif @@ -368,7 +372,7 @@ static efi_status_t do_bootefi_exec(void *efi, #endif #ifdef CONFIG_ARMV7_NONSEC - if (armv7_boot_nonsec()) { + if (armv7_boot_nonsec() && !is_nonsec) { dcache_disable(); /* flush cache before switch to HYP */ armv7_init_nonsec();