diff -urpN -X /home/fletch/.diff.exclude 504-ppc64-update/include/linux/mmzone.h 510-fix_numameminfo/include/linux/mmzone.h
--- 504-ppc64-update/include/linux/mmzone.h	Thu Feb 13 11:08:14 2003
+++ 510-fix_numameminfo/include/linux/mmzone.h	Sun Apr 20 22:21:45 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 504-ppc64-update/mm/page_alloc.c 510-fix_numameminfo/mm/page_alloc.c
--- 504-ppc64-update/mm/page_alloc.c	Sun Apr 20 22:07:31 2003
+++ 510-fix_numameminfo/mm/page_alloc.c	Sun Apr 20 22:21:45 2003
@@ -888,7 +888,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].spanned_pages;
 	val->freehigh = pgdat->node_zones[ZONE_HIGHMEM].free_pages;
@@ -1129,6 +1129,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);
 }