On Mon, Dec 22, 2014 at 10:59:04AM +0000, Ard Biesheuvel wrote:
> Now that we have moved the call to SetVirtualAddressMap() to the stub,
> UEFI has no use for the ID map, so we can drop the code that installs
> ID mappings for UEFI memory regions.
> 
> Signed-off-by: Ard Biesheuvel <[email protected]>
> ---
>  arch/arm64/include/asm/efi.h |  2 --
>  arch/arm64/include/asm/mmu.h |  2 --
>  arch/arm64/kernel/efi.c      | 30 ------------------------------
>  arch/arm64/kernel/setup.c    |  1 -
>  arch/arm64/mm/mmu.c          | 12 ------------
>  5 files changed, 47 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/efi.h b/arch/arm64/include/asm/efi.h
> index 6cc668a378c5..84c50853b5dc 100644
> --- a/arch/arm64/include/asm/efi.h
> +++ b/arch/arm64/include/asm/efi.h
> @@ -6,11 +6,9 @@
>  
>  #ifdef CONFIG_EFI
>  extern void efi_init(void);
> -extern void efi_idmap_init(void);
>  extern void efi_virtmap_init(void);
>  #else
>  #define efi_init()
> -#define efi_idmap_init()
>  #define efi_virtmap_init
>  #endif
>  
> diff --git a/arch/arm64/include/asm/mmu.h b/arch/arm64/include/asm/mmu.h
> index 5fd40c43be80..3d311761e3c2 100644
> --- a/arch/arm64/include/asm/mmu.h
> +++ b/arch/arm64/include/asm/mmu.h
> @@ -31,8 +31,6 @@ extern void paging_init(void);
>  extern void setup_mm_for_reboot(void);
>  extern void __iomem *early_io_map(phys_addr_t phys, unsigned long virt);
>  extern void init_mem_pgprot(void);
> -/* create an identity mapping for memory (or io if map_io is true) */
> -extern void create_id_mapping(phys_addr_t addr, phys_addr_t size, int 
> map_io);
>  extern void create_pgd_mapping(struct mm_struct *mm, phys_addr_t phys,
>                              unsigned long virt, phys_addr_t size,
>                              pgprot_t prot);
> diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c
> index e969c5076713..d7d2e818c856 100644
> --- a/arch/arm64/kernel/efi.c
> +++ b/arch/arm64/kernel/efi.c
> @@ -53,27 +53,6 @@ static int __init is_normal_ram(efi_memory_desc_t *md)
>       return 0;
>  }
>  
> -static void __init efi_setup_idmap(void)
> -{
> -     struct memblock_region *r;
> -     efi_memory_desc_t *md;
> -     u64 paddr, npages, size;
> -
> -     for_each_memblock(memory, r)
> -             create_id_mapping(r->base, r->size, 0);
> -
> -     /* map runtime io spaces */
> -     for_each_efi_memory_desc(&memmap, md) {
> -             if (!(md->attribute & EFI_MEMORY_RUNTIME) || is_normal_ram(md))
> -                     continue;
> -             paddr = md->phys_addr;
> -             npages = md->num_pages;
> -             memrange_efi_to_native(&paddr, &npages);
> -             size = npages << PAGE_SHIFT;
> -             create_id_mapping(paddr, size, 1);
> -     }
> -}
> -
>  /*
>   * Translate a EFI virtual address into a physical address: this is 
> necessary,
>   * as some data members of the EFI system table are virtually remapped after
> @@ -235,15 +214,6 @@ void __init efi_init(void)
>       reserve_regions();
>  }
>  
> -void __init efi_idmap_init(void)
> -{
> -     if (!efi_enabled(EFI_BOOT))
> -             return;
> -
> -     /* boot time idmap_pg_dir is incomplete, so fill in missing parts */
> -     efi_setup_idmap();
> -}
> -
>  static int __init arm64_enter_virtual_mode(void)
>  {
>       u64 mapsize;
> diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
> index d8390f507da0..0771de962f37 100644
> --- a/arch/arm64/kernel/setup.c
> +++ b/arch/arm64/kernel/setup.c
> @@ -401,7 +401,6 @@ void __init setup_arch(char **cmdline_p)
>       paging_init();
>       request_standard_resources();
>  
> -     efi_idmap_init();
>       efi_virtmap_init();
>  
>       unflatten_device_tree();
> diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
> index 3f3d5aa4a8b1..328638548871 100644
> --- a/arch/arm64/mm/mmu.c
> +++ b/arch/arm64/mm/mmu.c
> @@ -271,18 +271,6 @@ static void __init create_mapping(phys_addr_t phys, 
> unsigned long virt,
>                        size, PAGE_KERNEL_EXEC);
>  }
>  
> -void __init create_id_mapping(phys_addr_t addr, phys_addr_t size, int map_io)
> -{
> -     if ((addr >> PGDIR_SHIFT) >= ARRAY_SIZE(idmap_pg_dir)) {
> -             pr_warn("BUG: not creating id mapping for %pa\n", &addr);
> -             return;
> -     }
> -     __create_mapping(&init_mm, &idmap_pg_dir[pgd_index(addr)],
> -                      addr, addr, size,
> -                      map_io ? __pgprot(PROT_DEVICE_nGnRE)
> -                             : PAGE_KERNEL_EXEC);
> -}
> -
>  void __init create_pgd_mapping(struct mm_struct *mm, phys_addr_t phys,
>                              unsigned long virt, phys_addr_t size,
>                              pgprot_t prot)
> -- 
> 1.8.3.2

So, this one will clearly need to be reworked if it is to fit on top
of the patches I sent out today. However, this is trivial rework, so:

Acked-by: Leif Lindholm <[email protected]>
--
To unsubscribe from this list: send the line "unsubscribe linux-efi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to