* Initialise the present mask - this tells us which CPUs should * be present. 
* Initialise the possible/present maps. * cpu_possible_map describes the set of CPUs which may be present * cpu_present_map describes the set of CPUs populated 
void __init smp_prepare_cpus(unsigned int max_cpus){	unsigned int ncores = get_core_count();	unsigned int cpu = smp_processor_id();	int i;	/* sanity check */	if (ncores == 0) {		printk(KERN_ERR		       "Integrator/CP: strange CM count of 0? Default to 1\n");		ncores = 1;	}	if (ncores > NR_CPUS) {		printk(KERN_WARNING		       "Integrator/CP: no. of cores (%d) greater than configured "		       "maximum of %d - clipping\n",		       ncores, NR_CPUS);		ncores = NR_CPUS;	}	/*	 * start with some more config for the Boot CPU, now that	 * the world is a bit more alive (which was not the case	 * when smp_prepare_boot_cpu() was called)	 */	smp_store_cpu_info(cpu);	/*	 * are we trying to boot more cores than exist?	 */	if (max_cpus > ncores)		max_cpus = ncores;	/*	 * Initialise the present mask - this tells us which CPUs should	 * be present.	 */	for (i = 0; i < max_cpus; i++) {		cpu_set(i, cpu_possible_map);	}	/*	 * Do we need any more CPUs? If so, then let them know where	 * to start. Note that, on modern versions of MILO, the "poke"	 * doesn't actually do anything until each individual core is	 * sent a soft interrupt to get it out of WFI	 */	if (max_cpus > 1)		poke_milo();}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/73eb7d9e8cfd16813eec94d0ec8fa2a5262a85cc/platsmp.c/buggy/arch/arm/mach-integrator/platsmp.c