summaryrefslogtreecommitdiffstats
path: root/meta/recipes-kernel/linux/linux-omap-2.6.29/timer-suppression.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-kernel/linux/linux-omap-2.6.29/timer-suppression.patch')
-rw-r--r--meta/recipes-kernel/linux/linux-omap-2.6.29/timer-suppression.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/meta/recipes-kernel/linux/linux-omap-2.6.29/timer-suppression.patch b/meta/recipes-kernel/linux/linux-omap-2.6.29/timer-suppression.patch
new file mode 100644
index 0000000000..04362c96e3
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-omap-2.6.29/timer-suppression.patch
@@ -0,0 +1,43 @@
1diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
2index b854a89..26f5569 100644
3--- a/kernel/time/tick-sched.c
4+++ b/kernel/time/tick-sched.c
5@@ -253,6 +253,16 @@ void tick_nohz_stop_sched_tick(void)
6
7 /* Schedule the tick, if we are at least one jiffie off */
8 if ((long)delta_jiffies >= 1) {
9+ /*
10+ * calculate the expiry time for the next timer wheel
11+ * timer
12+ */
13+ expires = ktime_add_ns(last_update, tick_period.tv64 *
14+ delta_jiffies);
15+
16+ /* Skip reprogram of event if its not changed */
17+ if(ts->tick_stopped && ktime_equal(expires, dev->next_event))
18+ goto out2;
19
20 if (delta_jiffies > 1)
21 cpu_set(cpu, nohz_cpu_mask);
22@@ -304,12 +314,7 @@ void tick_nohz_stop_sched_tick(void)
23 goto out;
24 }
25
26- /*
27- * calculate the expiry time for the next timer wheel
28- * timer
29- */
30- expires = ktime_add_ns(last_update, tick_period.tv64 *
31- delta_jiffies);
32+ /* Mark expiries */
33 ts->idle_expires = expires;
34
35 if (ts->nohz_mode == NOHZ_MODE_HIGHRES) {
36@@ -328,6 +333,7 @@ void tick_nohz_stop_sched_tick(void)
37 tick_do_update_jiffies64(ktime_get());
38 cpu_clear(cpu, nohz_cpu_mask);
39 }
40+out2:
41 raise_softirq_irqoff(TIMER_SOFTIRQ);
42 out:
43 ts->next_jiffies = next_jiffies;