/* * We let the lmem_map for node 0 be allocated from the * normal bootmem allocator, but other nodes come from the * remapped KVA area - mbligh */ if (!nid) free_area_init_node(nid, NODE_DATA(nid), zones_size, start, zholes_size); else { unsigned long lmem_map; lmem_map = (unsigned long)node_remap_start_vaddr[nid]; lmem_map += sizeof(pg_data_t) + PAGE_SIZE - 1; lmem_map &= PAGE_MASK; NODE_DATA(nid)->node_mem_map = (struct page *)lmem_map; free_area_init_node(nid, NODE_DATA(nid), zones_size, start, zholes_size); } 
 free_area_init_node(nid, NODE_DATA(nid), zones_size, start, zholes_size); 
void __init zone_sizes_init(void){	int nid;	/*	 * Insert nodes into pgdat_list backward so they appear in order.	 * Clobber node 0's links and NULL out pgdat_list before starting.	 */	pgdat_list = NULL;	for (nid = MAX_NUMNODES - 1; nid >= 0; nid--) {		if (!node_online(nid))			continue;		NODE_DATA(nid)->pgdat_next = pgdat_list;		pgdat_list = NODE_DATA(nid);	}	for_each_online_node(nid) {		unsigned long zones_size[MAX_NR_ZONES] = {0, 0, 0};		unsigned long *zholes_size;		unsigned int max_dma;		unsigned long low = max_low_pfn;		unsigned long start = node_start_pfn[nid];		unsigned long high = node_end_pfn[nid];		max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT;		if (node_has_online_mem(nid)){			if (start > low) {#ifdef CONFIG_HIGHMEM				BUG_ON(start > high);				zones_size[ZONE_HIGHMEM] = high - start;#endif			} else {				if (low < max_dma)					zones_size[ZONE_DMA] = low;				else {					BUG_ON(max_dma > low);					BUG_ON(low > high);					zones_size[ZONE_DMA] = max_dma;					zones_size[ZONE_NORMAL] = low - max_dma;#ifdef CONFIG_HIGHMEM					zones_size[ZONE_HIGHMEM] = high - low;#endif				}			}		}		zholes_size = get_zholes_size(nid);		/*		 * We let the lmem_map for node 0 be allocated from the		 * normal bootmem allocator, but other nodes come from the		 * remapped KVA area - mbligh		 */		if (!nid)			free_area_init_node(nid, NODE_DATA(nid),					zones_size, start, zholes_size);		else {			unsigned long lmem_map;			lmem_map = (unsigned long)node_remap_start_vaddr[nid];			lmem_map += sizeof(pg_data_t) + PAGE_SIZE - 1;			lmem_map &= PAGE_MASK;			NODE_DATA(nid)->node_mem_map = (struct page *)lmem_map;			free_area_init_node(nid, NODE_DATA(nid), zones_size,				start, zholes_size);		}	}	return;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/6f167ec721108c9282d54424516a12c805e3c306/discontig.c/buggy/arch/i386/mm/discontig.c