void *cpu_data; 
static int __init find_pernode_space(unsigned long start, unsigned long len,				     int node){	unsigned long epfn, cpu, cpus, phys_cpus;	unsigned long pernodesize = 0, pernode, pages, mapsize;	void *cpu_data;	struct bootmem_data *bdp = &mem_data[node].bootmem_data;	epfn = (start + len) >> PAGE_SHIFT;	pages = bdp->node_low_pfn - (bdp->node_boot_start >> PAGE_SHIFT);	mapsize = bootmem_bootmap_pages(pages) << PAGE_SHIFT;	/*	 * Make sure this memory falls within this node's usable memory	 * since we may have thrown some away in build_maps().	 */	if (start < bdp->node_boot_start || epfn > bdp->node_low_pfn)		return 0;	/* Don't setup this node's local space twice... */	if (mem_data[node].pernode_addr)		return 0;	/*	 * Calculate total size needed, incl. what's necessary	 * for good alignment and alias prevention.	 */	cpus = early_nr_cpus_node(node);	phys_cpus = early_nr_phys_cpus_node(node);	pernodesize += PERCPU_PAGE_SIZE * cpus;	pernodesize += node * L1_CACHE_BYTES;	pernodesize += L1_CACHE_ALIGN(sizeof(pg_data_t));	pernodesize += L1_CACHE_ALIGN(sizeof(struct ia64_node_data));	pernodesize = PAGE_ALIGN(pernodesize);	pernode = NODEDATA_ALIGN(start, node);	/* Is this range big enough for what we want to store here? */	if (start + len > (pernode + pernodesize + mapsize)) {		mem_data[node].pernode_addr = pernode;		mem_data[node].pernode_size = pernodesize;		memset(__va(pernode), 0, pernodesize);		cpu_data = (void *)pernode;		pernode += PERCPU_PAGE_SIZE * cpus;		pernode += node * L1_CACHE_BYTES;		mem_data[node].pgdat = __va(pernode);		pernode += L1_CACHE_ALIGN(sizeof(pg_data_t));		mem_data[node].node_data = __va(pernode);		pernode += L1_CACHE_ALIGN(sizeof(struct ia64_node_data));		mem_data[node].pgdat->bdata = bdp;		pernode += L1_CACHE_ALIGN(sizeof(pg_data_t));		/*		 * Copy the static per-cpu data into the region we		 * just set aside and then setup __per_cpu_offset		 * for each CPU on this node.		 */		for (cpu = 0; cpu < NR_CPUS; cpu++) {			if (node == node_cpuid[cpu].nid) {				memcpy(__va(cpu_data), __phys_per_cpu_start,				       __per_cpu_end - __per_cpu_start);				__per_cpu_offset[cpu] = (char*)__va(cpu_data) -					__per_cpu_start;				cpu_data += PERCPU_PAGE_SIZE;			}		}	}	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/564601a5d12f93fdde04c6bc5b097b95e7752a46/discontig.c/buggy/arch/ia64/mm/discontig.c