提交 2826fa61 编写于 作者: P Paul Mundt 提交者: Paul Mundt

sh: Mark sparsemem regions present earlier.

We have to call in to sparse_memory_present_with_active_regions()
earlier in order for sparsemem to be happy. This was being called
too late, and was causing troubles with the platforms that needed
to enable sparsemem.
Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
上级 d22d9b3a
...@@ -116,7 +116,7 @@ static void __init register_bootmem_low_pages(void) ...@@ -116,7 +116,7 @@ static void __init register_bootmem_low_pages(void)
free_bootmem(PFN_PHYS(curr_pfn), PFN_PHYS(pages)); free_bootmem(PFN_PHYS(curr_pfn), PFN_PHYS(pages));
} }
void __init setup_bootmem_allocator(unsigned long start_pfn) void __init setup_bootmem_allocator(unsigned long free_pfn)
{ {
unsigned long bootmap_size; unsigned long bootmap_size;
...@@ -125,7 +125,7 @@ void __init setup_bootmem_allocator(unsigned long start_pfn) ...@@ -125,7 +125,7 @@ void __init setup_bootmem_allocator(unsigned long start_pfn)
* bootstrap step all allocations (until the page allocator * bootstrap step all allocations (until the page allocator
* is intact) must be done via bootmem_alloc(). * is intact) must be done via bootmem_alloc().
*/ */
bootmap_size = init_bootmem_node(NODE_DATA(0), start_pfn, bootmap_size = init_bootmem_node(NODE_DATA(0), free_pfn,
min_low_pfn, max_low_pfn); min_low_pfn, max_low_pfn);
add_active_range(0, min_low_pfn, max_low_pfn); add_active_range(0, min_low_pfn, max_low_pfn);
...@@ -141,7 +141,7 @@ void __init setup_bootmem_allocator(unsigned long start_pfn) ...@@ -141,7 +141,7 @@ void __init setup_bootmem_allocator(unsigned long start_pfn)
* an invalid RAM area. * an invalid RAM area.
*/ */
reserve_bootmem(__MEMORY_START+PAGE_SIZE, reserve_bootmem(__MEMORY_START+PAGE_SIZE,
(PFN_PHYS(start_pfn)+bootmap_size+PAGE_SIZE-1)-__MEMORY_START); (PFN_PHYS(free_pfn)+bootmap_size+PAGE_SIZE-1)-__MEMORY_START);
/* /*
* reserve physical page 0 - it's a special BIOS page on many boxes, * reserve physical page 0 - it's a special BIOS page on many boxes,
...@@ -149,6 +149,8 @@ void __init setup_bootmem_allocator(unsigned long start_pfn) ...@@ -149,6 +149,8 @@ void __init setup_bootmem_allocator(unsigned long start_pfn)
*/ */
reserve_bootmem(__MEMORY_START, PAGE_SIZE); reserve_bootmem(__MEMORY_START, PAGE_SIZE);
sparse_memory_present_with_active_regions(0);
#ifdef CONFIG_BLK_DEV_INITRD #ifdef CONFIG_BLK_DEV_INITRD
ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0); ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0);
if (&__rd_start != &__rd_end) { if (&__rd_start != &__rd_end) {
...@@ -193,7 +195,6 @@ static void __init setup_memory(void) ...@@ -193,7 +195,6 @@ static void __init setup_memory(void)
*/ */
start_pfn = PFN_UP(__pa(_end)); start_pfn = PFN_UP(__pa(_end));
setup_bootmem_allocator(start_pfn); setup_bootmem_allocator(start_pfn);
sparse_memory_present_with_active_regions(0);
} }
#else #else
extern void __init setup_memory(void); extern void __init setup_memory(void);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册