diff --git a/[refs] b/[refs] index dfccb3e73768..88fff37dfa57 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f26f9aff6aaf67e9a430d16c266f91b13a5bff64 +refs/heads/master: dbd87b5af055a0cc9bba17795c9a2b0d17795389 diff --git a/trunk/kernel/timer.c b/trunk/kernel/timer.c index 7bd715fda974..353b9227c2ec 100644 --- a/trunk/kernel/timer.c +++ b/trunk/kernel/timer.c @@ -1252,6 +1252,12 @@ unsigned long get_next_timer_interrupt(unsigned long now) struct tvec_base *base = __get_cpu_var(tvec_bases); unsigned long expires; + /* + * Pretend that there is no timer pending if the cpu is offline. + * Possible pending timers will be migrated later to an active cpu. + */ + if (cpu_is_offline(smp_processor_id())) + return now + NEXT_TIMER_MAX_DELTA; spin_lock(&base->lock); if (time_before_eq(base->next_timer, base->timer_jiffies)) base->next_timer = __next_timer_interrupt(base);