Index: 2.6.12-rc1-memory_present/arch/ppc64/mm/init.c =================================================================== --- 2.6.12-rc1-memory_present.orig/arch/ppc64/mm/init.c 2005-03-29 14:57:41.000000000 -0600 +++ 2.6.12-rc1-memory_present/arch/ppc64/mm/init.c 2005-03-29 15:10:29.000000000 -0600 @@ -608,6 +608,7 @@ void __init do_init_bootmem(void) unsigned long start, bootmap_pages; unsigned long total_pages = lmb_end_of_DRAM() >> PAGE_SHIFT; int boot_mapsize; + unsigned long start_pfn, end_pfn; /* * Find an area to use for the bootmem bitmap. Calculate the size of @@ -629,6 +630,9 @@ void __init do_init_bootmem(void) physbase = lmb.memory.region[i].physbase; size = lmb.memory.region[i].size; + start_pfn = physbase >> PAGE_SHIFT; + end_pfn = start_pfn + (size >> PAGE_SHIFT); + memory_present(0, start_pfn, end_pfn); free_bootmem(physbase, size); } Index: 2.6.12-rc1-memory_present/arch/ppc64/mm/numa.c =================================================================== --- 2.6.12-rc1-memory_present.orig/arch/ppc64/mm/numa.c 2005-03-29 14:57:41.000000000 -0600 +++ 2.6.12-rc1-memory_present/arch/ppc64/mm/numa.c 2005-03-29 15:30:53.000000000 -0600 @@ -536,6 +536,10 @@ void __init do_init_bootmem(void) start_paddr = init_node_data[nid].node_start_pfn * PAGE_SIZE; end_paddr = start_paddr + (init_node_data[nid].node_spanned_pages * PAGE_SIZE); + + memory_present(nid, + init_node_data[nid].node_start_pfn, + init_node_data[nid].node_spanned_pages); /* Allocate the node structure node local if possible */ NODE_DATA(nid) = (struct pglist_data *)careful_allocation(nid,