--- arch/x86/kernel/e820_32.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) Index: linux-2.6/arch/x86/kernel/e820_32.c =================================================================== --- linux-2.6.orig/arch/x86/kernel/e820_32.c 2008-04-15 17:32:06.000000000 -0700 +++ linux-2.6/arch/x86/kernel/e820_32.c 2008-04-15 17:36:21.000000000 -0700 @@ -505,7 +505,12 @@ void __init find_max_pfn(void) continue; if (end > max_pfn) max_pfn = end; - memory_present(0, start, end); + /* + * Beware we may have memory that we cannot access. + * So we need to clip the end. + */ + memory_present(0, start, + min(end, 1ULL << (MAX_PHYSMEM_BITS - PAGE_SHIFT))); } }