diff options
author | Gustavo F. Padovan <gustavo@las.ic.unicamp.br> | 2009-02-15 21:48:54 -0300 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2009-02-27 20:57:47 -0800 |
commit | fd862dde18c3e360f510780e1d1bf615866b11c2 (patch) | |
tree | d67317c975ec7ed65c517a84243f0c5f877ae910 /arch/x86/mm/pgtable.c | |
parent | ab93e3c45dbac66c2e8e24fd560c052a3907903e (diff) | |
download | lwn-fd862dde18c3e360f510780e1d1bf615866b11c2.tar.gz lwn-fd862dde18c3e360f510780e1d1bf615866b11c2.zip |
x86, fixmap: define reserve_top_address for x86_64
Impact: new interface (not yet use)
Define reserve_top_address for x86_64; only for later x86 integration.
Signed-off-by: Gustavo F. Padovan <gustavo@las.ic.unicamp.br>
Acked-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/x86/mm/pgtable.c')
-rw-r--r-- | arch/x86/mm/pgtable.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index 86f2ffc43c3d..5b7c7c8464fe 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c @@ -313,6 +313,24 @@ int ptep_clear_flush_young(struct vm_area_struct *vma, return young; } +/** + * reserve_top_address - reserves a hole in the top of kernel address space + * @reserve - size of hole to reserve + * + * Can be used to relocate the fixmap area and poke a hole in the top + * of kernel address space to make room for a hypervisor. + */ +void __init reserve_top_address(unsigned long reserve) +{ +#ifdef CONFIG_X86_32 + BUG_ON(fixmaps_set > 0); + printk(KERN_INFO "Reserving virtual address space above 0x%08x\n", + (int)-reserve); + __FIXADDR_TOP = -reserve - PAGE_SIZE; + __VMALLOC_RESERVE += reserve; +#endif +} + int fixmaps_set; void __native_set_fixmap(enum fixed_addresses idx, pte_t pte) |