aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/hrtimer.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
index 8f7001c97e06..9c2bfa841281 100644
--- a/kernel/hrtimer.c
+++ b/kernel/hrtimer.c
@@ -1504,6 +1504,11 @@ static void __cpuinit init_hrtimers_cpu(int cpu)
1504 1504
1505#ifdef CONFIG_HOTPLUG_CPU 1505#ifdef CONFIG_HOTPLUG_CPU
1506 1506
1507static void tickle_timers(void *arg)
1508{
1509 hrtimer_peek_ahead_timers();
1510}
1511
1507static void migrate_hrtimer_list(struct hrtimer_clock_base *old_base, 1512static void migrate_hrtimer_list(struct hrtimer_clock_base *old_base,
1508 struct hrtimer_clock_base *new_base) 1513 struct hrtimer_clock_base *new_base)
1509{ 1514{
@@ -1539,7 +1544,7 @@ static void migrate_hrtimer_list(struct hrtimer_clock_base *old_base,
1539 } 1544 }
1540} 1545}
1541 1546
1542static int migrate_hrtimers(int scpu) 1547static void migrate_hrtimers(int scpu)
1543{ 1548{
1544 struct hrtimer_cpu_base *old_base, *new_base; 1549 struct hrtimer_cpu_base *old_base, *new_base;
1545 int dcpu, i; 1550 int dcpu, i;
@@ -1567,12 +1572,7 @@ static int migrate_hrtimers(int scpu)
1567 spin_unlock_irq(&new_base->lock); 1572 spin_unlock_irq(&new_base->lock);
1568 put_cpu_var(hrtimer_bases); 1573 put_cpu_var(hrtimer_bases);
1569 1574
1570 return dcpu; 1575 smp_call_function_single(dcpu, tickle_timers, NULL, 0);
1571}
1572
1573static void tickle_timers(void *arg)
1574{
1575 hrtimer_peek_ahead_timers();
1576} 1576}
1577 1577
1578#endif /* CONFIG_HOTPLUG_CPU */ 1578#endif /* CONFIG_HOTPLUG_CPU */
@@ -1593,11 +1593,8 @@ static int __cpuinit hrtimer_cpu_notify(struct notifier_block *self,
1593 case CPU_DEAD: 1593 case CPU_DEAD:
1594 case CPU_DEAD_FROZEN: 1594 case CPU_DEAD_FROZEN:
1595 { 1595 {
1596 int dcpu;
1597
1598 clockevents_notify(CLOCK_EVT_NOTIFY_CPU_DEAD, &scpu); 1596 clockevents_notify(CLOCK_EVT_NOTIFY_CPU_DEAD, &scpu);
1599 dcpu = migrate_hrtimers(scpu); 1597 migrate_hrtimers(scpu);
1600 smp_call_function_single(dcpu, tickle_timers, NULL, 0);
1601 break; 1598 break;
1602 } 1599 }
1603#endif 1600#endif