Re: [PATCH 6/6] cpufreq: schedutil: New governor based on scheduler utilization data
From: Peter Zijlstra <peterz@infradead.org>
Date: 2016-03-03 16:42:13
Also in:
linux-pm, lkml
From: Peter Zijlstra <peterz@infradead.org>
Date: 2016-03-03 16:42:13
Also in:
linux-pm, lkml
On Thu, Mar 03, 2016 at 05:28:29PM +0100, Peter Zijlstra wrote:
+void arch_scale_freq_tick(void)
+{
+ u64 aperf, mperf;
+ u64 acnt, mcnt;
+
+ if (!static_cpu_has(X86_FEATURE_APERFMPERF))
+ return;
+
+ aperf = rdmsrl(MSR_IA32_APERF);
+ mperf = rdmsrl(MSR_IA32_APERF);Actually reading MPERF increases the chances of this working.
+ + acnt = aperf - this_cpu_read(arch_prev_aperf); + mcnt = mperf - this_cpu_read(arch_prev_mperf); + + this_cpu_write(arch_prev_aperf, aperf); + this_cpu_write(arch_prev_mperf, mperf); + + this_cpu_write(arch_cpu_freq, div64_u64(acnt * SCHED_CAPACITY_SCALE, mcnt)); +}