diff options
-rw-r--r-- | include/linux/tick.h | 20 | ||||
-rw-r--r-- | kernel/time/tick-sched.c | 8 |
2 files changed, 20 insertions, 8 deletions
diff --git a/include/linux/tick.h b/include/linux/tick.h index c60b079e1b37..a7ef1d6fceb6 100644 --- a/include/linux/tick.h +++ b/include/linux/tick.h | |||
@@ -180,20 +180,32 @@ static inline bool tick_nohz_full_cpu(int cpu) | |||
180 | } | 180 | } |
181 | 181 | ||
182 | extern void tick_nohz_init(void); | 182 | extern void tick_nohz_init(void); |
183 | extern void tick_nohz_full_check(void); | 183 | extern void __tick_nohz_full_check(void); |
184 | extern void tick_nohz_full_kick(void); | 184 | extern void tick_nohz_full_kick(void); |
185 | extern void tick_nohz_full_kick_all(void); | 185 | extern void tick_nohz_full_kick_all(void); |
186 | extern void tick_nohz_task_switch(struct task_struct *tsk); | 186 | extern void __tick_nohz_task_switch(struct task_struct *tsk); |
187 | #else | 187 | #else |
188 | static inline void tick_nohz_init(void) { } | 188 | static inline void tick_nohz_init(void) { } |
189 | static inline bool tick_nohz_full_enabled(void) { return false; } | 189 | static inline bool tick_nohz_full_enabled(void) { return false; } |
190 | static inline bool tick_nohz_full_cpu(int cpu) { return false; } | 190 | static inline bool tick_nohz_full_cpu(int cpu) { return false; } |
191 | static inline void tick_nohz_full_check(void) { } | 191 | static inline void __tick_nohz_full_check(void) { } |
192 | static inline void tick_nohz_full_kick(void) { } | 192 | static inline void tick_nohz_full_kick(void) { } |
193 | static inline void tick_nohz_full_kick_all(void) { } | 193 | static inline void tick_nohz_full_kick_all(void) { } |
194 | static inline void tick_nohz_task_switch(struct task_struct *tsk) { } | 194 | static inline void __tick_nohz_task_switch(struct task_struct *tsk) { } |
195 | #endif | 195 | #endif |
196 | 196 | ||
197 | static inline void tick_nohz_full_check(void) | ||
198 | { | ||
199 | if (tick_nohz_full_enabled()) | ||
200 | __tick_nohz_full_check(); | ||
201 | } | ||
202 | |||
203 | static inline void tick_nohz_task_switch(struct task_struct *tsk) | ||
204 | { | ||
205 | if (tick_nohz_full_enabled()) | ||
206 | __tick_nohz_task_switch(tsk); | ||
207 | } | ||
208 | |||
197 | 209 | ||
198 | # ifdef CONFIG_CPU_IDLE_GOV_MENU | 210 | # ifdef CONFIG_CPU_IDLE_GOV_MENU |
199 | extern void menu_hrtimer_cancel(void); | 211 | extern void menu_hrtimer_cancel(void); |
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index 0b7887389bd2..0ff6ae710161 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c | |||
@@ -198,7 +198,7 @@ static void tick_nohz_restart_sched_tick(struct tick_sched *ts, ktime_t now); | |||
198 | * Re-evaluate the need for the tick on the current CPU | 198 | * Re-evaluate the need for the tick on the current CPU |
199 | * and restart it if necessary. | 199 | * and restart it if necessary. |
200 | */ | 200 | */ |
201 | void tick_nohz_full_check(void) | 201 | void __tick_nohz_full_check(void) |
202 | { | 202 | { |
203 | struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched); | 203 | struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched); |
204 | 204 | ||
@@ -212,7 +212,7 @@ void tick_nohz_full_check(void) | |||
212 | 212 | ||
213 | static void nohz_full_kick_work_func(struct irq_work *work) | 213 | static void nohz_full_kick_work_func(struct irq_work *work) |
214 | { | 214 | { |
215 | tick_nohz_full_check(); | 215 | __tick_nohz_full_check(); |
216 | } | 216 | } |
217 | 217 | ||
218 | static DEFINE_PER_CPU(struct irq_work, nohz_full_kick_work) = { | 218 | static DEFINE_PER_CPU(struct irq_work, nohz_full_kick_work) = { |
@@ -231,7 +231,7 @@ void tick_nohz_full_kick(void) | |||
231 | 231 | ||
232 | static void nohz_full_kick_ipi(void *info) | 232 | static void nohz_full_kick_ipi(void *info) |
233 | { | 233 | { |
234 | tick_nohz_full_check(); | 234 | __tick_nohz_full_check(); |
235 | } | 235 | } |
236 | 236 | ||
237 | /* | 237 | /* |
@@ -254,7 +254,7 @@ void tick_nohz_full_kick_all(void) | |||
254 | * It might need the tick due to per task/process properties: | 254 | * It might need the tick due to per task/process properties: |
255 | * perf events, posix cpu timers, ... | 255 | * perf events, posix cpu timers, ... |
256 | */ | 256 | */ |
257 | void tick_nohz_task_switch(struct task_struct *tsk) | 257 | void __tick_nohz_task_switch(struct task_struct *tsk) |
258 | { | 258 | { |
259 | unsigned long flags; | 259 | unsigned long flags; |
260 | 260 | ||