Documentation/admin-guide/pm/cpufreq.rst | 10 ++ arch/arm64/kernel/topology.c | 144 +++++++++++++++++++---- drivers/cpufreq/cpufreq.c | 31 +++++ include/linux/cpufreq.h | 1 + 4 files changed, 164 insertions(+), 22 deletions(-)
Hi All, This series adds support for obtaining an average CPU frequency based on a hardware provided feedback. The average frequency is being exposed via dedicated yet optional cpufreq sysfs attribute - cpuinfo_avg_freq. The architecture specific bits are being provided for AArch64, caching on existing implementation for FIE and AMUv1 support: the frequency scale factor, updated on each sched tick, serving as a base for retrieving the frequency for a given CPU, representing an average frequency reported between the ticks. The changes have been rather lightly (due to some limitations) tested on an FVP model. Note that some small discrepancies have been observed while testing (on the model) and this is currently being investigated, though it should not have any significant impact on the overall results. Note that [PATCH 2/4] arm64: amu: Delay allocating cpumask for AMU FIE support can be merged independently. 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 [5] https://lore.kernel.org/all/20240603081331.3829278-1-beata.michalska@arm.com/ v7: - Dropping 'arch_topology: init capacity_freq_ref to 0' patch from the series as this one has been sent separately as an independent change [https://lore.kernel.org/all/20240827154818.1195849-1-ionela.voinescu@arm.com/] - Including in the series change that introduces new sysfs entry [PATCH 1/4] - Consequently modifying previously arch_freq_get_on_cpu to match reqs for new sysfs attribute - Dropping an idea of considering a CPU that has been idle for a while as a valid source of information for obtaining an AMU-counter based frequency - Some minor cosmetic changes 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 (4): cpufreq: Introduce an optional cpuinfo_avg_freq sysfs entry arm64: amu: Delay allocating cpumask for AMU FIE support arm64: Provide an AMU-based version of arch_freq_avg_get_on_cpu arm64: Update AMU-based freq scale factor on entering idle Documentation/admin-guide/pm/cpufreq.rst | 10 ++ arch/arm64/kernel/topology.c | 144 +++++++++++++++++++---- drivers/cpufreq/cpufreq.c | 31 +++++ include/linux/cpufreq.h | 1 + 4 files changed, 164 insertions(+), 22 deletions(-) -- 2.25.1
Hi Beata, On Fri, Sep 13, 2024 at 02:29:40PM +0100, Beata Michalska wrote: > This series adds support for obtaining an average CPU frequency based on > a hardware provided feedback. The average frequency is being exposed via > dedicated yet optional cpufreq sysfs attribute - cpuinfo_avg_freq. > The architecture specific bits are being provided for AArch64, caching on > existing implementation for FIE and AMUv1 support: the frequency scale > factor, updated on each sched tick, serving as a base for retrieving > the frequency for a given CPU, representing an average frequency > reported between the ticks. > > The changes have been rather lightly (due to some limitations) tested on > an FVP model. Note that some small discrepancies have been observed while > testing (on the model) and this is currently being investigated, though it > should not have any significant impact on the overall results. > > Note that [PATCH 2/4] arm64: amu: Delay allocating cpumask for AMU FIE support > can be merged independently. What's the plan with the rest of the patches? Are you going to respin? The first patch would need an ack from Rafael or Viresh if we are to merge them via the arm64 tree. Thanks. -- Catalin
On Wed, Oct 16, 2024 at 11:59:25AM +0100, Catalin Marinas wrote: Hi Catalin, > Hi Beata, > > On Fri, Sep 13, 2024 at 02:29:40PM +0100, Beata Michalska wrote: > > This series adds support for obtaining an average CPU frequency based on > > a hardware provided feedback. The average frequency is being exposed via > > dedicated yet optional cpufreq sysfs attribute - cpuinfo_avg_freq. > > The architecture specific bits are being provided for AArch64, caching on > > existing implementation for FIE and AMUv1 support: the frequency scale > > factor, updated on each sched tick, serving as a base for retrieving > > the frequency for a given CPU, representing an average frequency > > reported between the ticks. > > > > The changes have been rather lightly (due to some limitations) tested on > > an FVP model. Note that some small discrepancies have been observed while > > testing (on the model) and this is currently being investigated, though it > > should not have any significant impact on the overall results. > > > > Note that [PATCH 2/4] arm64: amu: Delay allocating cpumask for AMU FIE support > > can be merged independently. > > What's the plan with the rest of the patches? Are you going to respin? > The first patch would need an ack from Rafael or Viresh if we are to > merge them via the arm64 tree. > I am still waiting on any feedback on [PATCH 1/4] - changes to cpufreq, as that one drives the changes in arch specific bits. There is also an ongoing discussion on how to handle idle cpu cases - so I would say we still need to agree on few details. --- BR Beata > Thanks. > > -- > Catalin
On Wed, Oct 16, 2024 at 10:51:57PM +0200, Beata Michalska wrote: > On Wed, Oct 16, 2024 at 11:59:25AM +0100, Catalin Marinas wrote: Hi Viresh, Hi Rafael, > Hi Catalin, > > Hi Beata, > > > > On Fri, Sep 13, 2024 at 02:29:40PM +0100, Beata Michalska wrote: > > > This series adds support for obtaining an average CPU frequency based on > > > a hardware provided feedback. The average frequency is being exposed via > > > dedicated yet optional cpufreq sysfs attribute - cpuinfo_avg_freq. > > > The architecture specific bits are being provided for AArch64, caching on > > > existing implementation for FIE and AMUv1 support: the frequency scale > > > factor, updated on each sched tick, serving as a base for retrieving > > > the frequency for a given CPU, representing an average frequency > > > reported between the ticks. > > > > > > The changes have been rather lightly (due to some limitations) tested on > > > an FVP model. Note that some small discrepancies have been observed while > > > testing (on the model) and this is currently being investigated, though it > > > should not have any significant impact on the overall results. > > > > > > Note that [PATCH 2/4] arm64: amu: Delay allocating cpumask for AMU FIE support > > > can be merged independently. > > > > What's the plan with the rest of the patches? Are you going to respin? > > The first patch would need an ack from Rafael or Viresh if we are to > > merge them via the arm64 tree. > > > I am still waiting on any feedback on [PATCH 1/4] - changes to cpufreq, as that > one drives the changes in arch specific bits. There is also an ongoing discussion > on how to handle idle cpu cases - so I would say we still need to agree on few > details. Would really appreciate your feedback on above mentioned [PATCH 1/4] -> [1] as well as the discussion at [2]. Thank you. --- [1] https://lore.kernel.org/all/20240913132944.1880703-2-beata.michalska@arm.com/ [2] https://lore.kernel.org/all/ZxAl77IYcMO2SfWh@arm.com/ --- > > --- > BR > Beata > > Thanks. > > > > -- > > Catalin >
© 2016 - 2024 Red Hat, Inc.