From 5e8c7c54a9b297dae0081dd19a7bb94e23040a3d Mon Sep 17 00:00:00 2001 From: Joshua Lock Date: Tue, 18 May 2010 14:51:13 +0100 Subject: linux-moblin: add 2.6.33.2 kernel from MeeGo 1.0 Signed-off-by: Joshua Lock --- .../linux-2.6.34-ondemand-fix-6-7.patch | 122 +++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-ondemand-fix-6-7.patch (limited to 'meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-ondemand-fix-6-7.patch') diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-ondemand-fix-6-7.patch b/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-ondemand-fix-6-7.patch new file mode 100644 index 000000000..fb3010592 --- /dev/null +++ b/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-ondemand-fix-6-7.patch @@ -0,0 +1,122 @@ +>From c4dd11703034f2ecbc3180603663fab14c292d7c Mon Sep 17 00:00:00 2001 +From: Arjan van de Ven +Date: Sun, 18 Apr 2010 10:57:43 -0700 +Subject: [PATCH 6/7] sched: introduce get_cpu_iowait_time_us() +Patch-mainline: in -mm tree as of 19 Apr 2010 + +For the ondemand cpufreq governor, it is desired that the iowait +time is microaccounted in a similar way as idle time is. + +This patch introduces the infrastructure to account and expose +this information via the get_cpu_iowait_time_us() function. + +Signed-off-by: Arjan van de Ven +--- + include/linux/tick.h | 4 ++++ + kernel/time/tick-sched.c | 28 ++++++++++++++++++++++++++++ + kernel/time/timer_list.c | 1 + + 3 files changed, 33 insertions(+), 0 deletions(-) + +diff --git a/include/linux/tick.h b/include/linux/tick.h +index 0343eed..4aa3703 100644 +--- a/include/linux/tick.h ++++ b/include/linux/tick.h +@@ -42,6 +42,7 @@ enum tick_nohz_mode { + * @idle_waketime: Time when the idle was interrupted + * @idle_exittime: Time when the idle state was left + * @idle_sleeptime: Sum of the time slept in idle with sched tick stopped ++ * @iowait_sleeptime: Sum of the time slept in idle with sched tick stopped, with IO outstanding + * @sleep_length: Duration of the current idle sleep + * @do_timer_lst: CPU was the last one doing do_timer before going idle + */ +@@ -60,6 +61,7 @@ struct tick_sched { + ktime_t idle_waketime; + ktime_t idle_exittime; + ktime_t idle_sleeptime; ++ ktime_t iowait_sleeptime; + ktime_t sleep_length; + unsigned long last_jiffies; + unsigned long next_jiffies; +@@ -123,6 +125,7 @@ extern void tick_nohz_stop_sched_tick(int inidle); + extern void tick_nohz_restart_sched_tick(void); + extern ktime_t tick_nohz_get_sleep_length(void); + extern u64 get_cpu_idle_time_us(int cpu, u64 *last_update_time); ++extern u64 get_cpu_iowait_time_us(int cpu, u64 *last_update_time); + # else + static inline void tick_nohz_stop_sched_tick(int inidle) { } + static inline void tick_nohz_restart_sched_tick(void) { } +@@ -133,6 +136,7 @@ static inline ktime_t tick_nohz_get_sleep_length(void) + return len; + } + static inline u64 get_cpu_idle_time_us(int cpu, u64 *unused) { return -1; } ++static inline u64 get_cpu_iowait(int cpu, u64 *unused) { return -1; } + # endif /* !NO_HZ */ + + #endif +diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c +index 326f5f8..a6104a8 100644 +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -161,6 +161,8 @@ update_ts_time_stats(struct tick_sched *ts, ktime_t now, u64 *last_update_time) + if (ts->idle_active) { + delta = ktime_sub(now, ts->idle_entrytime); + ts->idle_sleeptime = ktime_add(ts->idle_sleeptime, delta); ++ if (nr_iowait_cpu() > 0) ++ ts->iowait_sleeptime = ktime_add(ts->iowait_sleeptime, delta); + ts->idle_entrytime = now; + } + +@@ -220,6 +222,32 @@ u64 get_cpu_idle_time_us(int cpu, u64 *last_update_time) + } + EXPORT_SYMBOL_GPL(get_cpu_idle_time_us); + ++/* ++ * get_cpu_iowait_time_us - get the total iowait time of a cpu ++ * @cpu: CPU number to query ++ * @last_update_time: variable to store update time in ++ * ++ * Return the cummulative iowait time (since boot) for a given ++ * CPU, in microseconds. ++ * ++ * This time is measured via accounting rather than sampling, ++ * and is as accurate as ktime_get() is. ++ * ++ * This function returns -1 if NOHZ is not enabled. ++ */ ++u64 get_cpu_iowait_time_us(int cpu, u64 *last_update_time) ++{ ++ struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu); ++ ++ if (!tick_nohz_enabled) ++ return -1; ++ ++ update_ts_time_stats(ts, ktime_get(), last_update_time); ++ ++ return ktime_to_us(ts->iowait_sleeptime); ++} ++EXPORT_SYMBOL_GPL(get_cpu_iowait_time_us); ++ + /** + * tick_nohz_stop_sched_tick - stop the idle tick from the idle task + * +diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c +index 1a4a7dd..ab8f5e3 100644 +--- a/kernel/time/timer_list.c ++++ b/kernel/time/timer_list.c +@@ -176,6 +176,7 @@ static void print_cpu(struct seq_file *m, int cpu, u64 now) + P_ns(idle_waketime); + P_ns(idle_exittime); + P_ns(idle_sleeptime); ++ P_ns(iowait_sleeptime); + P(last_jiffies); + P(next_jiffies); + P_ns(idle_expires); +-- +1.6.2.5 + +-- +To unsubscribe from this list: send the line "unsubscribe linux-kernel" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html +Please read the FAQ at http://www.tux.org/lkml/ + -- cgit v1.2.3