preempt_disable(); 
static void __devinit start_secondary(void *unused){	/*	 * Dont put anything before smp_callin(), SMP	 * booting is too fragile that we want to limit the	 * things done here to the most necessary things.	 */	cpu_init();	smp_callin();	while (!cpu_isset(smp_processor_id(), smp_commenced_mask))		rep_nop();	setup_secondary_APIC_clock();	if (nmi_watchdog == NMI_IO_APIC) {		disable_8259A_irq(0);		enable_NMI_through_LVT0(NULL);		enable_8259A_irq(0);	}	enable_APIC_timer();	/*	 * low-memory mappings have been cleared, flush them from	 * the local TLBs too.	 */	local_flush_tlb();	/* This must be done before setting cpu_online_map */	set_cpu_sibling_map(raw_smp_processor_id());	wmb();	/*	 * We need to hold call_lock, so there is no inconsistency	 * between the time smp_call_function() determines number of	 * IPI receipients, and the time when the determination is made	 * for which cpus receive the IPI. Holding this	 * lock helps us to not include this cpu in a currently in progress	 * smp_call_function().	 */	lock_ipi_call_lock();	cpu_set(smp_processor_id(), cpu_online_map);	unlock_ipi_call_lock();	per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE;	/* We can take interrupts now: we're officially "up". */	local_irq_enable();	wmb();	cpu_idle();}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/5bfb5d690f36d316a5f3b4f7775fda996faa6b12/smpboot.c/buggy/arch/i386/kernel/smpboot.c