diff options
| author | Prasad Sodagudi <psodagud@codeaurora.org> | 2017-04-05 10:17:19 -0700 |
|---|---|---|
| committer | Prasad Sodagudi <psodagud@codeaurora.org> | 2017-04-21 17:24:12 -0700 |
| commit | 883e3ea07e3b725c90e57bbf1200856d07b389ff (patch) | |
| tree | a9182636d2e963ec2f8b8bb29e3bcfb619391793 /kernel/time/tick-sched.c | |
| parent | d44796d6aeafe97d8e14da09d16bebcaf0aa0c5b (diff) | |
sched: Add a check for cpu unbound deferrable timers
Add a check for cpu unbound deferrable timer expiry and raise
softirq for handling the expired timers so that the CPU can
process the cpu unbound deferrable times as early as possible
when a cpu tries to enter/exit idle loop.
Change-Id: Ieffa74fa22a4d25493f5590b5ac1e0d784fcbbad
Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
Diffstat (limited to 'kernel/time/tick-sched.c')
| -rw-r--r-- | kernel/time/tick-sched.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index 651ff1a3a306..ec2102104cb8 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -19,6 +19,7 @@ #include <linux/percpu.h> #include <linux/profile.h> #include <linux/sched.h> +#include <linux/timer.h> #include <linux/module.h> #include <linux/irq_work.h> #include <linux/posix-timers.h> @@ -809,6 +810,11 @@ static void __tick_nohz_idle_enter(struct tick_sched *ts) now = tick_nohz_start_idle(ts); +#ifdef CONFIG_SMP + if (check_pending_deferrable_timers(cpu)) + raise_softirq_irqoff(TIMER_SOFTIRQ); +#endif + if (can_stop_idle_tick(cpu, ts)) { int was_stopped = ts->tick_stopped; |
