* Re: [PATCH v9 2/5] cpufreq: Introduce an optional cpuinfo_avg_freq sysfs entry
2025-01-21 8:44 ` [PATCH v9 2/5] cpufreq: Introduce an optional cpuinfo_avg_freq sysfs entry Beata Michalska
@ 2025-01-21 10:53 ` Viresh Kumar
2025-01-21 15:17 ` Beata Michalska
2025-01-28 8:43 ` Prasanna Kumar T S M
2025-01-29 11:29 ` Sumit Gupta
2 siblings, 1 reply; 9+ messages in thread
From: Viresh Kumar @ 2025-01-21 10:53 UTC (permalink / raw)
To: Beata Michalska
Cc: linux-kernel, linux-arm-kernel, linux-pm, ionela.voinescu,
sudeep.holla, will, catalin.marinas, rafael, sumitg, yang,
vanshikonda, lihuisong, zhanjie9, Jonathan Corbet,
Thomas Gleixner, Ingo Molnar, Borislav Petkov, Dave Hansen,
H . Peter Anvin, Phil Auld, x86, linux-doc
On 21-01-25, 08:44, Beata Michalska wrote:
> diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> index 6f45684483c4..b2a8efa83c98 100644
> --- a/drivers/cpufreq/cpufreq.c
> +++ b/drivers/cpufreq/cpufreq.c
> @@ -733,12 +733,20 @@ __weak int arch_freq_get_on_cpu(int cpu)
> return -EOPNOTSUPP;
> }
>
> static ssize_t show_scaling_cur_freq(struct cpufreq_policy *policy, char *buf)
> {
> ssize_t ret;
> int freq;
>
> - freq = arch_freq_get_on_cpu(policy->cpu);
> + freq = IS_ENABLED(CONFIG_CPUFREQ_ARCH_CUR_FREQ)
> + ? arch_freq_get_on_cpu(policy->cpu)
> + : 0;
> +
> if (freq > 0)
> ret = sysfs_emit(buf, "%u\n", freq);
> else if (cpufreq_driver->setpolicy && cpufreq_driver->get)
Maybe this should be a separate commit ? And also I am not very happy
with the new kconfig option. I don't want others to use it as we want
to get rid of this for X86 too eventually. Making it a kconfig option
allows anyone to enable it and then depend on it without us knowing..
Rather just write it as "if (x86)", with a comment on what we plan to
do with it in few release cycles.
--
viresh
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH v9 2/5] cpufreq: Introduce an optional cpuinfo_avg_freq sysfs entry
2025-01-21 10:53 ` Viresh Kumar
@ 2025-01-21 15:17 ` Beata Michalska
2025-01-22 6:09 ` Viresh Kumar
0 siblings, 1 reply; 9+ messages in thread
From: Beata Michalska @ 2025-01-21 15:17 UTC (permalink / raw)
To: Viresh Kumar
Cc: linux-kernel, linux-arm-kernel, linux-pm, ionela.voinescu,
sudeep.holla, will, catalin.marinas, rafael, sumitg, yang,
vanshikonda, lihuisong, zhanjie9, Jonathan Corbet,
Thomas Gleixner, Ingo Molnar, Borislav Petkov, Dave Hansen,
H . Peter Anvin, Phil Auld, x86, linux-doc
On Tue, Jan 21, 2025 at 04:23:55PM +0530, Viresh Kumar wrote:
> On 21-01-25, 08:44, Beata Michalska wrote:
> > diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> > index 6f45684483c4..b2a8efa83c98 100644
> > --- a/drivers/cpufreq/cpufreq.c
> > +++ b/drivers/cpufreq/cpufreq.c
> > @@ -733,12 +733,20 @@ __weak int arch_freq_get_on_cpu(int cpu)
> > return -EOPNOTSUPP;
> > }
> >
> > static ssize_t show_scaling_cur_freq(struct cpufreq_policy *policy, char *buf)
> > {
> > ssize_t ret;
> > int freq;
> >
> > - freq = arch_freq_get_on_cpu(policy->cpu);
> > + freq = IS_ENABLED(CONFIG_CPUFREQ_ARCH_CUR_FREQ)
> > + ? arch_freq_get_on_cpu(policy->cpu)
> > + : 0;
> > +
> > if (freq > 0)
> > ret = sysfs_emit(buf, "%u\n", freq);
> > else if (cpufreq_driver->setpolicy && cpufreq_driver->get)
>
> Maybe this should be a separate commit ? And also I am not very happy
Initially it was supposed to be one, but then the rest of the series justifies
the changes so it made sense to send those in one go.
> with the new kconfig option. I don't want others to use it as we want
> to get rid of this for X86 too eventually. Making it a kconfig option
> allows anyone to enable it and then depend on it without us knowing..
>
> Rather just write it as "if (x86)", with a comment on what we plan to
> do with it in few release cycles.
Right, those changes are based on discussion in [1].
---
[1] https://lore.kernel.org/all/CAJZ5v0gCRKzaFrwkoBpLHQUxoP_+jAyhMiCkLQaBUpduk9yxtA@mail.gmail.com/
---
BR
Beata
>
> --
> viresh
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH v9 2/5] cpufreq: Introduce an optional cpuinfo_avg_freq sysfs entry
2025-01-21 15:17 ` Beata Michalska
@ 2025-01-22 6:09 ` Viresh Kumar
2025-01-23 21:47 ` Beata Michalska
0 siblings, 1 reply; 9+ messages in thread
From: Viresh Kumar @ 2025-01-22 6:09 UTC (permalink / raw)
To: Beata Michalska
Cc: linux-kernel, linux-arm-kernel, linux-pm, ionela.voinescu,
sudeep.holla, will, catalin.marinas, rafael, sumitg, yang,
vanshikonda, lihuisong, zhanjie9, Jonathan Corbet,
Thomas Gleixner, Ingo Molnar, Borislav Petkov, Dave Hansen,
H . Peter Anvin, Phil Auld, x86, linux-doc
On 21-01-25, 16:17, Beata Michalska wrote:
> On Tue, Jan 21, 2025 at 04:23:55PM +0530, Viresh Kumar wrote:
> > On 21-01-25, 08:44, Beata Michalska wrote:
> > > diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> > > index 6f45684483c4..b2a8efa83c98 100644
> > > --- a/drivers/cpufreq/cpufreq.c
> > > +++ b/drivers/cpufreq/cpufreq.c
> > > @@ -733,12 +733,20 @@ __weak int arch_freq_get_on_cpu(int cpu)
> > > return -EOPNOTSUPP;
> > > }
> > >
> > > static ssize_t show_scaling_cur_freq(struct cpufreq_policy *policy, char *buf)
> > > {
> > > ssize_t ret;
> > > int freq;
> > >
> > > - freq = arch_freq_get_on_cpu(policy->cpu);
> > > + freq = IS_ENABLED(CONFIG_CPUFREQ_ARCH_CUR_FREQ)
> > > + ? arch_freq_get_on_cpu(policy->cpu)
> > > + : 0;
> > > +
> > > if (freq > 0)
> > > ret = sysfs_emit(buf, "%u\n", freq);
> > > else if (cpufreq_driver->setpolicy && cpufreq_driver->get)
> >
> > Maybe this should be a separate commit ? And also I am not very happy
> Initially it was supposed to be one, but then the rest of the series justifies
> the changes so it made sense to send those in one go.
> > with the new kconfig option. I don't want others to use it as we want
> > to get rid of this for X86 too eventually. Making it a kconfig option
> > allows anyone to enable it and then depend on it without us knowing..
> >
> > Rather just write it as "if (x86)", with a comment on what we plan to
> > do with it in few release cycles.
> Right, those changes are based on discussion in [1].
Ahh I see.. What about making it depend on X86 for now, as we really
don't want new users to use it ?
--
viresh
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH v9 2/5] cpufreq: Introduce an optional cpuinfo_avg_freq sysfs entry
2025-01-22 6:09 ` Viresh Kumar
@ 2025-01-23 21:47 ` Beata Michalska
2025-01-24 3:27 ` Viresh Kumar
0 siblings, 1 reply; 9+ messages in thread
From: Beata Michalska @ 2025-01-23 21:47 UTC (permalink / raw)
To: Viresh Kumar
Cc: linux-kernel, linux-arm-kernel, linux-pm, ionela.voinescu,
sudeep.holla, will, catalin.marinas, rafael, sumitg, yang,
vanshikonda, lihuisong, zhanjie9, Jonathan Corbet,
Thomas Gleixner, Ingo Molnar, Borislav Petkov, Dave Hansen,
H . Peter Anvin, Phil Auld, x86, linux-doc
On Wed, Jan 22, 2025 at 11:39:02AM +0530, Viresh Kumar wrote:
> On 21-01-25, 16:17, Beata Michalska wrote:
> > On Tue, Jan 21, 2025 at 04:23:55PM +0530, Viresh Kumar wrote:
> > > On 21-01-25, 08:44, Beata Michalska wrote:
> > > > diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> > > > index 6f45684483c4..b2a8efa83c98 100644
> > > > --- a/drivers/cpufreq/cpufreq.c
> > > > +++ b/drivers/cpufreq/cpufreq.c
> > > > @@ -733,12 +733,20 @@ __weak int arch_freq_get_on_cpu(int cpu)
> > > > return -EOPNOTSUPP;
> > > > }
> > > >
> > > > static ssize_t show_scaling_cur_freq(struct cpufreq_policy *policy, char *buf)
> > > > {
> > > > ssize_t ret;
> > > > int freq;
> > > >
> > > > - freq = arch_freq_get_on_cpu(policy->cpu);
> > > > + freq = IS_ENABLED(CONFIG_CPUFREQ_ARCH_CUR_FREQ)
> > > > + ? arch_freq_get_on_cpu(policy->cpu)
> > > > + : 0;
> > > > +
> > > > if (freq > 0)
> > > > ret = sysfs_emit(buf, "%u\n", freq);
> > > > else if (cpufreq_driver->setpolicy && cpufreq_driver->get)
> > >
> > > Maybe this should be a separate commit ? And also I am not very happy
> > Initially it was supposed to be one, but then the rest of the series justifies
> > the changes so it made sense to send those in one go.
> > > with the new kconfig option. I don't want others to use it as we want
> > > to get rid of this for X86 too eventually. Making it a kconfig option
> > > allows anyone to enable it and then depend on it without us knowing..
> > >
> > > Rather just write it as "if (x86)", with a comment on what we plan to
> > > do with it in few release cycles.
> > Right, those changes are based on discussion in [1].
>
> Ahh I see.. What about making it depend on X86 for now, as we really
> don't want new users to use it ?
Do you mean the new config option? If so, it is in Kconfig.x86 already.
Unless you have smth else in mind ?
---
BR
Beata
>
> --
> viresh
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH v9 2/5] cpufreq: Introduce an optional cpuinfo_avg_freq sysfs entry
2025-01-23 21:47 ` Beata Michalska
@ 2025-01-24 3:27 ` Viresh Kumar
0 siblings, 0 replies; 9+ messages in thread
From: Viresh Kumar @ 2025-01-24 3:27 UTC (permalink / raw)
To: Beata Michalska
Cc: linux-kernel, linux-arm-kernel, linux-pm, ionela.voinescu,
sudeep.holla, will, catalin.marinas, rafael, sumitg, yang,
vanshikonda, lihuisong, zhanjie9, Jonathan Corbet,
Thomas Gleixner, Ingo Molnar, Borislav Petkov, Dave Hansen,
H . Peter Anvin, Phil Auld, x86, linux-doc
On 23-01-25, 22:47, Beata Michalska wrote:
> Do you mean the new config option? If so, it is in Kconfig.x86 already.
> Unless you have smth else in mind ?
Its good then :)
--
viresh
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v9 2/5] cpufreq: Introduce an optional cpuinfo_avg_freq sysfs entry
2025-01-21 8:44 ` [PATCH v9 2/5] cpufreq: Introduce an optional cpuinfo_avg_freq sysfs entry Beata Michalska
2025-01-21 10:53 ` Viresh Kumar
@ 2025-01-28 8:43 ` Prasanna Kumar T S M
2025-01-29 11:29 ` Sumit Gupta
2 siblings, 0 replies; 9+ messages in thread
From: Prasanna Kumar T S M @ 2025-01-28 8:43 UTC (permalink / raw)
To: Beata Michalska, linux-kernel, linux-arm-kernel, linux-pm,
ionela.voinescu, sudeep.holla, will, catalin.marinas, rafael,
viresh.kumar
Cc: sumitg, yang, vanshikonda, lihuisong, zhanjie9, Jonathan Corbet,
Thomas Gleixner, Ingo Molnar, Borislav Petkov, Dave Hansen,
H . Peter Anvin, Phil Auld, x86, linux-doc
On 21-01-2025 14:14, Beata Michalska wrote:
> Currently the CPUFreq core exposes two sysfs attributes that can be used
> to query current frequency of a given CPU(s): namely cpuinfo_cur_freq
> and scaling_cur_freq. Both provide slightly different view on the
> subject and they do come with their own drawbacks.
>
> cpuinfo_cur_freq provides higher precision though at a cost of being
> rather expensive. Moreover, the information retrieved via this attribute
> is somewhat short lived as frequency can change at any point of time
> making it difficult to reason from.
>
> scaling_cur_freq, on the other hand, tends to be less accurate but then
> the actual level of precision (and source of information) varies between
> architectures making it a bit ambiguous.
>
> The new attribute, cpuinfo_avg_freq, is intended to provide more stable,
> distinct interface, exposing an average frequency of a given CPU(s), as
> reported by the hardware, over a time frame spanning no more than a few
> milliseconds. As it requires appropriate hardware support, this
> interface is optional.
>
> Note that under the hood, the new attribute relies on the information
> provided by arch_freq_get_on_cpu, which, up to this point, has been
> feeding data for scaling_cur_freq attribute, being the source of
> ambiguity when it comes to interpretation. This has been amended by
> restoring the intended behavior for scaling_cur_freq, with a new
> dedicated config option to maintain status quo for those, who may need
> it.
>
> CC: Jonathan Corbet <corbet@lwn.net>
> CC: Thomas Gleixner <tglx@linutronix.de>
> CC: Ingo Molnar <mingo@redhat.com>
> CC: Borislav Petkov <bp@alien8.de>
> CC: Dave Hansen <dave.hansen@linux.intel.com>
> CC: H. Peter Anvin <hpa@zytor.com>
> CC: Phil Auld <pauld@redhat.com>
> CC: x86@kernel.org
> CC: linux-doc@vger.kernel.org
>
> Signed-off-by: Beata Michalska <beata.michalska@arm.com>
> ---
> Documentation/admin-guide/pm/cpufreq.rst | 16 ++++++++++++-
> drivers/cpufreq/Kconfig.x86 | 12 ++++++++++
> drivers/cpufreq/cpufreq.c | 30 +++++++++++++++++++++++-
> 3 files changed, 56 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/admin-guide/pm/cpufreq.rst b/Documentation/admin-guide/pm/cpufreq.rst
> index a21369eba034..e9969174026c 100644
> --- a/Documentation/admin-guide/pm/cpufreq.rst
> +++ b/Documentation/admin-guide/pm/cpufreq.rst
> @@ -248,6 +248,19 @@ are the following:
> If that frequency cannot be determined, this attribute should not
> be present.
>
> +``cpuinfo_avg_freq``
> + An average frequency (in KHz) of all CPUs belonging to a given policy,
> + derived from a hardware provided feedback and reported on a time frame
> + spanning at most few milliseconds.
> +
> + This is expected to be based on the frequency the hardware actually runs
> + at and, as such, might require specialised hardware support (such as AMU
> + extension on ARM). If one cannot be determined, this attribute should
> + not be present.
> +
> + Note, that failed attempt to retrieve current frequency for a given
> + CPU(s) will result in an appropriate error.
> +
> ``cpuinfo_max_freq``
> Maximum possible operating frequency the CPUs belonging to this policy
> can run at (in kHz).
> @@ -293,7 +306,8 @@ are the following:
> Some architectures (e.g. ``x86``) may attempt to provide information
> more precisely reflecting the current CPU frequency through this
> attribute, but that still may not be the exact current CPU frequency as
> - seen by the hardware at the moment.
> + seen by the hardware at the moment. This behavior though, is only
> + available via c:macro:``CPUFREQ_ARCH_CUR_FREQ`` option.
>
> ``scaling_driver``
> The scaling driver currently in use.
> diff --git a/drivers/cpufreq/Kconfig.x86 b/drivers/cpufreq/Kconfig.x86
> index 97c2d4f15d76..212e1b9afe21 100644
> --- a/drivers/cpufreq/Kconfig.x86
> +++ b/drivers/cpufreq/Kconfig.x86
> @@ -340,3 +340,15 @@ config X86_SPEEDSTEP_RELAXED_CAP_CHECK
> option lets the probing code bypass some of those checks if the
> parameter "relaxed_check=1" is passed to the module.
>
> +config CPUFREQ_ARCH_CUR_FREQ
> + default y
> + bool "Current frequency derived from HW provided feedback"
> + help
> + This determines whether the scaling_cur_freq sysfs attribute returns
> + the last requested frequency or a more precise value based on hardware
> + provided feedback (as architected counters).
> + Given that a more precise frequency can now be provided via the
> + cpuinfo_avg_cur_freq attribute, by enabling this option,
> + scaling_cur_freq maintains the provision of a counter based frequency,
> + for compatibility reasons.
> +
> diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> index 6f45684483c4..b2a8efa83c98 100644
> --- a/drivers/cpufreq/cpufreq.c
> +++ b/drivers/cpufreq/cpufreq.c
> @@ -733,12 +733,20 @@ __weak int arch_freq_get_on_cpu(int cpu)
> return -EOPNOTSUPP;
> }
>
> +static inline bool cpufreq_avg_freq_supported(struct cpufreq_policy *policy)
> +{
> + return arch_freq_get_on_cpu(policy->cpu) != -EOPNOTSUPP;
> +}
> +
> static ssize_t show_scaling_cur_freq(struct cpufreq_policy *policy, char *buf)
> {
> ssize_t ret;
> int freq;
>
> - freq = arch_freq_get_on_cpu(policy->cpu);
> + freq = IS_ENABLED(CONFIG_CPUFREQ_ARCH_CUR_FREQ)
> + ? arch_freq_get_on_cpu(policy->cpu)
> + : 0;
> +
> if (freq > 0)
> ret = sysfs_emit(buf, "%u\n", freq);
> else if (cpufreq_driver->setpolicy && cpufreq_driver->get)
> @@ -783,6 +791,19 @@ static ssize_t show_cpuinfo_cur_freq(struct cpufreq_policy *policy,
> return sysfs_emit(buf, "<unknown>\n");
> }
>
> +/*
> + * show_cpuinfo_avg_freq - average CPU frequency as detected by hardware
> + */
> +static ssize_t show_cpuinfo_avg_freq(struct cpufreq_policy *policy,
> + char *buf)
> +{
> + int avg_freq = arch_freq_get_on_cpu(policy->cpu);
> +
> + if (avg_freq > 0)
> + return sysfs_emit(buf, "%u\n", avg_freq);
> + return avg_freq != 0 ? avg_freq : -EINVAL;
> +}
> +
> /*
> * show_scaling_governor - show the current policy for the specified CPU
> */
> @@ -945,6 +966,7 @@ static ssize_t show_bios_limit(struct cpufreq_policy *policy, char *buf)
> }
>
> cpufreq_freq_attr_ro_perm(cpuinfo_cur_freq, 0400);
> +cpufreq_freq_attr_ro(cpuinfo_avg_freq);
> cpufreq_freq_attr_ro(cpuinfo_min_freq);
> cpufreq_freq_attr_ro(cpuinfo_max_freq);
> cpufreq_freq_attr_ro(cpuinfo_transition_latency);
> @@ -1072,6 +1094,12 @@ static int cpufreq_add_dev_interface(struct cpufreq_policy *policy)
> return ret;
> }
>
> + if (cpufreq_avg_freq_supported(policy)) {
> + ret = sysfs_create_file(&policy->kobj, &cpuinfo_avg_freq.attr);
> + if (ret)
> + return ret;
> + }
> +
> ret = sysfs_create_file(&policy->kobj, &scaling_cur_freq.attr);
> if (ret)
> return ret;
Looks good to me.
Reviewed-by: Prasanna Kumar T S M <ptsm@linux.microsoft.com>
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH v9 2/5] cpufreq: Introduce an optional cpuinfo_avg_freq sysfs entry
2025-01-21 8:44 ` [PATCH v9 2/5] cpufreq: Introduce an optional cpuinfo_avg_freq sysfs entry Beata Michalska
2025-01-21 10:53 ` Viresh Kumar
2025-01-28 8:43 ` Prasanna Kumar T S M
@ 2025-01-29 11:29 ` Sumit Gupta
2 siblings, 0 replies; 9+ messages in thread
From: Sumit Gupta @ 2025-01-29 11:29 UTC (permalink / raw)
To: Beata Michalska, linux-kernel, linux-arm-kernel, linux-pm,
ionela.voinescu, sudeep.holla, will, catalin.marinas, rafael,
viresh.kumar
Cc: yang, vanshikonda, lihuisong, zhanjie9, Jonathan Corbet,
Thomas Gleixner, Ingo Molnar, Borislav Petkov, Dave Hansen,
H . Peter Anvin, Phil Auld, x86, linux-doc, linux-tegra
On 21/01/25 14:14, Beata Michalska wrote:
>
>
> Currently the CPUFreq core exposes two sysfs attributes that can be used
> to query current frequency of a given CPU(s): namely cpuinfo_cur_freq
> and scaling_cur_freq. Both provide slightly different view on the
> subject and they do come with their own drawbacks.
>
> cpuinfo_cur_freq provides higher precision though at a cost of being
> rather expensive. Moreover, the information retrieved via this attribute
> is somewhat short lived as frequency can change at any point of time
> making it difficult to reason from.
>
> scaling_cur_freq, on the other hand, tends to be less accurate but then
> the actual level of precision (and source of information) varies between
> architectures making it a bit ambiguous.
>
> The new attribute, cpuinfo_avg_freq, is intended to provide more stable,
> distinct interface, exposing an average frequency of a given CPU(s), as
> reported by the hardware, over a time frame spanning no more than a few
> milliseconds. As it requires appropriate hardware support, this
> interface is optional.
>
> Note that under the hood, the new attribute relies on the information
> provided by arch_freq_get_on_cpu, which, up to this point, has been
> feeding data for scaling_cur_freq attribute, being the source of
> ambiguity when it comes to interpretation. This has been amended by
> restoring the intended behavior for scaling_cur_freq, with a new
> dedicated config option to maintain status quo for those, who may need
> it.
>
> CC: Jonathan Corbet <corbet@lwn.net>
> CC: Thomas Gleixner <tglx@linutronix.de>
> CC: Ingo Molnar <mingo@redhat.com>
> CC: Borislav Petkov <bp@alien8.de>
> CC: Dave Hansen <dave.hansen@linux.intel.com>
> CC: H. Peter Anvin <hpa@zytor.com>
> CC: Phil Auld <pauld@redhat.com>
> CC: x86@kernel.org
> CC: linux-doc@vger.kernel.org
>
> Signed-off-by: Beata Michalska <beata.michalska@arm.com>
> ---
> Documentation/admin-guide/pm/cpufreq.rst | 16 ++++++++++++-
> drivers/cpufreq/Kconfig.x86 | 12 ++++++++++
> drivers/cpufreq/cpufreq.c | 30 +++++++++++++++++++++++-
> 3 files changed, 56 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/admin-guide/pm/cpufreq.rst b/Documentation/admin-guide/pm/cpufreq.rst
> index a21369eba034..e9969174026c 100644
> --- a/Documentation/admin-guide/pm/cpufreq.rst
> +++ b/Documentation/admin-guide/pm/cpufreq.rst
> @@ -248,6 +248,19 @@ are the following:
> If that frequency cannot be determined, this attribute should not
> be present.
>
> +``cpuinfo_avg_freq``
> + An average frequency (in KHz) of all CPUs belonging to a given policy,
> + derived from a hardware provided feedback and reported on a time frame
> + spanning at most few milliseconds.
> +
> + This is expected to be based on the frequency the hardware actually runs
> + at and, as such, might require specialised hardware support (such as AMU
> + extension on ARM). If one cannot be determined, this attribute should
> + not be present.
> +
> + Note, that failed attempt to retrieve current frequency for a given
> + CPU(s) will result in an appropriate error.
> +
Minor nit:
Should we also add: Idle CPU's on ARM will return EAGAIN (Resource
temporarily unavailable) error?
> ``cpuinfo_max_freq``
> Maximum possible operating frequency the CPUs belonging to this policy
> can run at (in kHz).
> @@ -293,7 +306,8 @@ are the following:
> Some architectures (e.g. ``x86``) may attempt to provide information
> more precisely reflecting the current CPU frequency through this
> attribute, but that still may not be the exact current CPU frequency as
> - seen by the hardware at the moment.
> + seen by the hardware at the moment. This behavior though, is only
> + available via c:macro:``CPUFREQ_ARCH_CUR_FREQ`` option.
>
> ``scaling_driver``
> The scaling driver currently in use.
> diff --git a/drivers/cpufreq/Kconfig.x86 b/drivers/cpufreq/Kconfig.x86
> index 97c2d4f15d76..212e1b9afe21 100644
> --- a/drivers/cpufreq/Kconfig.x86
> +++ b/drivers/cpufreq/Kconfig.x86
> @@ -340,3 +340,15 @@ config X86_SPEEDSTEP_RELAXED_CAP_CHECK
> option lets the probing code bypass some of those checks if the
> parameter "relaxed_check=1" is passed to the module.
>
> +config CPUFREQ_ARCH_CUR_FREQ
> + default y
> + bool "Current frequency derived from HW provided feedback"
> + help
> + This determines whether the scaling_cur_freq sysfs attribute returns
> + the last requested frequency or a more precise value based on hardware
> + provided feedback (as architected counters).
> + Given that a more precise frequency can now be provided via the
> + cpuinfo_avg_cur_freq attribute, by enabling this option,
s/cpuinfo_avg_cur_freq/cpuinfo_cur_freq/?
Overall looks good to me.
Reviewed-by: Sumit Gupta <sumitg@nvidia.com>
^ permalink raw reply [flat|nested] 9+ messages in thread