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);
 
        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
        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();
-       early_memunmap(memmap.map, memmap.map_end - memmap.map);
-}
-
 /*
  * Enable the UEFI Runtime Services if all prerequisites are in place, i.e.,
  * non-early mapping of the UEFI system table and virtual mappings for all
                create_pgd_mapping(&efi_mm, paddr, md->virt_addr, size, prot);
        }
        set_bit(EFI_VIRTMAP, &efi.flags);
+       early_memunmap(memmap.map, memmap.map_end - memmap.map);
 }
 
                         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)