diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-09 06:30:57 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-09 06:30:57 -0400 |
| commit | afa3536be88b435a057cb727b48fd3d760a497d2 (patch) | |
| tree | 8562d3c8327286746ae835ef8eb39d4494a1054d /include/linux | |
| parent | 35a9ad8af0bb0fa3525e6d0d20e32551d226f38e (diff) | |
| parent | 9b01f5bf3999a3db5b1bbd9fdfd80d8d304e94ee (diff) | |
Merge branch 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer fixes from Ingo Molnar:
"Main changes:
- Fix the deadlock reported by Dave Jones et al
- Clean up and fix nohz_full interaction with arch abilities
- nohz init code consolidation/cleanup"
* 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
nohz: nohz full depends on irq work self IPI support
nohz: Consolidate nohz full init code
arm64: Tell irq work about self IPI support
arm: Tell irq work about self IPI support
x86: Tell irq work about self IPI support
irq_work: Force raised irq work to run on irq work interrupt
irq_work: Introduce arch_irq_work_has_interrupt()
nohz: Move nohz full init call to tick init
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/irq_work.h | 3 | ||||
| -rw-r--r-- | include/linux/tick.h | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/include/linux/irq_work.h b/include/linux/irq_work.h index bf9422c3aefe..bf3fe719c7ce 100644 --- a/include/linux/irq_work.h +++ b/include/linux/irq_work.h | |||
| @@ -39,9 +39,12 @@ bool irq_work_queue_on(struct irq_work *work, int cpu); | |||
| 39 | #endif | 39 | #endif |
| 40 | 40 | ||
| 41 | void irq_work_run(void); | 41 | void irq_work_run(void); |
| 42 | void irq_work_tick(void); | ||
| 42 | void irq_work_sync(struct irq_work *work); | 43 | void irq_work_sync(struct irq_work *work); |
| 43 | 44 | ||
| 44 | #ifdef CONFIG_IRQ_WORK | 45 | #ifdef CONFIG_IRQ_WORK |
| 46 | #include <asm/irq_work.h> | ||
| 47 | |||
| 45 | bool irq_work_needs_cpu(void); | 48 | bool irq_work_needs_cpu(void); |
| 46 | #else | 49 | #else |
| 47 | static inline bool irq_work_needs_cpu(void) { return false; } | 50 | static inline bool irq_work_needs_cpu(void) { return false; } |
diff --git a/include/linux/tick.h b/include/linux/tick.h index 9a82c7dc3fdd..595ee86f5e0d 100644 --- a/include/linux/tick.h +++ b/include/linux/tick.h | |||
| @@ -181,14 +181,12 @@ static inline bool tick_nohz_full_cpu(int cpu) | |||
| 181 | return cpumask_test_cpu(cpu, tick_nohz_full_mask); | 181 | return cpumask_test_cpu(cpu, tick_nohz_full_mask); |
| 182 | } | 182 | } |
| 183 | 183 | ||
| 184 | extern void tick_nohz_init(void); | ||
| 185 | extern void __tick_nohz_full_check(void); | 184 | extern void __tick_nohz_full_check(void); |
| 186 | extern void tick_nohz_full_kick(void); | 185 | extern void tick_nohz_full_kick(void); |
| 187 | extern void tick_nohz_full_kick_cpu(int cpu); | 186 | extern void tick_nohz_full_kick_cpu(int cpu); |
| 188 | extern void tick_nohz_full_kick_all(void); | 187 | extern void tick_nohz_full_kick_all(void); |
| 189 | extern void __tick_nohz_task_switch(struct task_struct *tsk); | 188 | extern void __tick_nohz_task_switch(struct task_struct *tsk); |
| 190 | #else | 189 | #else |
| 191 | static inline void tick_nohz_init(void) { } | ||
| 192 | static inline bool tick_nohz_full_enabled(void) { return false; } | 190 | static inline bool tick_nohz_full_enabled(void) { return false; } |
| 193 | static inline bool tick_nohz_full_cpu(int cpu) { return false; } | 191 | static inline bool tick_nohz_full_cpu(int cpu) { return false; } |
| 194 | static inline void __tick_nohz_full_check(void) { } | 192 | static inline void __tick_nohz_full_check(void) { } |
