if ((zone_start_pfn) & (zone_required_alignment-1)) printk(KERN_CRIT "BUG: wrong zone alignment, it will crash\n");  
static void __init free_area_init_core(struct pglist_data *pgdat,		unsigned long *zones_size, unsigned long *zholes_size){	unsigned long i, j;	const unsigned long zone_required_alignment = 1UL << (MAX_ORDER-1);	int cpu, nid = pgdat->node_id;	unsigned long zone_start_pfn = pgdat->node_start_pfn;	pgdat->nr_zones = 0;	init_waitqueue_head(&pgdat->kswapd_wait);	pgdat->kswapd_max_order = 0;		for (j = 0; j < MAX_NR_ZONES; j++) {		struct zone *zone = pgdat->node_zones + j;		unsigned long size, realsize;		unsigned long batch;		realsize = size = zones_size[j];		if (zholes_size)			realsize -= zholes_size[j];		if (j == ZONE_DMA || j == ZONE_NORMAL)			nr_kernel_pages += realsize;		nr_all_pages += realsize;		zone->spanned_pages = size;		zone->present_pages = realsize;		zone->name = zone_names[j];		spin_lock_init(&zone->lock);		spin_lock_init(&zone->lru_lock);		zone->zone_pgdat = pgdat;		zone->free_pages = 0;		zone->temp_priority = zone->prev_priority = DEF_PRIORITY;		batch = zone_batchsize(zone);		for (cpu = 0; cpu < NR_CPUS; cpu++) {#ifdef CONFIG_NUMA			/* Early boot. Slab allocator not functional yet */			zone->pageset[cpu] = &boot_pageset[cpu];			setup_pageset(&boot_pageset[cpu],0);#else			setup_pageset(zone_pcp(zone,cpu), batch);#endif		}		printk(KERN_DEBUG "  %s zone: %lu pages, LIFO batch:%lu\n",				zone_names[j], realsize, batch);		INIT_LIST_HEAD(&zone->active_list);		INIT_LIST_HEAD(&zone->inactive_list);		zone->nr_scan_active = 0;		zone->nr_scan_inactive = 0;		zone->nr_active = 0;		zone->nr_inactive = 0;		atomic_set(&zone->reclaim_in_progress, -1);		if (!size)			continue;		/*		 * The per-page waitqueue mechanism uses hashed waitqueues		 * per zone.		 */		zone->wait_table_size = wait_table_size(size);		zone->wait_table_bits =			wait_table_bits(zone->wait_table_size);		zone->wait_table = (wait_queue_head_t *)			alloc_bootmem_node(pgdat, zone->wait_table_size						* sizeof(wait_queue_head_t));		for(i = 0; i < zone->wait_table_size; ++i)			init_waitqueue_head(zone->wait_table + i);		pgdat->nr_zones = j+1;		zone->zone_mem_map = pfn_to_page(zone_start_pfn);		zone->zone_start_pfn = zone_start_pfn;		if ((zone_start_pfn) & (zone_required_alignment-1))			printk(KERN_CRIT "BUG: wrong zone alignment, it will crash\n");		memmap_init(size, nid, j, zone_start_pfn);		zonetable_add(zone, nid, j, zone_start_pfn, size);		zone_start_pfn += size;		zone_init_free_lists(pgdat, zone, zone->spanned_pages);	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/12b1c5f382194d3f656e78fb5c9c8f2bfbe8ed8a/page_alloc.c/buggy/mm/page_alloc.c