aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/timer.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/timer.c')
-rw-r--r--kernel/timer.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/kernel/timer.c b/kernel/timer.c
index ee305c8d4e18..d61d16da0b64 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -577,6 +577,19 @@ static void __init_timer(struct timer_list *timer,
577 lockdep_init_map(&timer->lockdep_map, name, key, 0); 577 lockdep_init_map(&timer->lockdep_map, name, key, 0);
578} 578}
579 579
580void setup_deferrable_timer_on_stack_key(struct timer_list *timer,
581 const char *name,
582 struct lock_class_key *key,
583 void (*function)(unsigned long),
584 unsigned long data)
585{
586 timer->function = function;
587 timer->data = data;
588 init_timer_on_stack_key(timer, name, key);
589 timer_set_deferrable(timer);
590}
591EXPORT_SYMBOL_GPL(setup_deferrable_timer_on_stack_key);
592
580/** 593/**
581 * init_timer_key - initialize a timer 594 * init_timer_key - initialize a timer
582 * @timer: the timer to be initialized 595 * @timer: the timer to be initialized
@@ -679,12 +692,8 @@ __mod_timer(struct timer_list *timer, unsigned long expires,
679 cpu = smp_processor_id(); 692 cpu = smp_processor_id();
680 693
681#if defined(CONFIG_NO_HZ) && defined(CONFIG_SMP) 694#if defined(CONFIG_NO_HZ) && defined(CONFIG_SMP)
682 if (!pinned && get_sysctl_timer_migration() && idle_cpu(cpu)) { 695 if (!pinned && get_sysctl_timer_migration() && idle_cpu(cpu))
683 int preferred_cpu = get_nohz_load_balancer(); 696 cpu = get_nohz_timer_target();
684
685 if (preferred_cpu >= 0)
686 cpu = preferred_cpu;
687 }
688#endif 697#endif
689 new_base = per_cpu(tvec_bases, cpu); 698 new_base = per_cpu(tvec_bases, cpu);
690 699
@@ -1289,7 +1298,6 @@ void run_local_timers(void)
1289{ 1298{
1290 hrtimer_run_queues(); 1299 hrtimer_run_queues();
1291 raise_softirq(TIMER_SOFTIRQ); 1300 raise_softirq(TIMER_SOFTIRQ);
1292 softlockup_tick();
1293} 1301}
1294 1302
1295/* 1303/*