On Wed, Apr 08, 2015 at 05:47:33PM +0100, Morten Rasmussen wrote:
On Wed, Apr 08, 2015 at 04:16:15PM +0100, Mike Turquette wrote:
On Wed, Apr 8, 2015 at 3:38 AM, Morten Rasmussen morten.rasmussen@arm.com wrote:
Hi Mike,
On Tue, Apr 07, 2015 at 09:53:42PM +0100, Mike Turquette wrote:
[...]
#13 "cpufreq: Architecture specific callback for frequency changes"
Vincent's fix for setting current freq (should be rolled into #13 above): https://git.linaro.org/people/vincent.guittot/kernel.git/commitdiff/3ac2b6a0...
#14 "arm: Frequency invariant scheduler load-tracking support"
Yes, these two are the essential ones I think. Since we no longer use a __weak function to implement arch_scale_freq_capacity() they will have to be modified a bit. I should be able to that today and provide you with new versions of those two.
Great!
I have pushed two updated patches to the usual repo based on a fairly recent snapshot of tip/sched/core. I rolled in an optimization as well so the code looks slightly different now. I did a quick test on TC2 and it appears to be working.
Please let me know if it doesn't :)
http://www.linux-arm.org/git?p=linux-power.git%3Ba=shortlog%3Bh=refs/heads/w...
I looked into the issue with setting the current frequency at boot time where I included Vincent's fix in the branch above. It turns out that it isn't necessary with the new implementation of arch_scale_freq_capacity() as it will never return 0. If current frequency hasn't been reported by cpufreq (setting the default governor to userspace is the easiest test case) asfc() will return SCHED_CAPACITY_SCALE until the first frequency change occur. That should be fine I think.
One could argue that we are getting the scaling wrong until the first frequency change which should happen fairly soon after boot for any real system. If the frequency doesn't change, say stays at 80% (like it does for TC2 with userspace as default), there isn't much reason to track frequency changes in the first place.
I have removed the extra call to arch_scale_set_curr_freq() from the patch and pushed an updated branch.
Morten