linux omap2 git: add patch to surpress spurious timer reprogramming
authorKoen Kooi <koen@openembedded.org>
Fri, 20 Jun 2008 12:27:02 +0000 (12:27 +0000)
committerKoen Kooi <koen@openembedded.org>
Fri, 20 Jun 2008 12:27:02 +0000 (12:27 +0000)
packages/linux/linux-omap2-git/beagleboard/timer-suppression.patch [new file with mode: 0644]
packages/linux/linux-omap2_git.bb

diff --git a/packages/linux/linux-omap2-git/beagleboard/timer-suppression.patch b/packages/linux/linux-omap2-git/beagleboard/timer-suppression.patch
new file mode 100644 (file)
index 0000000..04362c9
--- /dev/null
@@ -0,0 +1,43 @@
+diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
+index b854a89..26f5569 100644
+--- a/kernel/time/tick-sched.c
++++ b/kernel/time/tick-sched.c
+@@ -253,6 +253,16 @@ void tick_nohz_stop_sched_tick(void)
+       /* Schedule the tick, if we are at least one jiffie off */
+       if ((long)delta_jiffies >= 1) {
++              /*
++               * calculate the expiry time for the next timer wheel
++               * timer
++               */
++              expires = ktime_add_ns(last_update, tick_period.tv64 *
++                                      delta_jiffies);
++
++              /* Skip reprogram of event if its not changed */
++              if(ts->tick_stopped && ktime_equal(expires, dev->next_event))
++              goto out2;
+               if (delta_jiffies > 1)
+                       cpu_set(cpu, nohz_cpu_mask);
+@@ -304,12 +314,7 @@ void tick_nohz_stop_sched_tick(void)
+                       goto out;
+               }
+-              /*
+-               * calculate the expiry time for the next timer wheel
+-               * timer
+-               */
+-              expires = ktime_add_ns(last_update, tick_period.tv64 *
+-                                     delta_jiffies);
++              /* Mark expiries */
+               ts->idle_expires = expires;
+               if (ts->nohz_mode == NOHZ_MODE_HIGHRES) {
+@@ -328,6 +333,7 @@ void tick_nohz_stop_sched_tick(void)
+               tick_do_update_jiffies64(ktime_get());
+               cpu_clear(cpu, nohz_cpu_mask);
+       }
++out2: 
+       raise_softirq_irqoff(TIMER_SOFTIRQ);
+ out:
+       ts->next_jiffies = next_jiffies;
index 3a0d65d..90ccda5 100644 (file)
@@ -5,7 +5,7 @@ FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-omap2-git/${MA
 SRCREV = "5b97d3ec6732c87741b2fc04f2956f097a458818"
 
 PV = "2.6.25+2.6.26-rc6+${PR}+git${SRCREV}"
-PR = "r25"
+PR = "r26"
 
 
 SRC_URI = "git://source.mvista.com/git/linux-omap-2.6.git;protocol=git \
@@ -19,6 +19,7 @@ SRC_URI_append_beagleboard = " file://no-harry-potter.diff;patch=1 \
               file://0003-ARM-OMAP-SmartReflex-driver.patch;patch=1 \
            file://0001-omap3-cpuidle.patch;patch=1 \ 
            file://0002-omap3-cpuidle.patch;patch=1 \
+           file://timer-suppression.patch;patch=1 \
 "
 
 SRC_URI_append_omap3evm = " file://no-harry-potter.diff;patch=1 \