Merge branch 'v28-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'v28-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  NOHZ: fix thinko in the timer restart code path
This commit is contained in:
Linus Torvalds 2008-10-23 09:57:16 -07:00
Родитель 6770ab5cf5 c4bd822e7b
Коммит b14ea38e13
1 изменённых файлов: 11 добавлений и 1 удалений

Просмотреть файл

@ -567,11 +567,21 @@ static void tick_nohz_switch_to_nohz(void)
static void tick_nohz_kick_tick(int cpu) static void tick_nohz_kick_tick(int cpu)
{ {
struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu); struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu);
ktime_t delta, now;
if (!ts->tick_stopped) if (!ts->tick_stopped)
return; return;
tick_nohz_restart(ts, ktime_get()); /*
* Do not touch the tick device, when the next expiry is either
* already reached or less/equal than the tick period.
*/
now = ktime_get();
delta = ktime_sub(ts->sched_timer.expires, now);
if (delta.tv64 <= tick_period.tv64)
return;
tick_nohz_restart(ts, now);
} }
#else #else