[PATCH v6 0/4] Add support for AArch64 AMUv1-based arch_freq_get_on_cpu

Vanshidhar Konda vanshikonda at os.amperecomputing.com
Sat Jul 13 17:32:43 PDT 2024


On Mon, Jun 03, 2024 at 09:21:50AM +0100, Beata Michalska wrote:
>Introducing arm64 specific version of arch_freq_get_on_cpu, cashing on
>existing implementation for FIE and AMUv1 support: the frequency scale
>factor, updated on each sched tick, serves as a base for retrieving
>the frequency for a given CPU, representing an average frequency
>reported between the ticks - thus its accuracy is limited.
>
>The changes have been rather lightly (due to some limitations) tested on
>an FVP model. Note that some small discrepancies have been observed while

I've tested these changes (v6) on AmpereOne system and the results look correct.
The frequency reported by scaling_cur_freq is as expected for housekeeping cpus,
idle as well as isolated cpus.

Thanks,
Vanshi

>testing (on the model) and this is currently being investigated, though it
>should not have any significant impact on the overall results.
>
>Relevant discussions:
>[1] https://lore.kernel.org/all/20240229162520.970986-1-vanshikonda@os.amperecomputing.com/
>[2] https://lore.kernel.org/all/7eozim2xnepacnnkzxlbx34hib4otycnbn4dqymfziqou5lw5u@5xzpv3t7sxo3/
>[3] https://lore.kernel.org/all/20231212072617.14756-1-lihuisong@huawei.com/
>[4] https://lore.kernel.org/lkml/ZIHpd6unkOtYVEqP@e120325.cambridge.arm.com/T/#m4e74cb5a0aaa353c60fedc6cfb95ab7a6e381e3c
>
>v6:
> - delay allocating cpumask for AMU FIE support instead of invalidating the mask
>   upon failure to register cpufreq policy notifications
> - drop the change to cpufreq core (for cpuinfo_cur_freq) as this one will be
>   sent as a separate change
>
>v5:
> - Fix invalid access to cpumask
> - Reworked finding reference cpu when getting the freq
>
>v4:
>- dropping seqcount
>- fixing identifying active cpu within given policy
>- skipping full dynticks cpus when retrieving the freq
>- bringing back plugging in arch_freq_get_on_cpu into cpuinfo_cur_freq
>
>v3:
>- dropping changes to cpufreq_verify_current_freq
>- pulling in changes from Ionela initializing capacity_freq_ref to 0
>  (thanks for that!)  and applying suggestions made by her during last review:
>	- switching to arch_scale_freq_capacity and arch_scale_freq_ref when
>	  reversing freq scale factor computation
>	- swapping shift with multiplication
>- adding time limit for considering last scale update as valid
>- updating frequency scale factor upon entering idle
>
>v2:
>- Splitting the patches
>- Adding comment for full dyntick mode
>- Plugging arch_freq_get_on_cpu into cpufreq_verify_current_freq instead
>  of in show_cpuinfo_cur_freq to allow the framework to stay more in sync
>  with potential freq changes
>
>
>
>Beata Michalska (3):
>  arm64: amu: Delay allocating cpumask for AMU FIE support
>  arm64: Provide an AMU-based version of arch_freq_get_on_cpu
>  arm64: Update AMU-based frequency scale factor on entering idle
>
>Ionela Voinescu (1):
>  arch_topology: init capacity_freq_ref to 0
>
> arch/arm64/kernel/topology.c | 145 +++++++++++++++++++++++++++++------
> drivers/base/arch_topology.c |   8 +-
> 2 files changed, 127 insertions(+), 26 deletions(-)
>
>-- 
>2.25.1
>



More information about the linux-arm-kernel mailing list