|
@@ -1651,8 +1651,8 @@ static void __devinit migrate_timers(int cpu)
|
|
|
new_base = get_cpu_var(tvec_bases);
|
|
|
|
|
|
local_irq_disable();
|
|
|
- spin_lock(&new_base->lock);
|
|
|
- spin_lock(&old_base->lock);
|
|
|
+ double_spin_lock(&new_base->lock, &old_base->lock,
|
|
|
+ smp_processor_id() < cpu);
|
|
|
|
|
|
BUG_ON(old_base->running_timer);
|
|
|
|
|
@@ -1665,8 +1665,8 @@ static void __devinit migrate_timers(int cpu)
|
|
|
migrate_timer_list(new_base, old_base->tv5.vec + i);
|
|
|
}
|
|
|
|
|
|
- spin_unlock(&old_base->lock);
|
|
|
- spin_unlock(&new_base->lock);
|
|
|
+ double_spin_unlock(&new_base->lock, &old_base->lock,
|
|
|
+ smp_processor_id() < cpu);
|
|
|
local_irq_enable();
|
|
|
put_cpu_var(tvec_bases);
|
|
|
}
|