On Tue, 2017-02-07 at 17:44 +0100, Frederic Weisbecker wrote: > ts->next_tick keeps track of the next tick deadline in order to > optimize > clock programmation on irq exit and avoid redundant clock device > writes. > > Now if ts->next_tick missed an update, we may spuriously miss a clock > reprog later as the nohz code is fooled by an obsolete next_tick > value. > > This is what happens here on a specific path: when we observe an > expired timer from the nohz update code on irq exit, we perform a > soft > tick restart which simply fires the closest possible tick without > actually exiting the nohz mode and restoring a periodic state. But we > forget to update ts->next_tick accordingly. > > As a result, after the next tick resulting from such soft tick > restart, > the nohz code sees a stale value on ts->next_tick which doesn't match > the clock deadline that just expired. If that obsolete ts->next_tick > value happens to collide with the actual next tick deadline to be > scheduled, we may spuriously bypass the clock reprogramming. In the > worst case, the tick may never fire again. > > Lets fix this with a ts->next_tick reset on soft tick restart. > > Signed-off-by: Frederic Weisbecker <fweisbec@xxxxxxxxx> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: Wanpeng Li <wanpeng.li@xxxxxxxxxxx> > Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> > Cc: Rik van Riel <riel@xxxxxxxxxx> > Cc: Ingo Molnar <mingo@xxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Acked-by: Rik van Riel <riel@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html