mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 21:54:34 -04:00
Merge "timer: Add a global deferrable timer"
This commit is contained in:
commit
ae2bbf5551
2 changed files with 16 additions and 5 deletions
|
|
@ -172,6 +172,8 @@ extern void add_timer(struct timer_list *timer);
|
|||
|
||||
extern int try_to_del_timer_sync(struct timer_list *timer);
|
||||
|
||||
extern struct timer_base timer_base_deferrable;
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
extern int del_timer_sync(struct timer_list *timer);
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -206,6 +206,7 @@ struct timer_base {
|
|||
} ____cacheline_aligned;
|
||||
|
||||
static DEFINE_PER_CPU(struct timer_base, timer_bases[NR_BASES]);
|
||||
struct timer_base timer_base_deferrable;
|
||||
|
||||
#ifdef CONFIG_NO_HZ_COMMON
|
||||
|
||||
|
|
@ -837,8 +838,11 @@ static inline struct timer_base *get_timer_cpu_base(u32 tflags, u32 cpu)
|
|||
* If the timer is deferrable and NO_HZ_COMMON is set then we need
|
||||
* to use the deferrable base.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_NO_HZ_COMMON) && (tflags & TIMER_DEFERRABLE))
|
||||
base = per_cpu_ptr(&timer_bases[BASE_DEF], cpu);
|
||||
if (IS_ENABLED(CONFIG_NO_HZ_COMMON) && (tflags & TIMER_DEFERRABLE)) {
|
||||
base = &timer_base_deferrable;
|
||||
if (tflags & TIMER_PINNED)
|
||||
base = per_cpu_ptr(&timer_bases[BASE_DEF], cpu);
|
||||
}
|
||||
return base;
|
||||
}
|
||||
|
||||
|
|
@ -850,8 +854,11 @@ static inline struct timer_base *get_timer_this_cpu_base(u32 tflags)
|
|||
* If the timer is deferrable and NO_HZ_COMMON is set then we need
|
||||
* to use the deferrable base.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_NO_HZ_COMMON) && (tflags & TIMER_DEFERRABLE))
|
||||
base = this_cpu_ptr(&timer_bases[BASE_DEF]);
|
||||
if (IS_ENABLED(CONFIG_NO_HZ_COMMON) && (tflags & TIMER_DEFERRABLE)) {
|
||||
base = &timer_base_deferrable;
|
||||
if (tflags & TIMER_PINNED)
|
||||
base = this_cpu_ptr(&timer_bases[BASE_DEF]);
|
||||
}
|
||||
return base;
|
||||
}
|
||||
|
||||
|
|
@ -1696,8 +1703,10 @@ static __latent_entropy void run_timer_softirq(struct softirq_action *h)
|
|||
struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]);
|
||||
|
||||
__run_timers(base);
|
||||
if (IS_ENABLED(CONFIG_NO_HZ_COMMON))
|
||||
if (IS_ENABLED(CONFIG_NO_HZ_COMMON)) {
|
||||
__run_timers(&timer_base_deferrable);
|
||||
__run_timers(this_cpu_ptr(&timer_bases[BASE_DEF]));
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in a new issue