Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[~shefty/rdma-dev.git] / arch / x86 / kernel / smpboot.c
index 79f636bc44c6ca9f50852eae371a9fa8ac447a61..66d250c00d115bbaae4c7ab0917ce9c0dfe89643 100644 (file)
@@ -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.