From: Anson Huang Date: Mon, 4 Jun 2012 12:50:53 +0000 (+0800) Subject: ENGR00211169-1 [SMP]Need to update loops_per_jiffy when cpufreq is changed X-Git-Tag: v3.0.35-fsl_4.1.0~1098 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=4077fb6efd0f43bdb29585de23f61398ebe6fec7;p=karo-tx-linux.git ENGR00211169-1 [SMP]Need to update loops_per_jiffy when cpufreq is changed Need to update loops_per_jiffy when cpufreq is changed, our platform only change the loops_per_jiffy of per_cpu cpu_data, we need to update it to global loops_per_jiffy which is used for udelay. Signed-off-by: Anson Huang --- diff --git a/init/calibrate.c b/init/calibrate.c index 24df7976816c..ebab7b344a65 100644 --- a/init/calibrate.c +++ b/init/calibrate.c @@ -10,6 +10,7 @@ #include #include #include +#include unsigned long lpj_fine; unsigned long preset_lpj; @@ -244,16 +245,14 @@ recalibrate: return lpj; } -static DEFINE_PER_CPU(unsigned long, cpu_loops_per_jiffy) = { 0 }; - void __cpuinit calibrate_delay(void) { unsigned long lpj; static bool printed; int this_cpu = smp_processor_id(); - if (per_cpu(cpu_loops_per_jiffy, this_cpu)) { - lpj = per_cpu(cpu_loops_per_jiffy, this_cpu); + if (per_cpu(cpu_data, this_cpu).loops_per_jiffy) { + lpj = per_cpu(cpu_data, this_cpu).loops_per_jiffy; pr_info("Calibrating delay loop (skipped) " "already calibrated this CPU"); } else if (preset_lpj) { @@ -274,7 +273,7 @@ void __cpuinit calibrate_delay(void) pr_info("Calibrating delay loop... "); lpj = calibrate_delay_converge(); } - per_cpu(cpu_loops_per_jiffy, this_cpu) = lpj; + per_cpu(cpu_data, this_cpu).loops_per_jiffy = lpj; if (!printed) pr_cont("%lu.%02lu BogoMIPS (lpj=%lu)\n", lpj/(500000/HZ),