don't do __va() in non-existent addresses. Signed-off-by: Dave Hansen --- memhotplug-dave/arch/ppc64/mm/init.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) diff -puN arch/ppc64/mm/init.c~G2-no-memory-at-high_memory-ppc64 arch/ppc64/mm/init.c --- memhotplug/arch/ppc64/mm/init.c~G2-no-memory-at-high_memory-ppc64 2005-07-28 13:51:08.000000000 -0700 +++ memhotplug-dave/arch/ppc64/mm/init.c 2005-07-28 13:51:08.000000000 -0700 @@ -649,7 +649,8 @@ void __init mem_init(void) unsigned long reservedpages = 0, codesize, initsize, datasize, bsssize; num_physpages = max_low_pfn; /* RAM is assumed contiguous */ - high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); + /* The strange -1 +1 is to avoid calling __va on an invalid address */ + high_memory = (void *) (__va(max_low_pfn * PAGE_SIZE - 1) + 1); #ifdef CONFIG_NEED_MULTIPLE_NODES for_each_online_node(nid) { _