aboutsummaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-12-08 22:27:08 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-12-08 22:27:08 -0500
commit60d8ce2cd6c283132928c11f3fd57ff4187287e0 (patch)
tree36d08a2ead7a7d8c3c081d484215ccca00bf6aab /init
parent849e8dea099aafa56db9e74b580b0d858b956533 (diff)
parentfeae3203d711db0a9965300ee6d592257fdaae4f (diff)
Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: timers, init: Limit the number of per cpu calibration bootup messages posix-cpu-timers: optimize and document timer_create callback clockevents: Add missing include to pacify sparse x86: vmiclock: Fix printk format x86: Fix printk format due to variable type change sparc: fix printk for change of variable type clocksource/events: Fix fallout of generic code changes nohz: Allow 32-bit machines to sleep for more than 2.15 seconds nohz: Track last do_timer() cpu nohz: Prevent clocksource wrapping during idle nohz: Type cast printk argument mips: Use generic mult/shift factor calculation for clocks clocksource: Provide a generic mult/shift factor calculation clockevents: Use u32 for mult and shift factors nohz: Introduce arch_needs_cpu nohz: Reuse ktime in sub-functions of tick_check_idle. time: Remove xtime_cache time: Implement logarithmic time accumulation
Diffstat (limited to 'init')
-rw-r--r--init/calibrate.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/init/calibrate.c b/init/calibrate.c
index a379c906119..6eb48e53d61 100644
--- a/init/calibrate.c
+++ b/init/calibrate.c
@@ -123,23 +123,26 @@ void __cpuinit calibrate_delay(void)
123{ 123{
124 unsigned long ticks, loopbit; 124 unsigned long ticks, loopbit;
125 int lps_precision = LPS_PREC; 125 int lps_precision = LPS_PREC;
126 static bool printed;
126 127
127 if (preset_lpj) { 128 if (preset_lpj) {
128 loops_per_jiffy = preset_lpj; 129 loops_per_jiffy = preset_lpj;
129 printk(KERN_INFO 130 if (!printed)
130 "Calibrating delay loop (skipped) preset value.. "); 131 pr_info("Calibrating delay loop (skipped) "
131 } else if ((smp_processor_id() == 0) && lpj_fine) { 132 "preset value.. ");
133 } else if ((!printed) && lpj_fine) {
132 loops_per_jiffy = lpj_fine; 134 loops_per_jiffy = lpj_fine;
133 printk(KERN_INFO 135 pr_info("Calibrating delay loop (skipped), "
134 "Calibrating delay loop (skipped), "
135 "value calculated using timer frequency.. "); 136 "value calculated using timer frequency.. ");
136 } else if ((loops_per_jiffy = calibrate_delay_direct()) != 0) { 137 } else if ((loops_per_jiffy = calibrate_delay_direct()) != 0) {
137 printk(KERN_INFO 138 if (!printed)
138 "Calibrating delay using timer specific routine.. "); 139 pr_info("Calibrating delay using timer "
140 "specific routine.. ");
139 } else { 141 } else {
140 loops_per_jiffy = (1<<12); 142 loops_per_jiffy = (1<<12);
141 143
142 printk(KERN_INFO "Calibrating delay loop... "); 144 if (!printed)
145 pr_info("Calibrating delay loop... ");
143 while ((loops_per_jiffy <<= 1) != 0) { 146 while ((loops_per_jiffy <<= 1) != 0) {
144 /* wait for "start of" clock tick */ 147 /* wait for "start of" clock tick */
145 ticks = jiffies; 148 ticks = jiffies;
@@ -170,7 +173,10 @@ void __cpuinit calibrate_delay(void)
170 loops_per_jiffy &= ~loopbit; 173 loops_per_jiffy &= ~loopbit;
171 } 174 }
172 } 175 }
173 printk(KERN_CONT "%lu.%02lu BogoMIPS (lpj=%lu)\n", 176 if (!printed)
177 pr_cont("%lu.%02lu BogoMIPS (lpj=%lu)\n",
174 loops_per_jiffy/(500000/HZ), 178 loops_per_jiffy/(500000/HZ),
175 (loops_per_jiffy/(5000/HZ)) % 100, loops_per_jiffy); 179 (loops_per_jiffy/(5000/HZ)) % 100, loops_per_jiffy);
180
181 printed = true;
176} 182}