linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: dyoung@redhat.com (Dave Young)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 6/7] x86/efi: clear EFI_RUNTIME_SERVICES bit in case failures while entering virtual mode
Date: Thu, 14 Aug 2014 17:15:31 +0800	[thread overview]
Message-ID: <1408007731-15081-6-git-send-email-dyoung@redhat.com> (raw)
In-Reply-To: <1408007731-15081-1-git-send-email-dyoung@redhat.com>

If enter virtual mode failed due to some reason other than the efi call
the EFI_RUNTIME_SERVICES bit in efi.flags should be cleared thus users
of efi runtime services can check the bit and handle the case instead of
assume efi runtime is ok.

Per Matt, if efi call SetVirtualAddressMap fails we will be not sure it's safe
to make any assumptions about the state of the system. so kernel panics instead
of clears EFI_RUNTIME_SERVICES bit.

Signed-off-by: Dave Young <dyoung@redhat.com>
---
 arch/x86/platform/efi/efi.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index 00f4cc5..d3096c0 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -724,6 +724,7 @@ static void __init kexec_enter_virtual_mode(void)
 	 */
 	if (!efi_is_native()) {
 		efi_unmap_memmap();
+		clear_bit(EFI_RUNTIME_SERVICES, &efi.flags);
 		return;
 	}
 
@@ -797,6 +798,7 @@ static void __init __efi_enter_virtual_mode(void)
 	new_memmap = efi_map_regions(&count, &pg_shift);
 	if (!new_memmap) {
 		pr_err("Error reallocating memory, EFI runtime non-functional!\n");
+		clear_bit(EFI_RUNTIME_SERVICES, &efi.flags);
 		return;
 	}
 
@@ -804,8 +806,10 @@ static void __init __efi_enter_virtual_mode(void)
 
 	BUG_ON(!efi.systab);
 
-	if (efi_setup_page_tables(__pa(new_memmap), 1 << pg_shift))
+	if (efi_setup_page_tables(__pa(new_memmap), 1 << pg_shift)) {
+		clear_bit(EFI_RUNTIME_SERVICES, &efi.flags);
 		return;
+	}
 
 	efi_sync_low_kernel_mappings();
 	efi_dump_pagetable();
-- 
1.8.3.1

  parent reply	other threads:[~2014-08-14  9:15 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-14  9:15 [PATCH 1/7] efi: move noefi early param code out of x86 arch code Dave Young
2014-08-14  9:15 ` [PATCH 2/7] Add a generic cmdline parse function parse_option_str Dave Young
2014-08-14  9:15 ` [PATCH 3/7] efi: add kernel param efi=noruntime Dave Young
2014-08-14  9:15 ` [PATCH 4/7] arm64/efi: uefi_init error handling fix Dave Young
2014-08-14 13:55   ` Mark Salter
2014-08-15 15:05   ` Will Deacon
2014-08-14  9:15 ` [PATCH 5/7] arm64/efi: do not enter virtual mode in case booting with efi=noruntime or noefi Dave Young
2014-08-15 15:09   ` Will Deacon
2014-08-18  1:24     ` Dave Young
2014-08-18  1:30     ` [PATCH 5/7 update] " Dave Young
2014-08-22 15:10       ` Will Deacon
2014-08-22 15:47         ` Matt Fleming
2014-08-22 16:25           ` Will Deacon
2014-08-14  9:15 ` Dave Young [this message]
2014-08-14  9:19 ` [PATCH 7/7] efi_rtc: probe function error out in case no efi runtime enabled Dave Young
2014-09-22 16:33   ` Mark Salter
2014-09-23  7:24     ` Dave Young
2014-09-28 16:41       ` Matt Fleming
2014-09-25 21:18     ` Matt Fleming
2014-09-25 21:38       ` Mark Salter
2014-10-03 12:11         ` Matt Fleming
2014-08-14  9:26 ` [PATCH 1/7] efi: move noefi early param code out of x86 arch code Dave Young
2014-08-25 10:24   ` Matt Fleming

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1408007731-15081-6-git-send-email-dyoung@redhat.com \
    --to=dyoung@redhat.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).