Messages in this thread | | | Date | Thu, 27 Aug 2020 13:21:49 +0530 | From | Viresh Kumar <> | Subject | Re: [RFC 0/3] cpufreq: cppc: Add support for frequency invariance |
| |
On 25-08-20, 10:56, Ionela Voinescu wrote: > I've been putting some more thought/code into this one and I believe > something as follows might look nicer as well as cover a few corner cases > (ignore implementation details for now, they can be changed):
I saw the other patchset you sent where AMU can be used as the backend for CPPC driver, which means that if AMU IP is present on the platform it will be used by the CPPC to get the perf counts, right ?
> - Have a per cpu value that marks the use of either AMUs, CPPC, or > cpufreq for freq invariance (can be done with per-cpu variable or with > cpumasks) > > - arch_topology.c: initialization code as follows: > > for_each_present_cpu(cpu) { > if (freq_inv_amus_valid(cpu) && > !freq_inv_set_max_ratio(cpufreq_get_hw_max_freq(cpu) * 1000, > arch_timer_get_rate(), cpu)) { > per_cpu(inv_source, cpu) = INV_AMU_COUNTERS; > continue; > } > if (freq_inv_cppc_counters_valid(cpu) && > !freq_inv_set_max_ratio(cppc_max_perf, cppc_ref_perf, cpu)) { > per_cpu(inv_source, cpu) = INV_CPPC_COUNTERS; > continue; > } > if (!cpufreq_supports_freq_invariance() || > freq_inv_set_max_ratio(cpufreq_get_hw_max_freq(cpu), > 1, cpu)) { > pr_info("FIE disabled: no valid source for CPU%d.", cpu); > return 0; > } > }
Based on that (your other patchset), I think this can get further simplified to whomsoever can register first for freq invariance.
i.e. if CPPC registers for it first then there is no need to check AMUs further (as CPPC will be using AMUs anyway), else we will fallback to AMU, else cpufreq.
Is that understanding correct ?
-- viresh
| |