Linux Tegra architecture development
 help / color / mirror / Atom feed
* Re: [PATCH] cpufreq: CPPC: Support for autonomous selection in cppc_cpufreq
       [not found] <20250507031941.2812701-1-zhenglifeng1@huawei.com>
@ 2025-05-21 10:43 ` Sumit Gupta
  2025-05-21 10:48   ` Viresh Kumar
  0 siblings, 1 reply; 3+ messages in thread
From: Sumit Gupta @ 2025-05-21 10:43 UTC (permalink / raw)
  To: Lifeng Zheng, rafael, viresh.kumar, pierre.gondois
  Cc: linux-kernel, linux-pm, linuxarm, mario.limonciello,
	yumpusamongus, srinivas.pandruvada, jonathan.cameron, zhanjie9,
	lihuisong, cenxinghai, yubowen8, hepeng68, linux-tegra



On 07/05/25 08:49, Lifeng Zheng wrote:
> External email: Use caution opening links or attachments
> 
> 
> Add sysfs interfaces for CPPC autonomous selection in the cppc_cpufreq
> driver.
> 
> Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>

Looks good to me.

Reviewed-by: Sumit Gupta <sumitg@nvidia.com>

> ---
> Hi Rafael,
> 
> This patch is the 8th patch in [1]. After the discussion in [2], Sumit
> is OK with adding sysfs entries under cpufreq sysfs node, so I resend
> this patch. He will later send his updated patch after.
> 
> Any comments appreciated!
> 
> Lifeng
> 
> [1] https://lore.kernel.org/all/20250206131428.3261578-1-zhenglifeng1@huawei.com/
> [2] https://lore.kernel.org/all/20250211103737.447704-1-sumitg@nvidia.com/
> 
>   .../ABI/testing/sysfs-devices-system-cpu      |  54 +++++++++
>   drivers/cpufreq/cppc_cpufreq.c                | 109 ++++++++++++++++++
>   2 files changed, 163 insertions(+)
> 
> diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documentation/ABI/testing/sysfs-devices-system-cpu
> index 206079d3bd5b..37065e1b8ebc 100644
> --- a/Documentation/ABI/testing/sysfs-devices-system-cpu
> +++ b/Documentation/ABI/testing/sysfs-devices-system-cpu
> @@ -268,6 +268,60 @@ Description:       Discover CPUs in the same CPU frequency coordination domain
>                  This file is only present if the acpi-cpufreq or the cppc-cpufreq
>                  drivers are in use.
> 
> +What:          /sys/devices/system/cpu/cpuX/cpufreq/auto_select
> +Date:          May 2025
> +Contact:       linux-pm@vger.kernel.org
> +Description:   Autonomous selection enable
> +
> +               Read/write interface to control autonomous selection enable
> +                       Read returns autonomous selection status:
> +                               0: autonomous selection is disabled
> +                               1: autonomous selection is enabled
> +
> +                       Write 'y' or '1' or 'on' to enable autonomous selection.
> +                       Write 'n' or '0' or 'off' to disable autonomous selection.
> +
> +               This file is only present if the cppc-cpufreq driver is in use.
> +
> +What:          /sys/devices/system/cpu/cpuX/cpufreq/auto_act_window
> +Date:          May 2025
> +Contact:       linux-pm@vger.kernel.org
> +Description:   Autonomous activity window
> +
> +               This file indicates a moving utilization sensitivity window to
> +               the platform's autonomous selection policy.
> +
> +               Read/write an integer represents autonomous activity window (in
> +               microseconds) from/to this file. The max value to write is
> +               1270000000 but the max significand is 127. This means that if 128
> +               is written to this file, 127 will be stored. If the value is
> +               greater than 130, only the first two digits will be saved as
> +               significand.
> +
> +               Writing a zero value to this file enable the platform to
> +               determine an appropriate Activity Window depending on the workload.
> +
> +               Writing to this file only has meaning when Autonomous Selection is
> +               enabled.
> +
> +               This file is only present if the cppc-cpufreq driver is in use.
> +
> +What:          /sys/devices/system/cpu/cpuX/cpufreq/energy_performance_preference_val
> +Date:          May 2025
> +Contact:       linux-pm@vger.kernel.org
> +Description:   Energy performance preference
> +
> +               Read/write an 8-bit integer from/to this file. This file
> +               represents a range of values from 0 (performance preference) to
> +               0xFF (energy efficiency preference) that influences the rate of
> +               performance increase/decrease and the result of the hardware's
> +               energy efficiency and performance optimization policies.
> +
> +               Writing to this file only has meaning when Autonomous Selection is
> +               enabled.
> +
> +               This file is only present if the cppc-cpufreq driver is in use.
> +
> 
>   What:          /sys/devices/system/cpu/cpu*/cache/index3/cache_disable_{0,1}
>   Date:          August 2008
> diff --git a/drivers/cpufreq/cppc_cpufreq.c b/drivers/cpufreq/cppc_cpufreq.c
> index b3d74f9adcf0..3c3d00cec298 100644
> --- a/drivers/cpufreq/cppc_cpufreq.c
> +++ b/drivers/cpufreq/cppc_cpufreq.c
> @@ -808,10 +808,119 @@ static ssize_t show_freqdomain_cpus(struct cpufreq_policy *policy, char *buf)
> 
>          return cpufreq_show_cpus(cpu_data->shared_cpu_map, buf);
>   }
> +
> +static ssize_t show_auto_select(struct cpufreq_policy *policy, char *buf)
> +{
> +       bool val;
> +       int ret;
> +
> +       ret = cppc_get_auto_sel(policy->cpu, &val);
> +
> +       /* show "<unsupported>" when this register is not supported by cpc */
> +       if (ret == -EOPNOTSUPP)
> +               return sysfs_emit(buf, "<unsupported>\n");
> +
> +       if (ret)
> +               return ret;
> +
> +       return sysfs_emit(buf, "%d\n", val);
> +}
> +
> +static ssize_t store_auto_select(struct cpufreq_policy *policy,
> +                                const char *buf, size_t count)
> +{
> +       bool val;
> +       int ret;
> +
> +       ret = kstrtobool(buf, &val);
> +       if (ret)
> +               return ret;
> +
> +       ret = cppc_set_auto_sel(policy->cpu, val);
> +       if (ret)
> +               return ret;
> +
> +       return count;
> +}
> +
> +static ssize_t show_auto_act_window(struct cpufreq_policy *policy, char *buf)
> +{
> +       u64 val;
> +       int ret;
> +
> +       ret = cppc_get_auto_act_window(policy->cpu, &val);
> +
> +       /* show "<unsupported>" when this register is not supported by cpc */
> +       if (ret == -EOPNOTSUPP)
> +               return sysfs_emit(buf, "<unsupported>\n");
> +
> +       if (ret)
> +               return ret;
> +
> +       return sysfs_emit(buf, "%llu\n", val);
> +}
> +
> +static ssize_t store_auto_act_window(struct cpufreq_policy *policy,
> +                                    const char *buf, size_t count)
> +{
> +       u64 usec;
> +       int ret;
> +
> +       ret = kstrtou64(buf, 0, &usec);
> +       if (ret)
> +               return ret;
> +
> +       ret = cppc_set_auto_act_window(policy->cpu, usec);
> +       if (ret)
> +               return ret;
> +
> +       return count;
> +}
> +
> +static ssize_t show_energy_performance_preference_val(struct cpufreq_policy *policy, char *buf)
> +{
> +       u64 val;
> +       int ret;
> +
> +       ret = cppc_get_epp_perf(policy->cpu, &val);
> +
> +       /* show "<unsupported>" when this register is not supported by cpc */
> +       if (ret == -EOPNOTSUPP)
> +               return sysfs_emit(buf, "<unsupported>\n");
> +
> +       if (ret)
> +               return ret;
> +
> +       return sysfs_emit(buf, "%llu\n", val);
> +}
> +
> +static ssize_t store_energy_performance_preference_val(struct cpufreq_policy *policy,
> +                                                      const char *buf, size_t count)
> +{
> +       u64 val;
> +       int ret;
> +
> +       ret = kstrtou64(buf, 0, &val);
> +       if (ret)
> +               return ret;
> +
> +       ret = cppc_set_epp(policy->cpu, val);
> +       if (ret)
> +               return ret;
> +
> +       return count;
> +}
> +
>   cpufreq_freq_attr_ro(freqdomain_cpus);
> +cpufreq_freq_attr_rw(auto_select);
> +cpufreq_freq_attr_rw(auto_act_window);
> +cpufreq_freq_attr_rw(energy_performance_preference_val);
> 
>   static struct freq_attr *cppc_cpufreq_attr[] = {
>          &freqdomain_cpus,
> +       &auto_select,
> +       &auto_act_window,
> +       &energy_performance_preference_val,
>          NULL,
>   };
> 
> --
> 2.33.0
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] cpufreq: CPPC: Support for autonomous selection in cppc_cpufreq
  2025-05-21 10:43 ` [PATCH] cpufreq: CPPC: Support for autonomous selection in cppc_cpufreq Sumit Gupta
@ 2025-05-21 10:48   ` Viresh Kumar
  2025-05-21 20:49     ` Rafael J. Wysocki
  0 siblings, 1 reply; 3+ messages in thread
From: Viresh Kumar @ 2025-05-21 10:48 UTC (permalink / raw)
  To: rafael, Sumit Gupta
  Cc: Lifeng Zheng, pierre.gondois, linux-kernel, linux-pm, linuxarm,
	mario.limonciello, yumpusamongus, srinivas.pandruvada,
	jonathan.cameron, zhanjie9, lihuisong, cenxinghai, yubowen8,
	hepeng68, linux-tegra

On 21-05-25, 16:13, Sumit Gupta wrote:
> 
> 
> On 07/05/25 08:49, Lifeng Zheng wrote:
> > External email: Use caution opening links or attachments
> > 
> > 
> > Add sysfs interfaces for CPPC autonomous selection in the cppc_cpufreq
> > driver.
> > 
> > Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
> 
> Looks good to me.
> 
> Reviewed-by: Sumit Gupta <sumitg@nvidia.com>

Acked-by: Viresh Kumar <viresh.kumar@linaro.org>

Rafael, since I have already sent the pull request, can you please
take it directly ? Thanks.

-- 
viresh

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] cpufreq: CPPC: Support for autonomous selection in cppc_cpufreq
  2025-05-21 10:48   ` Viresh Kumar
@ 2025-05-21 20:49     ` Rafael J. Wysocki
  0 siblings, 0 replies; 3+ messages in thread
From: Rafael J. Wysocki @ 2025-05-21 20:49 UTC (permalink / raw)
  To: Viresh Kumar, Lifeng Zheng
  Cc: Sumit Gupta, pierre.gondois, linux-kernel, linux-pm, linuxarm,
	mario.limonciello, yumpusamongus, srinivas.pandruvada,
	jonathan.cameron, zhanjie9, lihuisong, cenxinghai, yubowen8,
	hepeng68, linux-tegra

On Wed, May 21, 2025 at 12:48 PM Viresh Kumar <viresh.kumar@linaro.org> wrote:
>
> On 21-05-25, 16:13, Sumit Gupta wrote:
> >
> >
> > On 07/05/25 08:49, Lifeng Zheng wrote:
> > > External email: Use caution opening links or attachments
> > >
> > >
> > > Add sysfs interfaces for CPPC autonomous selection in the cppc_cpufreq
> > > driver.
> > >
> > > Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
> >
> > Looks good to me.
> >
> > Reviewed-by: Sumit Gupta <sumitg@nvidia.com>
>
> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
>
> Rafael, since I have already sent the pull request, can you please
> take it directly ? Thanks.

Done, thanks!

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-05-21 20:49 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20250507031941.2812701-1-zhenglifeng1@huawei.com>
2025-05-21 10:43 ` [PATCH] cpufreq: CPPC: Support for autonomous selection in cppc_cpufreq Sumit Gupta
2025-05-21 10:48   ` Viresh Kumar
2025-05-21 20:49     ` Rafael J. Wysocki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox