diff options
author | Koen Kooi <koen@openembedded.org> | 2008-06-20 12:27:02 +0000 |
---|---|---|
committer | Koen Kooi <koen@openembedded.org> | 2008-06-20 12:27:02 +0000 |
commit | bbaf0afc9b28644b357f284ad27c9e40e015d2de (patch) | |
tree | e4bbe78f6edc0003938a07b044c5244d0f7f45c0 | |
parent | 86f6fb7c542080df0d1af0f79420c9a7be82aa89 (diff) |
linux omap2 git: add patch to surpress spurious timer reprogramming
-rw-r--r-- | packages/linux/linux-omap2-git/beagleboard/timer-suppression.patch | 43 | ||||
-rw-r--r-- | packages/linux/linux-omap2_git.bb | 3 |
2 files changed, 45 insertions, 1 deletions
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 index 0000000000..04362c96e3 --- /dev/null +++ b/packages/linux/linux-omap2-git/beagleboard/timer-suppression.patch @@ -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; diff --git a/packages/linux/linux-omap2_git.bb b/packages/linux/linux-omap2_git.bb index 3a0d65d6d1..90ccda57f4 100644 --- a/packages/linux/linux-omap2_git.bb +++ b/packages/linux/linux-omap2_git.bb @@ -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 \ |