{
struct task_struct *idle = idle_thread_get(cpu);
int ret;
-
+ cycles_t t[3];
/*
* Some architectures have to walk the irq descriptors to
* setup the vector space for the cpu which comes online.
* Prevent irq alloc/free across the bringup.
*/
+ t[0] = get_cycles();
irq_lock_sparse();
/* Arch-specific enabling code. */
ret = __cpu_up(cpu, idle);
irq_unlock_sparse();
+ t[1] = get_cycles();
if (ret)
return ret;
- return bringup_wait_for_ap(cpu);
+
+ ret = bringup_wait_for_ap(cpu);
+ t[2] = get_cycles();
+
+ printk("Bringup CPU %d took %lld, %lld cycles\n", cpu,
+ t[1] - t[0], t[2] - t[1]);
+ return ret;
}
static int finish_cpu(unsigned int cpu)