On Thu, 20 Apr 2017, Frederic Weisbecker wrote: > On Thu, Apr 20, 2017 at 07:56:22PM +0200, Thomas Gleixner wrote: > > > /* Skip reprogram of event if its not changed */ > > > - if (ts->tick_stopped && (expires == ts->next_tick)) > > > + if (ts->tick_stopped && (expires == ts->next_tick)) { > > > + WARN_ON_ONCE(dev->next_event > ts->next_tick); > > > > What about handling it proper ? dev->next_event might be KTIME_MAX, > > i.e. no more event for the next 500+ years. > > I thought I handled this case, what I'm I missing? if (ts->tick_stopped && (expires == ts->next_tick)) { WARN_ON_ONCE(dev->next_event > ts->next_tick); goto out; } IOW, the WARN_ON yells in dmesg, but despite seing the wreckage it just leaves it and goes out doing nothing. Why can't you just do if (ts->tick_stopped && (expires == ts->next_tick)) { if (dev->next_event > ts->next_tick)) { WARN_ONCE(); do_something_sensible(); } goto out; } Hmm? tglx