Hi, For my rcu implementation, I try to figure out how the boot process for secondary cpus works. arch/ia64/kernel/smpboot.c contains the following code: > static void __cpuinit > smp_callin (void) > { > [snip] > per_cpu(cpu_state, cpuid) = CPU_ONLINE; > spin_unlock(&vector_lock); > ipi_call_unlock_irq(); > <<<<< > <<<<< ipi_call_unlock_irq() does local_irq_enable() > <<<<< > smp_setup_percpu_timer(); > > ia64_mca_cmc_vector_setup(); /* Setup vector on AP */ > > #ifdef CONFIG_PERFMON > pfm_init_percpu(); > #endif > > local_irq_enable(); > <<<<< > <<<<< Another local_irq_enable(). > <<<<< Which of these two local_irq_enable()'s is the right one? And: IMHO it's unclean to abuse ipi_call_unlock_irq() to enable the local interrupts. What about the attached patch? Untested due to lack of test hardware. -- Manfred