git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'stable-3.2' into pandora-3.2
[pandora-kernel.git]
/
init
/
calibrate.c
diff --git
a/init/calibrate.c
b/init/calibrate.c
index
aae2f40
..
24df797
100644
(file)
--- a/
init/calibrate.c
+++ b/
init/calibrate.c
@@
-9,6
+9,7
@@
#include <linux/init.h>
#include <linux/timex.h>
#include <linux/smp.h>
#include <linux/init.h>
#include <linux/timex.h>
#include <linux/smp.h>
+#include <linux/percpu.h>
unsigned long lpj_fine;
unsigned long preset_lpj;
unsigned long lpj_fine;
unsigned long preset_lpj;
@@
-243,12
+244,19
@@
recalibrate:
return lpj;
}
return lpj;
}
+static DEFINE_PER_CPU(unsigned long, cpu_loops_per_jiffy) = { 0 };
+
void __cpuinit calibrate_delay(void)
{
unsigned long lpj;
static bool printed;
void __cpuinit calibrate_delay(void)
{
unsigned long lpj;
static bool printed;
+ int this_cpu = smp_processor_id();
- if (preset_lpj) {
+ if (per_cpu(cpu_loops_per_jiffy, this_cpu)) {
+ lpj = per_cpu(cpu_loops_per_jiffy, this_cpu);
+ pr_info("Calibrating delay loop (skipped) "
+ "already calibrated this CPU");
+ } else if (preset_lpj) {
lpj = preset_lpj;
if (!printed)
pr_info("Calibrating delay loop (skipped) "
lpj = preset_lpj;
if (!printed)
pr_info("Calibrating delay loop (skipped) "
@@
-266,6
+274,7
@@
void __cpuinit calibrate_delay(void)
pr_info("Calibrating delay loop... ");
lpj = calibrate_delay_converge();
}
pr_info("Calibrating delay loop... ");
lpj = calibrate_delay_converge();
}
+ per_cpu(cpu_loops_per_jiffy, this_cpu) = lpj;
if (!printed)
pr_cont("%lu.%02lu BogoMIPS (lpj=%lu)\n",
lpj/(500000/HZ),
if (!printed)
pr_cont("%lu.%02lu BogoMIPS (lpj=%lu)\n",
lpj/(500000/HZ),