diff options
author | Daniel Lezcano <daniel.lezcano@linaro.org> | 2019-01-24 14:56:54 +0100 |
---|---|---|
committer | Daniel Lezcano <daniel.lezcano@linaro.org> | 2019-01-24 14:56:54 +0100 |
commit | b68705a0522d1c309f02c38ee1d4ed725eabfd75 (patch) | |
tree | efd8652f7d6518152a35f8afaffe33b9597ba903 | |
parent | f77ab16e505cd8a4ca7ec2cacc55d84f5496b2e0 (diff) |
WIP 2
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
-rw-r--r-- | drivers/cpuidle/cpuidle.c | 3 | ||||
-rw-r--r-- | kernel/sched/idle.c | 7 |
2 files changed, 8 insertions, 2 deletions
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index 4efc0251e362..dfa26b7194bf 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c @@ -226,7 +226,8 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv, time_start = ns_to_ktime(local_clock()); stop_critical_timings(); - entered_state = target_state->enter(dev, drv, index); + entered_state = target_state->enter(dev, drv, 0); + entered_state = index; start_critical_timings(); sched_clock_idle_wakeup_event(); diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index 205246751a6b..3420cee16532 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -184,7 +184,7 @@ static void cpuidle_idle_call(void) call_cpuidle(drv, dev, next_state); } else { bool stop_tick = true; - u64 next_event, now = local_clock(); + u64 next_event, after, now = local_clock(); next_event = cpuidle_predict(drv, dev, now); @@ -202,10 +202,15 @@ static void cpuidle_idle_call(void) rcu_idle_enter(); entered_state = call_cpuidle(drv, dev, next_state); + + after = local_clock(); + /* * Give the governor an opportunity to reflect on the outcome */ cpuidle_reflect(dev, entered_state); + + trace_idle_prediction(now, after, (after - now) / 1000, dev->last_residency); } exit_idle: |