Browse Source

sh: Fix an unusual memory initialisation error.

This fixes a problems with the set up of Linux memory:

 - When reserving memory at boot time, the code previously reserved
   the bottom page of memory, and then from one page up to the end of
   the bootmap. This had the desired effect, but was strictly speaking
   wrong, as the one page was actually whatever CONFIG_ZERO_PAGE_OFFSET
   had been set to.

Signed-off-by: Stuart Menefy <stuart.menefy@st.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Stuart Menefy 16 years ago
parent
commit
f040ddaf4c
1 changed files with 6 additions and 4 deletions
  1. 6 4
      arch/sh/kernel/setup.c

+ 6 - 4
arch/sh/kernel/setup.c

@@ -233,15 +233,17 @@ void __init setup_bootmem_allocator(unsigned long free_pfn)
 	 * case of us accidentally initializing the bootmem allocator with
 	 * case of us accidentally initializing the bootmem allocator with
 	 * an invalid RAM area.
 	 * an invalid RAM area.
 	 */
 	 */
-	reserve_bootmem(__MEMORY_START+PAGE_SIZE,
-		(PFN_PHYS(free_pfn)+bootmap_size+PAGE_SIZE-1)-__MEMORY_START,
-		BOOTMEM_DEFAULT);
+	reserve_bootmem(__MEMORY_START + CONFIG_ZERO_PAGE_OFFSET,
+			(PFN_PHYS(free_pfn) + bootmap_size + PAGE_SIZE - 1) -
+			(__MEMORY_START + CONFIG_ZERO_PAGE_OFFSET),
+			BOOTMEM_DEFAULT);
 
 
 	/*
 	/*
 	 * 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,
 	 * enabling clean reboots, SMP operation, laptop functions.
 	 * enabling clean reboots, SMP operation, laptop functions.
 	 */
 	 */
-	reserve_bootmem(__MEMORY_START, PAGE_SIZE, BOOTMEM_DEFAULT);
+	reserve_bootmem(__MEMORY_START, CONFIG_ZERO_PAGE_OFFSET,
+			BOOTMEM_DEFAULT);
 
 
 	sparse_memory_present_with_active_regions(0);
 	sparse_memory_present_with_active_regions(0);