static void smp_callin(void)
{
int cpuid;
-
+ cycles_t t[6];
/*
* If waken up by an INIT in an 82489DX configuration
* cpu_callout_mask guarantees we don't get here before
*/
cpuid = smp_processor_id();
+ t[0] = get_cycles();
/*
* the boot CPU has finished the init stage and is spinning
* on callin_map until we finish. We are free to set up this
* boards)
*/
apic_ap_setup();
+ t[1] = get_cycles();
/*
* Save our processor parameters and update topology.
* calibrate_delay() and notify_cpu_starting().
*/
smp_store_cpu_info(cpuid, false);
+ t[2] = get_cycles();
init_freq_invariance(true, false);
+ t[3] = get_cycles();
/*
* Get our bogomips.
calibrate_delay();
cpu_data(cpuid).loops_per_jiffy = loops_per_jiffy;
pr_debug("Stack at about %p\n", &cpuid);
+ t[4] = get_cycles();
wmb();
-
/*
* This runs the AP through all the cpuhp states to its target
* state (CPUHP_ONLINE in the case of serial bringup).
*/
notify_cpu_starting(cpuid);
-
+ t[5] = get_cycles();
/*
* Allow the master to continue.
*/
cpumask_set_cpu(cpuid, cpu_callin_mask);
+ printk("callin CPU %d started in %lld %lld %lld %lld %lld cycles\n", cpuid,
+ t[1] - t[0], t[2] - t[1], t[3] - t[2], t[4] - t[3], t[5] - t[4]);
}
static int cpu0_logical_apicid;