smp_boot_cpus(max_cpus); 
int i;  nmi_watchdog_default(); current_cpu_data = boot_cpu_data; current_thread_info()->cpu = 0;  /* needed? */  enforce_max_cpus(max_cpus);  /* * Fill in cpu_present_mask */ for (i = 0; i < NR_CPUS; i++) { int apicid = cpu_present_to_apicid(i); if (physid_isset(apicid, phys_cpu_present_map)) { cpu_set(i, cpu_present_map); /* possible map would be different if we supported real CPU hotplug. */ cpu_set(i, cpu_possible_map); } }  if (smp_sanity_check(max_cpus) < 0) { printk(KERN_INFO "SMP disabled\n"); disable_smp(); return; }   /* * Switch from PIC to APIC mode. */ connect_bsp_APIC(); setup_local_APIC();  if (GET_APIC_ID(apic_read(APIC_ID)) != boot_cpu_id) { panic("Boot APIC ID in local APIC unexpected (%d vs %d)", GET_APIC_ID(apic_read(APIC_ID)), boot_cpu_id); /* Or can we switch back to PIC here? */ } x86_cpu_to_apicid[0] = boot_cpu_id;  /* * Now start the IO-APICs */ if (!skip_ioapic_setup && nr_ioapics) setup_IO_APIC(); else nr_ioapics = 0;  /* * Set up local APIC timer on boot CPU. */  setup_boot_APIC_clock(); 
void __init smp_prepare_cpus(unsigned int max_cpus){	smp_boot_cpus(max_cpus);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/a8ab26fe5bfeef43bdcde5182ca051ae0647607e/smpboot.c/clean/arch/x86_64/kernel/smpboot.c