All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] MIPS: pfn_valid() is broken on low memory HIGHMEM systems
@ 2010-05-30  7:32 ` Kevin Cernekee
  0 siblings, 0 replies; 6+ messages in thread
From: Kevin Cernekee @ 2010-05-30  7:32 UTC (permalink / raw)
  To: Ralf Baechle; +Cc: linux-mips, linux-kernel

pfn_valid() compares the PFN to max_mapnr:

        __pfn >= min_low_pfn && __pfn < max_mapnr;

On HIGHMEM kernels, highend_pfn is used to set the value of max_mapnr.
Unfortunately, highend_pfn is left at zero if the system does not
actually have enough RAM to reach into the HIGHMEM range.  This causes
pfn_valid() to always return false, and when debug checks are enabled
the kernel will fail catastrophically:

Memory: 22432k/32768k available (2249k kernel code, 10336k reserved, 653k data, 1352k init, 0k highmem)
NR_IRQS:128
kfree_debugcheck: out of range ptr 81c02900h.
Kernel bug detected[#1]:
Cpu 0
$ 0   : 00000000 10008400 00000034 00000000
$ 4   : 8003e160 802a0000 8003e160 00000000
$ 8   : 00000000 0000003e 00000747 00000747
...

On such a configuration, max_low_pfn should be used to set max_mapnr.

This was seen on 2.6.34.

Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
---
 arch/mips/mm/init.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c
index 2efcbd2..18183a4 100644
--- a/arch/mips/mm/init.c
+++ b/arch/mips/mm/init.c
@@ -370,7 +370,7 @@ void __init mem_init(void)
 #ifdef CONFIG_DISCONTIGMEM
 #error "CONFIG_HIGHMEM and CONFIG_DISCONTIGMEM dont work together yet"
 #endif
-	max_mapnr = highend_pfn;
+	max_mapnr = highend_pfn ? : max_low_pfn;
 #else
 	max_mapnr = max_low_pfn;
 #endif
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-05-19 11:48 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-30  7:32 [PATCH 1/2] MIPS: pfn_valid() is broken on low memory HIGHMEM systems Kevin Cernekee
2010-05-30  7:32 ` Kevin Cernekee
2010-05-30  7:35 ` [PATCH 2/2] MIPS: Fix deferred console messages during CPU hotplug Kevin Cernekee
2010-05-30  7:35   ` Kevin Cernekee
2010-05-31  4:41   ` Paul Mundt
2011-05-19 11:48 ` [PATCH 1/2] MIPS: pfn_valid() is broken on low memory HIGHMEM systems Ralf Baechle

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.