Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1627415
| From | ville.syrjala@linux.intel.com |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH] Revert "cpuidle: Replace ktime_get() with local_clock()" |
| Date | 2017-04-20 14:50 +0200 |
| Message-ID | <tyjH3-ye-5@gated-at.bofh.it> (permalink) |
| Organization | linux.* mail to news gateway |
From: Ville Syrjälä <ville.syrjala@linux.intel.com> This reverts commit e93e59ce5b85e6c2b444f09fd1f707274ec066dc. The TSC stops in deeper C states, so using local_clock() in cpuidle to track the C state residency seems like a bad idea. With local_clock() powertop is reporting mostly 0% residency for C states here. Presumably the core is still spending most of its time in some deep C-state since the totals typically add up to only 5% or so, so perhaps the governor isn't getting totally confused by these bogus numbers. But let's go back to using ktime_get() as that at least works correctly across the board. Note that the code has changed somewhat since the regression happened, so this isn't a 1:1 revert of the offending commit. Cc: stable@vger.kernel.org Cc: Daniel Lezcano <daniel.lezcano@linaro.org> Cc: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/cpuidle/cpuidle.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index 548b90be7685..24a52805527f 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c @@ -213,13 +213,13 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv, sched_idle_set_state(target_state); trace_cpu_idle_rcuidle(index, dev->cpu); - time_start = ns_to_ktime(local_clock()); + time_start = ktime_get(); stop_critical_timings(); entered_state = target_state->enter(dev, drv, index); start_critical_timings(); - time_end = ns_to_ktime(local_clock()); + time_end = ktime_get(); trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu); /* The cpu is no longer idle or about to enter idle. */ -- 2.10.2
Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread
[PATCH] Revert "cpuidle: Replace ktime_get() with local_clock()" ville.syrjala@linux.intel.com - 2017-04-20 14:50 +0200
Re: [PATCH] Revert "cpuidle: Replace ktime_get() with local_clock()" Daniel Lezcano <daniel.lezcano@linaro.org> - 2017-04-20 15:10 +0200
Re: [PATCH] Revert "cpuidle: Replace ktime_get() with local_clock()" Peter Zijlstra <peterz@infradead.org> - 2017-04-20 15:10 +0200
Re: [PATCH] Revert "cpuidle: Replace ktime_get() with local_clock()" Peter Zijlstra <peterz@infradead.org> - 2017-04-20 15:50 +0200
Re: [PATCH] Revert "cpuidle: Replace ktime_get() with local_clock()" Ville Syrjälä <ville.syrjala@linux.intel.com> - 2017-04-20 15:50 +0200
Re: [PATCH] Revert "cpuidle: Replace ktime_get() with local_clock()" Daniel Lezcano <daniel.lezcano@linaro.org> - 2017-04-20 16:40 +0200
Re: [PATCH] Revert "cpuidle: Replace ktime_get() with local_clock()" Peter Zijlstra <peterz@infradead.org> - 2017-04-20 16:50 +0200
Re: [PATCH] Revert "cpuidle: Replace ktime_get() with local_clock()" Peter Zijlstra <peterz@infradead.org> - 2017-04-20 16:50 +0200
csiph-web