aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2015-03-25 08:11:52 -0400
committerIngo Molnar <mingo@kernel.org>2015-04-01 08:23:00 -0400
commit7270d11c56f594af4d166b2988421cd8ed933dc1 (patch)
tree365c2781c48eb4af0174e0fc05d9aa9a5bc0a1cf /kernel/time
parentf46481d0a7cb942b84145acb80ad43bdb1ff8eb4 (diff)
arm/bL_switcher: Kill tick suspend hackery
Use the new tick_suspend/resume_local() and get rid of the homebrewn implementation of these in the ARM bL switcher. The check for the cpumask is completely pointless. There is no harm to suspend a per cpu tick device unconditionally. If that's a real issue then we fix it proper at the core level and not with some completely undocumented hacks in some random core code. Move the tick internals to the core code, now that this nuisance is gone. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> [ rjw: Rebase, changelog ] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Cc: Nicolas Pitre <nicolas.pitre@linaro.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Russell King <rmk+kernel@arm.linux.org.uk> Link: http://lkml.kernel.org/r/1655112.Ws17YsMfN7@vostro.rjw.lan Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/time')
-rw-r--r--kernel/time/tick-common.c2
-rw-r--r--kernel/time/tick-internal.h5
-rw-r--r--kernel/time/tick-sched.h10
3 files changed, 16 insertions, 1 deletions
diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c
index da796d65d1fb..e28ba5c044c5 100644
--- a/kernel/time/tick-common.c
+++ b/kernel/time/tick-common.c
@@ -380,7 +380,7 @@ void tick_shutdown(unsigned int *cpup)
380 * 380 *
381 * No locks required. Nothing can change the per cpu device. 381 * No locks required. Nothing can change the per cpu device.
382 */ 382 */
383static void tick_suspend_local(void) 383void tick_suspend_local(void)
384{ 384{
385 struct tick_device *td = this_cpu_ptr(&tick_cpu_device); 385 struct tick_device *td = this_cpu_ptr(&tick_cpu_device);
386 386
diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h
index 6ba7bce732f2..5fc2dafabd58 100644
--- a/kernel/time/tick-internal.h
+++ b/kernel/time/tick-internal.h
@@ -28,6 +28,7 @@ extern bool tick_check_replacement(struct clock_event_device *curdev,
28 struct clock_event_device *newdev); 28 struct clock_event_device *newdev);
29extern void tick_install_replacement(struct clock_event_device *dev); 29extern void tick_install_replacement(struct clock_event_device *dev);
30extern int tick_is_oneshot_available(void); 30extern int tick_is_oneshot_available(void);
31extern struct tick_device *tick_get_device(int cpu);
31 32
32extern int clockevents_tick_resume(struct clock_event_device *dev); 33extern int clockevents_tick_resume(struct clock_event_device *dev);
33/* Check, if the device is functional or a dummy for broadcast */ 34/* Check, if the device is functional or a dummy for broadcast */
@@ -39,6 +40,10 @@ static inline int tick_device_is_functional(struct clock_event_device *dev)
39extern void clockevents_shutdown(struct clock_event_device *dev); 40extern void clockevents_shutdown(struct clock_event_device *dev);
40extern void clockevents_exchange_device(struct clock_event_device *old, 41extern void clockevents_exchange_device(struct clock_event_device *old,
41 struct clock_event_device *new); 42 struct clock_event_device *new);
43extern void clockevents_set_state(struct clock_event_device *dev,
44 enum clock_event_state state);
45extern int clockevents_program_event(struct clock_event_device *dev,
46 ktime_t expires, bool force);
42extern void clockevents_handle_noop(struct clock_event_device *dev); 47extern void clockevents_handle_noop(struct clock_event_device *dev);
43extern int __clockevents_update_freq(struct clock_event_device *dev, u32 freq); 48extern int __clockevents_update_freq(struct clock_event_device *dev, u32 freq);
44extern ssize_t sysfs_get_uname(const char *buf, char *dst, size_t cnt); 49extern ssize_t sysfs_get_uname(const char *buf, char *dst, size_t cnt);
diff --git a/kernel/time/tick-sched.h b/kernel/time/tick-sched.h
index 930743249127..28b5da3e1a17 100644
--- a/kernel/time/tick-sched.h
+++ b/kernel/time/tick-sched.h
@@ -3,6 +3,16 @@
3 3
4#include <linux/hrtimer.h> 4#include <linux/hrtimer.h>
5 5
6enum tick_device_mode {
7 TICKDEV_MODE_PERIODIC,
8 TICKDEV_MODE_ONESHOT,
9};
10
11struct tick_device {
12 struct clock_event_device *evtdev;
13 enum tick_device_mode mode;
14};
15
6enum tick_nohz_mode { 16enum tick_nohz_mode {
7 NOHZ_MODE_INACTIVE, 17 NOHZ_MODE_INACTIVE,
8 NOHZ_MODE_LOWRES, 18 NOHZ_MODE_LOWRES,