|
@@ -8,7 +8,6 @@
|
|
|
#include <asm/pgtable.h>
|
|
|
#include <asm/sections.h>
|
|
|
#include <asm/system_info.h>
|
|
|
-#include <asm/virt.h>
|
|
|
|
|
|
pgd_t *idmap_pgd;
|
|
|
|
|
@@ -83,37 +82,10 @@ static void identity_mapping_add(pgd_t *pgd, const char *text_start,
|
|
|
} while (pgd++, addr = next, addr != end);
|
|
|
}
|
|
|
|
|
|
-#if defined(CONFIG_ARM_VIRT_EXT) && defined(CONFIG_ARM_LPAE)
|
|
|
-pgd_t *hyp_pgd;
|
|
|
-
|
|
|
-extern char __hyp_idmap_text_start[], __hyp_idmap_text_end[];
|
|
|
-
|
|
|
-static int __init init_static_idmap_hyp(void)
|
|
|
-{
|
|
|
- hyp_pgd = kzalloc(PTRS_PER_PGD * sizeof(pgd_t), GFP_KERNEL);
|
|
|
- if (!hyp_pgd)
|
|
|
- return -ENOMEM;
|
|
|
-
|
|
|
- pr_info("Setting up static HYP identity map for 0x%p - 0x%p\n",
|
|
|
- __hyp_idmap_text_start, __hyp_idmap_text_end);
|
|
|
- identity_mapping_add(hyp_pgd, __hyp_idmap_text_start,
|
|
|
- __hyp_idmap_text_end, PMD_SECT_AP1);
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-#else
|
|
|
-static int __init init_static_idmap_hyp(void)
|
|
|
-{
|
|
|
- return 0;
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
extern char __idmap_text_start[], __idmap_text_end[];
|
|
|
|
|
|
static int __init init_static_idmap(void)
|
|
|
{
|
|
|
- int ret;
|
|
|
-
|
|
|
idmap_pgd = pgd_alloc(&init_mm);
|
|
|
if (!idmap_pgd)
|
|
|
return -ENOMEM;
|
|
@@ -123,12 +95,10 @@ static int __init init_static_idmap(void)
|
|
|
identity_mapping_add(idmap_pgd, __idmap_text_start,
|
|
|
__idmap_text_end, 0);
|
|
|
|
|
|
- ret = init_static_idmap_hyp();
|
|
|
-
|
|
|
/* Flush L1 for the hardware to see this page table content */
|
|
|
flush_cache_louis();
|
|
|
|
|
|
- return ret;
|
|
|
+ return 0;
|
|
|
}
|
|
|
early_initcall(init_static_idmap);
|
|
|
|