x86/efi: Remove references to no-longer-used efi_have_uv1_memmap()
authorsteve.wahl@hpe.com <steve.wahl@hpe.com>
Mon, 13 Jul 2020 21:30:05 +0000 (16:30 -0500)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 17 Jul 2020 14:47:47 +0000 (16:47 +0200)
In removing UV1 support, efi_have_uv1_memmap is no longer used.

Signed-off-by: Steve Wahl <steve.wahl@hpe.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lkml.kernel.org/r/20200713212955.786177105@hpe.com
arch/x86/kernel/kexec-bzimage64.c
arch/x86/platform/efi/efi.c
arch/x86/platform/efi/efi_64.c
arch/x86/platform/efi/quirks.c

index db6578d45157e539aa48dd62453ad6efdcbbbd79..57c2ecf43134380ca2bb36c51cc66b1a3b074454 100644 (file)
@@ -170,15 +170,6 @@ setup_efi_state(struct boot_params *params, unsigned long params_load_addr,
        if (!current_ei->efi_memmap_size)
                return 0;
 
-       /*
-        * If 1:1 mapping is not enabled, second kernel can not setup EFI
-        * and use EFI run time services. User space will have to pass
-        * acpi_rsdp=<addr> on kernel command line to make second kernel boot
-        * without efi.
-        */
-       if (efi_have_uv1_memmap())
-               return 0;
-
        params->secure_boot = boot_params.secure_boot;
        ei->efi_loader_signature = current_ei->efi_loader_signature;
        ei->efi_systab = current_ei->efi_systab;
index e966115d105c412e554f2e64d8979549c86b079e..2cc159037def2d8a708b73cfecc6ce689a246108 100644 (file)
@@ -648,7 +648,7 @@ static inline void *efi_map_next_entry_reverse(void *entry)
  */
 static void *efi_map_next_entry(void *entry)
 {
-       if (!efi_have_uv1_memmap() && efi_enabled(EFI_64BIT)) {
+       if (efi_enabled(EFI_64BIT)) {
                /*
                 * Starting in UEFI v2.5 the EFI_PROPERTIES_TABLE
                 * config table feature requires us to map all entries
@@ -777,11 +777,9 @@ static void __init kexec_enter_virtual_mode(void)
 
        /*
         * We don't do virtual mode, since we don't do runtime services, on
-        * non-native EFI. With the UV1 memmap, we don't do runtime services in
-        * kexec kernel because in the initial boot something else might
-        * have been mapped at these virtual addresses.
+        * non-native EFI.
         */
-       if (efi_is_mixed() || efi_have_uv1_memmap()) {
+       if (efi_is_mixed()) {
                efi_memmap_unmap();
                clear_bit(EFI_RUNTIME_SERVICES, &efi.flags);
                return;
@@ -832,12 +830,6 @@ static void __init kexec_enter_virtual_mode(void)
  * has the runtime attribute bit set in its memory descriptor into the
  * efi_pgd page table.
  *
- * The old method which used to update that memory descriptor with the
- * virtual address obtained from ioremap() is still supported when the
- * kernel is booted on SG1 UV1 hardware. Same old method enabled the
- * runtime services to be called without having to thunk back into
- * physical mode for every invocation.
- *
  * The new method does a pagetable switch in a preemption-safe manner
  * so that we're in a different address space when calling a runtime
  * function. For function arguments passing we do copy the PUDs of the
index 8e364c4c676837382b2d9b86f6ab132a9e92eb72..413583f904a695365e460502ff8f9b76ca844aa9 100644 (file)
@@ -74,9 +74,6 @@ int __init efi_alloc_page_tables(void)
        pud_t *pud;
        gfp_t gfp_mask;
 
-       if (efi_have_uv1_memmap())
-               return 0;
-
        gfp_mask = GFP_KERNEL | __GFP_ZERO;
        efi_pgd = (pgd_t *)__get_free_pages(gfp_mask, PGD_ALLOCATION_ORDER);
        if (!efi_pgd)
@@ -115,9 +112,6 @@ void efi_sync_low_kernel_mappings(void)
        pud_t *pud_k, *pud_efi;
        pgd_t *efi_pgd = efi_mm.pgd;
 
-       if (efi_have_uv1_memmap())
-               return;
-
        /*
         * We can share all PGD entries apart from the one entry that
         * covers the EFI runtime mapping space.
@@ -206,9 +200,6 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
        unsigned npages;
        pgd_t *pgd = efi_mm.pgd;
 
-       if (efi_have_uv1_memmap())
-               return 0;
-
        /*
         * It can happen that the physical address of new_memmap lands in memory
         * which is not mapped in the EFI page table. Therefore we need to go
@@ -315,9 +306,6 @@ void __init efi_map_region(efi_memory_desc_t *md)
        unsigned long size = md->num_pages << PAGE_SHIFT;
        u64 pa = md->phys_addr;
 
-       if (efi_have_uv1_memmap())
-               return old_map_region(md);
-
        /*
         * Make sure the 1:1 mappings are present as a catch-all for b0rked
         * firmware which doesn't update all internal pointers after switching
@@ -420,12 +408,6 @@ void __init efi_runtime_update_mappings(void)
 {
        efi_memory_desc_t *md;
 
-       if (efi_have_uv1_memmap()) {
-               if (__supported_pte_mask & _PAGE_NX)
-                       runtime_code_page_mkexec();
-               return;
-       }
-
        /*
         * Use the EFI Memory Attribute Table for mapping permissions if it
         * exists, since it is intended to supersede EFI_PROPERTIES_TABLE.
@@ -474,10 +456,7 @@ void __init efi_runtime_update_mappings(void)
 void __init efi_dump_pagetable(void)
 {
 #ifdef CONFIG_EFI_PGT_DUMP
-       if (efi_have_uv1_memmap())
-               ptdump_walk_pgd_level(NULL, &init_mm);
-       else
-               ptdump_walk_pgd_level(NULL, &efi_mm);
+       ptdump_walk_pgd_level(NULL, &efi_mm);
 #endif
 }
 
@@ -849,21 +828,13 @@ efi_set_virtual_address_map(unsigned long memory_map_size,
        const efi_system_table_t *systab = (efi_system_table_t *)systab_phys;
        efi_status_t status;
        unsigned long flags;
-       pgd_t *save_pgd = NULL;
 
        if (efi_is_mixed())
                return efi_thunk_set_virtual_address_map(memory_map_size,
                                                         descriptor_size,
                                                         descriptor_version,
                                                         virtual_map);
-
-       if (efi_have_uv1_memmap()) {
-               save_pgd = efi_uv1_memmap_phys_prolog();
-               if (!save_pgd)
-                       return EFI_ABORTED;
-       } else {
-               efi_switch_mm(&efi_mm);
-       }
+       efi_switch_mm(&efi_mm);
 
        kernel_fpu_begin();
 
@@ -879,10 +850,7 @@ efi_set_virtual_address_map(unsigned long memory_map_size,
        /* grab the virtually remapped EFI runtime services table pointer */
        efi.runtime = READ_ONCE(systab->runtime);
 
-       if (save_pgd)
-               efi_uv1_memmap_phys_epilog(save_pgd);
-       else
-               efi_switch_mm(efi_scratch.prev_mm);
+       efi_switch_mm(efi_scratch.prev_mm);
 
        return status;
 }
index d627f55d17dfc1ab812b6797c080e1515444b5a7..5a40fe411ebda0fedbf65d9de0f9c1f0ba92abee 100644 (file)
@@ -380,14 +380,6 @@ static void __init efi_unmap_pages(efi_memory_desc_t *md)
        u64 pa = md->phys_addr;
        u64 va = md->virt_addr;
 
-       /*
-        * To Do: Remove this check after adding functionality to unmap EFI boot
-        * services code/data regions from direct mapping area because the UV1
-        * memory map maps EFI regions in swapper_pg_dir.
-        */
-       if (efi_have_uv1_memmap())
-               return;
-
        /*
         * EFI mixed mode has all RAM mapped to access arguments while making
         * EFI runtime calls, hence don't unmap EFI boot services code/data