aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorStuart Menefy <stuart.menefy@st.com>2008-09-05 03:29:40 -0400
committerPaul Mundt <lethal@linux-sh.org>2008-09-07 21:35:05 -0400
commitf040ddaf4cfd28f25ea9d6a42d3c734d5c3f6798 (patch)
tree8cb1eaf4eb57b49a345c9d6ae5ff82518632b3dd /arch
parent664718a34348a9ef6f966c3977e8df927a378134 (diff)
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>
Diffstat (limited to 'arch')
-rw-r--r--arch/sh/kernel/setup.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c
index fc7171a9c804..fc098c8af052 100644
--- a/arch/sh/kernel/setup.c
+++ b/arch/sh/kernel/setup.c
@@ -233,15 +233,17 @@ void __init setup_bootmem_allocator(unsigned long free_pfn)
233 * case of us accidentally initializing the bootmem allocator with 233 * case of us accidentally initializing the bootmem allocator with
234 * an invalid RAM area. 234 * an invalid RAM area.
235 */ 235 */
236 reserve_bootmem(__MEMORY_START+PAGE_SIZE, 236 reserve_bootmem(__MEMORY_START + CONFIG_ZERO_PAGE_OFFSET,
237 (PFN_PHYS(free_pfn)+bootmap_size+PAGE_SIZE-1)-__MEMORY_START, 237 (PFN_PHYS(free_pfn) + bootmap_size + PAGE_SIZE - 1) -
238 BOOTMEM_DEFAULT); 238 (__MEMORY_START + CONFIG_ZERO_PAGE_OFFSET),
239 BOOTMEM_DEFAULT);
239 240
240 /* 241 /*
241 * reserve physical page 0 - it's a special BIOS page on many boxes, 242 * reserve physical page 0 - it's a special BIOS page on many boxes,
242 * enabling clean reboots, SMP operation, laptop functions. 243 * enabling clean reboots, SMP operation, laptop functions.
243 */ 244 */
244 reserve_bootmem(__MEMORY_START, PAGE_SIZE, BOOTMEM_DEFAULT); 245 reserve_bootmem(__MEMORY_START, CONFIG_ZERO_PAGE_OFFSET,
246 BOOTMEM_DEFAULT);
245 247
246 sparse_memory_present_with_active_regions(0); 248 sparse_memory_present_with_active_regions(0);
247 249