]> git.baikalelectronics.ru Git - kernel.git/commit
timer: Allocate per-cpu tvec_base's statically
authorPeter Zijlstra <peterz@infradead.org>
Tue, 31 Mar 2015 15:19:00 +0000 (20:49 +0530)
committerIngo Molnar <mingo@kernel.org>
Thu, 2 Apr 2015 15:46:00 +0000 (17:46 +0200)
commitd33d480c9d439b4d2d8bb1e67317e1c3498e6667
tree2cf1f6d3e69a57782d3d0ed71533aace12e00150
parente724d06b8f1ce24e73efba48ca5beecf1794205d
timer: Allocate per-cpu tvec_base's statically

Memory for the 'tvec_base' array is allocated separately for the boot CPU (statically)
and non-boot CPUs (dynamically).

The reason is because __TIMER_INITIALIZER() needs to set ->base to a
valid pointer (because we've made NULL special, hint: lock_timer_base())
and we cannot get a compile time pointer to per-cpu entries because we
don't know where we'll map the section, even for the boot cpu.

This can be simplified a bit by statically allocating per-cpu memory.
The only disadvantage is that memory for one of the structures will stay
unused, i.e. for the boot CPU, which uses boot_tvec_bases.

This will also guarantee that tvec_base is cacheline aligned. Even
though tvec_base has ____cacheline_aligned stuck on, kzalloc_node() does
not actually respect that (but guarantees a minimum u64 alignment).

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/17cdf560f2727f687ab159707d0aa591f8a2f82d.1427814611.git.viresh.kumar@linaro.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/time/timer.c