diff options
Diffstat (limited to 'mm/mm_init.c')
| -rw-r--r-- | mm/mm_init.c | 45 | 
1 files changed, 45 insertions, 0 deletions
| diff --git a/mm/mm_init.c b/mm/mm_init.c index e16990d629e6..ce445ca097e7 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -11,6 +11,51 @@  int __meminitdata mminit_loglevel; +/* The zonelists are simply reported, validation is manual. */ +void mminit_verify_zonelist(void) +{ +	int nid; + +	if (mminit_loglevel < MMINIT_VERIFY) +		return; + +	for_each_online_node(nid) { +		pg_data_t *pgdat = NODE_DATA(nid); +		struct zone *zone; +		struct zoneref *z; +		struct zonelist *zonelist; +		int i, listid, zoneid; + +		BUG_ON(MAX_ZONELISTS > 2); +		for (i = 0; i < MAX_ZONELISTS * MAX_NR_ZONES; i++) { + +			/* Identify the zone and nodelist */ +			zoneid = i % MAX_NR_ZONES; +			listid = i / MAX_NR_ZONES; +			zonelist = &pgdat->node_zonelists[listid]; +			zone = &pgdat->node_zones[zoneid]; +			if (!populated_zone(zone)) +				continue; + +			/* Print information about the zonelist */ +			printk(KERN_DEBUG "mminit::zonelist %s %d:%s = ", +				listid > 0 ? "thisnode" : "general", nid, +				zone->name); + +			/* Iterate the zonelist */ +			for_each_zone_zonelist(zone, z, zonelist, zoneid) { +#ifdef CONFIG_NUMA +				printk(KERN_CONT "%d:%s ", +					zone->node, zone->name); +#else +				printk(KERN_CONT "0:%s ", zone->name); +#endif /* CONFIG_NUMA */ +			} +			printk(KERN_CONT "\n"); +		} +	} +} +  void __init mminit_verify_pageflags_layout(void)  {  	int shift, width; | 
