Commit-ID: 050ded1bbaea3331745cf2782315f5bc2582d083 Gitweb: http://git.kernel.org/tip/050ded1bbaea3331745cf2782315f5bc2582d083 Author: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> AuthorDate: Fri, 15 Nov 2013 14:15:33 -0800 Committer: Thomas Gleixner <tglx@xxxxxxxxxxxxx> CommitDate: Tue, 19 Nov 2013 14:59:50 +0100 tick: Document tick_do_timer_cpu Taken straight from a tglx email ;) Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx> --- kernel/time/tick-common.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c index 64522ec..162b03a 100644 --- a/kernel/time/tick-common.c +++ b/kernel/time/tick-common.c @@ -33,6 +33,21 @@ DEFINE_PER_CPU(struct tick_device, tick_cpu_device); */ ktime_t tick_next_period; ktime_t tick_period; + +/* + * tick_do_timer_cpu is a timer core internal variable which holds the CPU NR + * which is responsible for calling do_timer(), i.e. the timekeeping stuff. This + * variable has two functions: + * + * 1) Prevent a thundering herd issue of a gazillion of CPUs trying to grab the + * timekeeping lock all at once. Only the CPU which is assigned to do the + * update is handling it. + * + * 2) Hand off the duty in the NOHZ idle case by setting the value to + * TICK_DO_TIMER_NONE, i.e. a non existing CPU. So the next cpu which looks + * at it will take over and keep the time keeping alive. The handover + * procedure also covers cpu hotplug. + */ int tick_do_timer_cpu __read_mostly = TICK_DO_TIMER_BOOT; /* -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html