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-02-17 15:25:47.000000000 -0800 +++ memhotplug-dave/arch/ppc64/mm/init.c 2005-02-17 15:25:47.000000000 -0800 @@ -719,7 +719,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); #if defined(CONFIG_DISCONTIGMEM) || defined(CONFIG_SPARSEMEM) for_each_online_node(nid) { _