diff -urpN -X /home/fletch/.diff.exclude 501-ppc64-pci/include/linux/mmzone.h 510-fix_numameminfo/include/linux/mmzone.h --- 501-ppc64-pci/include/linux/mmzone.h Sat Jun 14 18:37:37 2003 +++ 510-fix_numameminfo/include/linux/mmzone.h Tue Jun 24 21:33:31 2003 @@ -185,6 +185,7 @@ typedef struct pglist_data { struct bootmem_data *bdata; unsigned long node_start_pfn; unsigned long node_size; + unsigned long real_node_size; int node_id; struct pglist_data *pgdat_next; wait_queue_head_t kswapd_wait; diff -urpN -X /home/fletch/.diff.exclude 501-ppc64-pci/mm/page_alloc.c 510-fix_numameminfo/mm/page_alloc.c --- 501-ppc64-pci/mm/page_alloc.c Tue Jun 24 21:30:45 2003 +++ 510-fix_numameminfo/mm/page_alloc.c Tue Jun 24 21:33:31 2003 @@ -898,7 +898,7 @@ void si_meminfo_node(struct sysinfo *val { pg_data_t *pgdat = NODE_DATA(nid); - val->totalram = pgdat->node_size; + val->totalram = pgdat->real_node_size; val->freeram = nr_free_pages_pgdat(pgdat); val->totalhigh = pgdat->node_zones[ZONE_HIGHMEM].present_pages; val->freehigh = pgdat->node_zones[ZONE_HIGHMEM].free_pages; @@ -1139,6 +1139,8 @@ static void __init calculate_zone_totalp if (zholes_size) for (i = 0; i < MAX_NR_ZONES; i++) realtotalpages -= zholes_size[i]; + pgdat->real_node_size = realtotalpages; + printk("On node %d totalpages: %lu\n", pgdat->node_id, realtotalpages); }