powerpc: Fix SMP time initialization problem
We were getting the last_jiffy per-cpu variable set ahead of the current timebase in smp_space_timers on SMP machines. This caused the loop in timer_interrupt to loop virtually forever, since tb_ticks_since assumes that it will never be called with the timebase behind the last_jiffy value. Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
094fe2e712
commit
cbe62e2b4a
1 changed files with 2 additions and 0 deletions
|
@ -484,6 +484,8 @@ void __init smp_space_timers(unsigned int max_cpus)
|
|||
unsigned long offset = tb_ticks_per_jiffy / max_cpus;
|
||||
unsigned long previous_tb = per_cpu(last_jiffy, boot_cpuid);
|
||||
|
||||
/* make sure tb > per_cpu(last_jiffy, cpu) for all cpus always */
|
||||
previous_tb -= tb_ticks_per_jiffy;
|
||||
for_each_cpu(i) {
|
||||
if (i != boot_cpuid) {
|
||||
previous_tb += offset;
|
||||
|
|
Loading…
Reference in a new issue