efi/x86: Rename efi_is_native() to efi_is_mixed()
authorArd Biesheuvel <ardb@kernel.org>
Tue, 24 Dec 2019 15:10:06 +0000 (16:10 +0100)
committerIngo Molnar <mingo@kernel.org>
Wed, 25 Dec 2019 09:49:16 +0000 (10:49 +0100)
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: Ard 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.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/include/asm/efi.h
arch/x86/platform/efi/efi.c
arch/x86/platform/efi/efi_64.c
arch/x86/platform/efi/quirks.c

index 59c19e0b6027e05d38ba85c7da1d4437731cfae6..6094e7f49a99f9dfb8e47871aa258bac13617ac6 100644 (file)
@@ -153,17 +153,19 @@ extern u64 efi_setup;
 
 #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)
 {
-       if (efi_is_native())
+       if (!efi_is_mixed())
                return true;
 
-       if (IS_ENABLED(CONFIG_EFI_MIXED) && !efi_enabled(EFI_OLD_MEMMAP))
+       if (!efi_enabled(EFI_OLD_MEMMAP))
                return true;
 
        return false;
index 38d44f36d5ede328a7df74240b62d5cf690014f6..e188b7ce0796f9dc99302dbc02a4d42f7e9b3cb4 100644 (file)
@@ -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
         * 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 ||
                    md->type == EFI_LOADER_DATA ||
                    md->type == EFI_LOADER_CODE)
@@ -903,7 +903,7 @@ static void __init kexec_enter_virtual_mode(void)
         * kexec kernel because in the initial boot something else might
         * 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();
                clear_bit(EFI_RUNTIME_SERVICES, &efi.flags);
                return;
@@ -1040,7 +1040,7 @@ static void __init __efi_enter_virtual_mode(void)
 
        efi_sync_low_kernel_mappings();
 
-       if (efi_is_native()) {
+       if (!efi_is_mixed()) {
                status = phys_efi_set_virtual_address_map(
                                efi.memmap.desc_size * count,
                                efi.memmap.desc_size,
@@ -1071,7 +1071,7 @@ static void __init __efi_enter_virtual_mode(void)
         */
        efi.runtime_version = efi_systab.hdr.revision;
 
-       if (efi_is_native())
+       if (!efi_is_mixed())
                efi_native_runtime_setup();
        else
                efi_thunk_runtime_setup();
index 08ce8177c3af154ae76ff7ed424d585ecde51984..885e50a707a6e4e26257bb901792a9c777804849 100644 (file)
@@ -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
         * stack pointer being < 4GB.
         */
-       if (!IS_ENABLED(CONFIG_EFI_MIXED) || efi_is_native())
+       if (!efi_is_mixed())
                return 0;
 
        page = alloc_page(GFP_KERNEL|__GFP_DMA32);
@@ -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
         * 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;
                return;
        }
index f8f0220b6a665a1c26b9a2e15f12cb6c4fb37f2f..eb421cb35108e8ece9d1fbc7ec064cc7780bb8d0 100644 (file)
@@ -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
         * regions.
         */
-       if (!efi_is_native())
+       if (efi_is_mixed())
                return;
 
        if (kernel_unmap_pages_in_pgd(pgd, pa, md->num_pages))