cpufreq/amd-pstate: Only print supported EPP values for performance governor
authorAyush Jain <ayush.jain3@amd.com>
Fri, 3 Nov 2023 09:48:15 +0000 (15:18 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 8 Dec 2023 07:52:25 +0000 (08:52 +0100)
[ Upstream commit 142c169b31beb364ef39385b4e88735bd51d37fe ]

show_energy_performance_available_preferences() to show only supported
values which is performance in performance governor policy.

-------Before--------
$ cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_driver
amd-pstate-epp
$ cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
performance
$ cat /sys/devices/system/cpu/cpu1/cpufreq/energy_performance_preference
performance
$ cat /sys/devices/system/cpu/cpu1/cpufreq/energy_performance_available_preferences
default performance balance_performance balance_power power

-------After--------
$ cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_driver
amd-pstate-epp
$ cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
performance
$ cat /sys/devices/system/cpu/cpu1/cpufreq/energy_performance_preference
performance
$ cat /sys/devices/system/cpu/cpu1/cpufreq/energy_performance_available_preferences
performance

Fixes: ffa5096a7c33 ("cpufreq: amd-pstate: implement Pstate EPP support for the AMD processors")
Suggested-by: Wyes Karny <wyes.karny@amd.com>
Signed-off-by: Ayush Jain <ayush.jain3@amd.com>
Reviewed-by: Wyes Karny <wyes.karny@amd.com>
Acked-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/cpufreq/amd-pstate.c

index 3313d1d..1f61864 100644 (file)
@@ -882,11 +882,16 @@ static ssize_t show_energy_performance_available_preferences(
 {
        int i = 0;
        int offset = 0;
+       struct amd_cpudata *cpudata = policy->driver_data;
+
+       if (cpudata->policy == CPUFREQ_POLICY_PERFORMANCE)
+               return sysfs_emit_at(buf, offset, "%s\n",
+                               energy_perf_strings[EPP_INDEX_PERFORMANCE]);
 
        while (energy_perf_strings[i] != NULL)
                offset += sysfs_emit_at(buf, offset, "%s ", energy_perf_strings[i++]);
 
-       sysfs_emit_at(buf, offset, "\n");
+       offset += sysfs_emit_at(buf, offset, "\n");
 
        return offset;
 }