From a4cffe4a9e9d63f344b842700b608524ebde9f83 Mon Sep 17 00:00:00 2001 From: Arjan van de Ven Date: Sun, 9 May 2010 08:23:23 -0700 Subject: [PATCH] --- yaml --- r: 191426 b: refs/heads/master c: 8c7b09f43f4bf570654bcc458ce96819a932303c h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/time/tick-sched.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 2807bb620bba..7d7e4f29488c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 595aac488b546c7185be7e29c8ae165a588b2a9f +refs/heads/master: 8c7b09f43f4bf570654bcc458ce96819a932303c diff --git a/trunk/kernel/time/tick-sched.c b/trunk/kernel/time/tick-sched.c index 59d8762c7e1d..f15d18d82c18 100644 --- a/trunk/kernel/time/tick-sched.c +++ b/trunk/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); }