summaryrefslogtreecommitdiffstats
path: root/kernel/time/hrtimer.c
diff options
context:
space:
mode:
authorViresh Kumar2014-06-22 01:29:15 +0200
committerThomas Gleixner2014-06-23 11:23:47 +0200
commitcddd02489f52ccf635ed65931214729a23b93cd6 (patch)
tree844c14213e011c2a2c3c13cd0fd60f22958f6508 /kernel/time/hrtimer.c
parenttimer: Kick dynticks targets on mod_timer*() calls (diff)
downloadkernel-qcow2-linux-cddd02489f52ccf635ed65931214729a23b93cd6.tar.gz
kernel-qcow2-linux-cddd02489f52ccf635ed65931214729a23b93cd6.tar.xz
kernel-qcow2-linux-cddd02489f52ccf635ed65931214729a23b93cd6.zip
hrtimer: Store cpu-number in struct hrtimer_cpu_base
In lowres mode, hrtimers are serviced by the tick instead of a clock event. Now it works well as long as the tick stays periodic but we must also make sure that the hrtimers are serviced in dynticks mode. Part of that job consist in kicking a dynticks hrtimer target in order to make it reconsider the next tick to schedule to correctly handle the hrtimer's expiring time. And that part isn't handled by the hrtimers subsystem. To prepare for fixing this, we need __hrtimer_start_range_ns() to be able to resolve the CPU target associated to a hrtimer's object 'cpu_base' so that the kick can be centralized there. So lets store it in the 'struct hrtimer_cpu_base' to resolve the CPU without overhead. It is set once at CPU's online notification. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Link: http://lkml.kernel.org/r/1403393357-2070-4-git-send-email-fweisbec@gmail.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/time/hrtimer.c')
-rw-r--r--kernel/time/hrtimer.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 3ab28993f6e0..0e32d4e7583f 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -1680,6 +1680,7 @@ static void init_hrtimers_cpu(int cpu)
timerqueue_init_head(&cpu_base->clock_base[i].active);
}
+ cpu_base->cpu = cpu;
hrtimer_init_hres(cpu_base);
}