summaryrefslogtreecommitdiffstats
path: root/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-ondemand-fix-3-7.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-ondemand-fix-3-7.patch')
-rw-r--r--meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-ondemand-fix-3-7.patch62
1 files changed, 62 insertions, 0 deletions
diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-ondemand-fix-3-7.patch b/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-ondemand-fix-3-7.patch
new file mode 100644
index 0000000000..56c09f7bfb
--- /dev/null
+++ b/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-ondemand-fix-3-7.patch
@@ -0,0 +1,62 @@
+>From 60851b131900af03bf013afef69f3bcdbb04f1d6 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Sun, 18 Apr 2010 10:41:30 -0700
+Subject: [PATCH 3/7] sched: update the idle statistics in get_cpu_idle_time_us()
+Patch-mainline: in -mm tree as of 19 Apr 2010
+
+Right now, get_cpu_idle_time_us() only reports the idle statistics
+upto the point the CPU entered last idle; not what is valid right now.
+
+This patch adds an update of the idle statistics to get_cpu_idle_time_us(),
+so that calling this function always returns statistics that are accurate
+at the point of the call.
+
+This includes resetting the start of the idle time for accounting purposes
+to avoid double accounting.
+
+Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
+---
+ kernel/time/tick-sched.c | 7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
+index ca2211d..7dbad2f 100644
+--- a/kernel/time/tick-sched.c
++++ b/kernel/time/tick-sched.c
+@@ -161,6 +161,7 @@ static void update_ts_time_stats(struct tick_sched *ts, ktime_t now)
+ if (ts->idle_active) {
+ delta = ktime_sub(now, ts->idle_entrytime);
+ ts->idle_sleeptime = ktime_add(ts->idle_sleeptime, delta);
++ ts->idle_entrytime = now;
+ }
+ }
+
+@@ -205,14 +206,18 @@ static ktime_t tick_nohz_start_idle(struct tick_sched *ts)
+ u64 get_cpu_idle_time_us(int cpu, u64 *last_update_time)
+ {
+ struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu);
++ ktime_t now;
+
+ if (!tick_nohz_enabled)
+ return -1;
+
++ now = ktime_get();
++ update_ts_time_stats(ts, now);
++
+ if (ts->idle_active)
+ *last_update_time = ktime_to_us(ts->idle_lastupdate);
+ else
+- *last_update_time = ktime_to_us(ktime_get());
++ *last_update_time = ktime_to_us(now);
+
+ return ktime_to_us(ts->idle_sleeptime);
+ }
+--
+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/
+