Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2826fa61 authored by Paul Mundt's avatar Paul Mundt Committed by Paul Mundt
Browse files

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: default avatarPaul Mundt <lethal@linux-sh.org>
parent d22d9b3a
Loading
Loading
Loading
Loading
+5 −4
Original line number Original line Diff line number Diff line
@@ -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)
	 * 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)
	 * 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)
	 */
	 */
	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)
	 */
	 */
	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);