Hi all, Today's linux-next merge of the timers tree got a conflict in kernel/time/tick-sched.c between commit c34bec5a44e9486597d78e7a686b2f9088a0564c ("") from Linus' tree and commit cc584b213f252bf698849cf4be2377cd3ec7501a ("hrtimer: convert kernel/* to the new hrtimer apis") from the timers tree. The former moved the code that the latter modified. I fixed it up (see below). -- Cheers, Stephen Rothwell sfr@xxxxxxxxxxxxxxxx http://www.canb.auug.org.au/~sfr/ diff --cc kernel/time/tick-sched.c index 0581c11,55b0e91..0000000 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@@ -377,32 -377,6 +377,32 @@@ ktime_t tick_nohz_get_sleep_length(void return ts->sleep_length; } +static void tick_nohz_restart(struct tick_sched *ts, ktime_t now) +{ + hrtimer_cancel(&ts->sched_timer); - ts->sched_timer.expires = ts->idle_tick; ++ hrtimer_set_expires(&ts->sched_timer, ts->idle_tick); + + while (1) { + /* Forward the time to expire in the future */ + hrtimer_forward(&ts->sched_timer, now, tick_period); + + if (ts->nohz_mode == NOHZ_MODE_HIGHRES) { - hrtimer_start(&ts->sched_timer, - ts->sched_timer.expires, ++ hrtimer_start_expires(&ts->sched_timer, + HRTIMER_MODE_ABS); + /* Check, if the timer was already in the past */ + if (hrtimer_active(&ts->sched_timer)) + break; + } else { - if (!tick_program_event(ts->sched_timer.expires, 0)) ++ if (!tick_program_event( ++ hrtimer_get_expires(&ts->sched_timer), 0)) + break; + } + /* Update jiffies and reread time */ + tick_do_update_jiffies64(now); + now = ktime_get(); + } +} + /** * tick_nohz_restart_sched_tick - restart the idle tick from the idle task * -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html