diff options
| -rw-r--r-- | include/linux/tick.h | 7 | ||||
| -rw-r--r-- | kernel/time/tick-sched.c | 14 |
2 files changed, 15 insertions, 6 deletions
diff --git a/include/linux/tick.h b/include/linux/tick.h index 059052306831..9a82c7dc3fdd 100644 --- a/include/linux/tick.h +++ b/include/linux/tick.h | |||
| @@ -183,13 +183,8 @@ static inline bool tick_nohz_full_cpu(int cpu) | |||
| 183 | 183 | ||
| 184 | extern void tick_nohz_init(void); | 184 | extern void tick_nohz_init(void); |
| 185 | extern void __tick_nohz_full_check(void); | 185 | extern void __tick_nohz_full_check(void); |
| 186 | extern void tick_nohz_full_kick(void); | ||
| 186 | extern void tick_nohz_full_kick_cpu(int cpu); | 187 | extern void tick_nohz_full_kick_cpu(int cpu); |
| 187 | |||
| 188 | static inline void tick_nohz_full_kick(void) | ||
| 189 | { | ||
| 190 | tick_nohz_full_kick_cpu(smp_processor_id()); | ||
| 191 | } | ||
| 192 | |||
| 193 | extern void tick_nohz_full_kick_all(void); | 188 | extern void tick_nohz_full_kick_all(void); |
| 194 | extern void __tick_nohz_task_switch(struct task_struct *tsk); | 189 | extern void __tick_nohz_task_switch(struct task_struct *tsk); |
| 195 | #else | 190 | #else |
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index 99aa6ee3908f..f654a8a298fa 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c | |||
| @@ -225,6 +225,20 @@ static DEFINE_PER_CPU(struct irq_work, nohz_full_kick_work) = { | |||
| 225 | }; | 225 | }; |
| 226 | 226 | ||
| 227 | /* | 227 | /* |
| 228 | * Kick this CPU if it's full dynticks in order to force it to | ||
| 229 | * re-evaluate its dependency on the tick and restart it if necessary. | ||
| 230 | * This kick, unlike tick_nohz_full_kick_cpu() and tick_nohz_full_kick_all(), | ||
| 231 | * is NMI safe. | ||
| 232 | */ | ||
| 233 | void tick_nohz_full_kick(void) | ||
| 234 | { | ||
| 235 | if (!tick_nohz_full_cpu(smp_processor_id())) | ||
| 236 | return; | ||
| 237 | |||
| 238 | irq_work_queue(&__get_cpu_var(nohz_full_kick_work)); | ||
| 239 | } | ||
| 240 | |||
| 241 | /* | ||
| 228 | * Kick the CPU if it's full dynticks in order to force it to | 242 | * Kick the CPU if it's full dynticks in order to force it to |
| 229 | * re-evaluate its dependency on the tick and restart it if necessary. | 243 | * re-evaluate its dependency on the tick and restart it if necessary. |
| 230 | */ | 244 | */ |
