x86, mm: Merge alloc_low_page between 64bit and 32bit
They are almost same except 64 bit need to handle after_bootmem case. Add mm_internal.h to make that alloc_low_page() only to be accessible from arch/x86/mm/init*.c Signed-off-by: Yinghai Lu <yinghai@kernel.org> Link: http://lkml.kernel.org/r/1353123563-3103-25-git-send-email-yinghai@kernel.org Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
This commit is contained in:

committed by
H. Peter Anvin

parent
868bf4d6b9
commit
5c51bdbe4c
@@ -53,36 +53,14 @@
|
||||
#include <asm/page_types.h>
|
||||
#include <asm/init.h>
|
||||
|
||||
#include "mm_internal.h"
|
||||
|
||||
unsigned long highstart_pfn, highend_pfn;
|
||||
|
||||
static noinline int do_test_wp_bit(void);
|
||||
|
||||
bool __read_mostly __vmalloc_start_set = false;
|
||||
|
||||
static __init void *alloc_low_page(void)
|
||||
{
|
||||
unsigned long pfn;
|
||||
void *adr;
|
||||
|
||||
if ((pgt_buf_end + 1) >= pgt_buf_top) {
|
||||
unsigned long ret;
|
||||
if (min_pfn_mapped >= max_pfn_mapped)
|
||||
panic("alloc_low_page: ran out of memory");
|
||||
ret = memblock_find_in_range(min_pfn_mapped << PAGE_SHIFT,
|
||||
max_pfn_mapped << PAGE_SHIFT,
|
||||
PAGE_SIZE, PAGE_SIZE);
|
||||
if (!ret)
|
||||
panic("alloc_low_page: can not alloc memory");
|
||||
memblock_reserve(ret, PAGE_SIZE);
|
||||
pfn = ret >> PAGE_SHIFT;
|
||||
} else
|
||||
pfn = pgt_buf_end++;
|
||||
|
||||
adr = __va(pfn * PAGE_SIZE);
|
||||
clear_page(adr);
|
||||
return adr;
|
||||
}
|
||||
|
||||
/*
|
||||
* Creates a middle page table and puts a pointer to it in the
|
||||
* given global directory entry. This only returns the gd entry
|
||||
|
Reference in New Issue
Block a user