summaryrefslogtreecommitdiff
path: root/arch/x86/include/asm/init.h
diff options
context:
space:
mode:
authorYinghai Lu <yinghai@kernel.org>2013-01-24 12:19:48 -0800
committerH. Peter Anvin <hpa@linux.intel.com>2013-01-29 15:12:25 -0800
commitaece27851d44bde62fc0587e06f5e8e27fd96e5f (patch)
tree5a9fa3138d54cf9e12929764b484ceca42f8dff3 /arch/x86/include/asm/init.h
parent231b3642a3c73fb9f1221dcb96fe8c0fbb658dfd (diff)
x86, 64bit, mm: Add generic kernel/ident mapping helper
It is simple version for kernel_physical_mapping_init. it will work to build one page table that will be used later. Use mapping_info to control 1. alloc_pg_page method 2. if PMD is EXEC, 3. if pgd is with kernel low mapping or ident mapping. Will use to replace some local versions in kexec, hibernation and etc. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Link: http://lkml.kernel.org/r/1359058816-7615-8-git-send-email-yinghai@kernel.org Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/include/asm/init.h')
-rw-r--r--arch/x86/include/asm/init.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/x86/include/asm/init.h b/arch/x86/include/asm/init.h
index bac770b7cbc4..223042086f4e 100644
--- a/arch/x86/include/asm/init.h
+++ b/arch/x86/include/asm/init.h
@@ -1,5 +1,14 @@
#ifndef _ASM_X86_INIT_H
#define _ASM_X86_INIT_H
+struct x86_mapping_info {
+ void *(*alloc_pgt_page)(void *); /* allocate buf for page table */
+ void *context; /* context for alloc_pgt_page */
+ unsigned long pmd_flag; /* page flag for PMD entry */
+ bool kernel_mapping; /* kernel mapping or ident mapping */
+};
+
+int kernel_ident_mapping_init(struct x86_mapping_info *info, pgd_t *pgd_page,
+ unsigned long addr, unsigned long end);
#endif /* _ASM_X86_INIT_H */