3.12.38-rt53-rc1 stable review patch.
If anyone has any objections, please let me know.

------------------

From: "Paul E. McKenney" <[email protected]>

upstream commit: 16d937f880312e3f47157d4d6d6ebf7e61523378

The __run_timers() function currently steps through the list one jiffy at
a time in order to update the timer wheel.  However, if the timer wheel
is empty, no adjustment is needed other than updating ->timer_jiffies.
Therefore, if we just emptied the timer wheel, for example, by deleting
the last timer, we should mark the timer wheel as being up to date.
This marking will reduce (and perhaps eliminate) the jiffy-stepping that
a future __run_timers() call will need to do in response to some future
timer posting or migration.  This commit therefore catches ->timer_jiffies
for this case.

Signed-off-by: Paul E. McKenney <[email protected]>
Reviewed-by: Josh Triplett <[email protected]>
Acked-by: Peter Zijlstra <[email protected]>
Reviewed-by: Oleg Nesterov <[email protected]>
Reviewed-by: Steven Rostedt <[email protected]>
Tested-by: Mike Galbraith <[email protected]>
Signed-off-by: Steven Rostedt <[email protected]>
---
 kernel/timer.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/kernel/timer.c b/kernel/timer.c
index 763ca9af64ae..c3017c06f212 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -691,6 +691,7 @@ detach_expired_timer(struct timer_list *timer, struct 
tvec_base *base)
        if (!tbase_get_deferrable(timer->base))
                base->active_timers--;
        base->all_timers--;
+       (void)catchup_timer_jiffies(base);
 }
 
 static int detach_if_pending(struct timer_list *timer, struct tvec_base *base,
@@ -706,6 +707,7 @@ static int detach_if_pending(struct timer_list *timer, 
struct tvec_base *base,
                        base->next_timer = base->timer_jiffies;
        }
        base->all_timers--;
+       (void)catchup_timer_jiffies(base);
        return 1;
 }
 
-- 
2.1.4


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to