|
@@ -207,22 +207,28 @@ static void __cpuinit smp_callin(void)
|
|
|
* Need to setup vector mappings before we enable interrupts.
|
|
|
*/
|
|
|
setup_vector_irq(smp_processor_id());
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Save our processor parameters. Note: this information
|
|
|
+ * is needed for clock calibration.
|
|
|
+ */
|
|
|
+ smp_store_cpu_info(cpuid);
|
|
|
+
|
|
|
/*
|
|
|
* Get our bogomips.
|
|
|
+ * Update loops_per_jiffy in cpu_data. Previous call to
|
|
|
+ * smp_store_cpu_info() stored a value that is close but not as
|
|
|
+ * accurate as the value just calculated.
|
|
|
*
|
|
|
* Need to enable IRQs because it can take longer and then
|
|
|
* the NMI watchdog might kill us.
|
|
|
*/
|
|
|
local_irq_enable();
|
|
|
calibrate_delay();
|
|
|
+ cpu_data(cpuid).loops_per_jiffy = loops_per_jiffy;
|
|
|
local_irq_disable();
|
|
|
pr_debug("Stack at about %p\n", &cpuid);
|
|
|
|
|
|
- /*
|
|
|
- * Save our processor parameters
|
|
|
- */
|
|
|
- smp_store_cpu_info(cpuid);
|
|
|
-
|
|
|
/*
|
|
|
* This must be done before setting cpu_online_mask
|
|
|
* or calling notify_cpu_starting.
|