Commit a8147dba authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Ingo Molnar

efi/x86: Rename efi_is_native() to efi_is_mixed()

The ARM architecture does not permit combining 32-bit and 64-bit code
at the same privilege level, and so EFI mixed mode is strictly a x86
concept.

In preparation of turning the 32/64 bit distinction in shared stub
code to a native vs mixed one, refactor x86's current use of the
helper function efi_is_native() into efi_is_mixed().
Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
Cc: Arvind Sankar <nivedita@alum.mit.edu>
Cc: Borislav Petkov <bp@alien8.de>
Cc: James Morse <james.morse@arm.com>
Cc: Matt Fleming <matt@codeblueprint.co.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-efi@vger.kernel.org
Link: https://lkml.kernel.org/r/20191224151025.32482-7-ardb@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 58ec655a
...@@ -153,17 +153,19 @@ extern u64 efi_setup; ...@@ -153,17 +153,19 @@ extern u64 efi_setup;
#ifdef CONFIG_EFI #ifdef CONFIG_EFI
static inline bool efi_is_native(void) static inline bool efi_is_mixed(void)
{ {
return IS_ENABLED(CONFIG_X86_64) == efi_enabled(EFI_64BIT); if (!IS_ENABLED(CONFIG_EFI_MIXED))
return false;
return IS_ENABLED(CONFIG_X86_64) && !efi_enabled(EFI_64BIT);
} }
static inline bool efi_runtime_supported(void) static inline bool efi_runtime_supported(void)
{ {
if (efi_is_native()) if (!efi_is_mixed())
return true; return true;
if (IS_ENABLED(CONFIG_EFI_MIXED) && !efi_enabled(EFI_OLD_MEMMAP)) if (!efi_enabled(EFI_OLD_MEMMAP))
return true; return true;
return false; return false;
......
...@@ -828,7 +828,7 @@ static bool should_map_region(efi_memory_desc_t *md) ...@@ -828,7 +828,7 @@ static bool should_map_region(efi_memory_desc_t *md)
* Map all of RAM so that we can access arguments in the 1:1 * Map all of RAM so that we can access arguments in the 1:1
* mapping when making EFI runtime calls. * mapping when making EFI runtime calls.
*/ */
if (IS_ENABLED(CONFIG_EFI_MIXED) && !efi_is_native()) { if (efi_is_mixed()) {
if (md->type == EFI_CONVENTIONAL_MEMORY || if (md->type == EFI_CONVENTIONAL_MEMORY ||
md->type == EFI_LOADER_DATA || md->type == EFI_LOADER_DATA ||
md->type == EFI_LOADER_CODE) md->type == EFI_LOADER_CODE)
...@@ -903,7 +903,7 @@ static void __init kexec_enter_virtual_mode(void) ...@@ -903,7 +903,7 @@ static void __init kexec_enter_virtual_mode(void)
* kexec kernel because in the initial boot something else might * kexec kernel because in the initial boot something else might
* have been mapped at these virtual addresses. * have been mapped at these virtual addresses.
*/ */
if (!efi_is_native() || efi_enabled(EFI_OLD_MEMMAP)) { if (efi_is_mixed() || efi_enabled(EFI_OLD_MEMMAP)) {
efi_memmap_unmap(); efi_memmap_unmap();
clear_bit(EFI_RUNTIME_SERVICES, &efi.flags); clear_bit(EFI_RUNTIME_SERVICES, &efi.flags);
return; return;
...@@ -1040,7 +1040,7 @@ static void __init __efi_enter_virtual_mode(void) ...@@ -1040,7 +1040,7 @@ static void __init __efi_enter_virtual_mode(void)
efi_sync_low_kernel_mappings(); efi_sync_low_kernel_mappings();
if (efi_is_native()) { if (!efi_is_mixed()) {
status = phys_efi_set_virtual_address_map( status = phys_efi_set_virtual_address_map(
efi.memmap.desc_size * count, efi.memmap.desc_size * count,
efi.memmap.desc_size, efi.memmap.desc_size,
...@@ -1071,7 +1071,7 @@ static void __init __efi_enter_virtual_mode(void) ...@@ -1071,7 +1071,7 @@ static void __init __efi_enter_virtual_mode(void)
*/ */
efi.runtime_version = efi_systab.hdr.revision; efi.runtime_version = efi_systab.hdr.revision;
if (efi_is_native()) if (!efi_is_mixed())
efi_native_runtime_setup(); efi_native_runtime_setup();
else else
efi_thunk_runtime_setup(); efi_thunk_runtime_setup();
......
...@@ -388,7 +388,7 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages) ...@@ -388,7 +388,7 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
* text and allocate a new stack because we can't rely on the * text and allocate a new stack because we can't rely on the
* stack pointer being < 4GB. * stack pointer being < 4GB.
*/ */
if (!IS_ENABLED(CONFIG_EFI_MIXED) || efi_is_native()) if (!efi_is_mixed())
return 0; return 0;
page = alloc_page(GFP_KERNEL|__GFP_DMA32); page = alloc_page(GFP_KERNEL|__GFP_DMA32);
...@@ -449,7 +449,7 @@ void __init efi_map_region(efi_memory_desc_t *md) ...@@ -449,7 +449,7 @@ void __init efi_map_region(efi_memory_desc_t *md)
* booting in EFI mixed mode, because even though we may be * booting in EFI mixed mode, because even though we may be
* running a 64-bit kernel, the firmware may only be 32-bit. * running a 64-bit kernel, the firmware may only be 32-bit.
*/ */
if (!efi_is_native () && IS_ENABLED(CONFIG_EFI_MIXED)) { if (efi_is_mixed()) {
md->virt_addr = md->phys_addr; md->virt_addr = md->phys_addr;
return; return;
} }
......
...@@ -395,7 +395,7 @@ static void __init efi_unmap_pages(efi_memory_desc_t *md) ...@@ -395,7 +395,7 @@ static void __init efi_unmap_pages(efi_memory_desc_t *md)
* EFI runtime calls, hence don't unmap EFI boot services code/data * EFI runtime calls, hence don't unmap EFI boot services code/data
* regions. * regions.
*/ */
if (!efi_is_native()) if (efi_is_mixed())
return; return;
if (kernel_unmap_pages_in_pgd(pgd, pa, md->num_pages)) if (kernel_unmap_pages_in_pgd(pgd, pa, md->num_pages))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment