Skip to contentSkip to conversation

cpufreq/amd-pstate: Use sysfs_match_string() for epp

PATCH Superseded Mario Limonciello (AMD) 2 participants 2 messages Sep 24, 2025 – Oct 9, 2025

Subsystems (2)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 cpufreq/amd-pstate: Use sysfs_match_string() for epp

Rather than scanning the buffer and manually matching the string use the sysfs macros.

---
 drivers/cpufreq/amd-pstate.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)
drivers/cpufreq/amd-pstate.c +1 -6
index ba2adea03db1..b8af6cad9e2c 100644
@@ -1157,15 +1157,10 @@ static ssize_t store_energy_performance_preference(
 		struct cpufreq_policy *policy, const char *buf, size_t count)
 {
 	struct amd_cpudata *cpudata = policy->driver_data;
-	char str_preference[21];
 	ssize_t ret;
 	u8 epp;
 
-	ret = sscanf(buf, "%20s", str_preference);
-	if (ret != 1)
-		return -EINVAL;
-
-	ret = match_string(energy_perf_strings, -1, str_preference);
+	ret = sysfs_match_string(energy_perf_strings, buf);
 	if (ret < 0)
 		return -EINVAL;
 
Signature · 1 line
2.51.0
#1 lore raw

Hello Mario,

Quoted 2 lines · Mario Limonciello (AMD)

Rather than scanning the buffer and manually matching the string use the sysfs macros.

This is a nice optimization.

While at it, would it be possible to get rid of the "NULL" entry from the energy_perf_strings array ?

Something like the following in addition to the change in your patch?

--------------x8---------------------------x8----------------------------

drivers/cpufreq/amd-pstate.c +2 -3
index 34835681be92..bd022dd21a4a 100644
@@ -117,8 +117,7 @@ static const char * const energy_perf_strings[] = {
        [EPP_INDEX_PERFORMANCE] = "performance",
        [EPP_INDEX_BALANCE_PERFORMANCE] = "balance_performance",
        [EPP_INDEX_BALANCE_POWERSAVE] = "balance_power",
-       [EPP_INDEX_POWERSAVE] = "power",
-       NULL
+       [EPP_INDEX_POWERSAVE] = "power"
 };
 
 static unsigned int epp_values[] = {
@@ -1180,7 +1179,7 @@ static ssize_t show_energy_performance_available_preferences(
                return sysfs_emit_at(buf, offset, "%s\n",
                                energy_perf_strings[EPP_INDEX_PERFORMANCE]);
 
-       while (energy_perf_strings[i] != NULL)
+       for (i = 0; i < ARRAY_SIZE(energy_perf_strings); i++)
                offset += sysfs_emit_at(buf, offset, "%s ", energy_perf_strings[i++]);
 
        offset += sysfs_emit_at(buf, offset, "\n");

--------------x8---------------------------x8----------------------------

Quoted 30 lines
---
 drivers/cpufreq/amd-pstate.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)
drivers/cpufreq/amd-pstate.c +1 -6
index ba2adea03db1..b8af6cad9e2c 100644
@@ -1157,15 +1157,10 @@ static ssize_t store_energy_performance_preference(
 		struct cpufreq_policy *policy, const char *buf, size_t count)
 {
 	struct amd_cpudata *cpudata = policy->driver_data;
-	char str_preference[21];
 	ssize_t ret;
 	u8 epp;
 
-	ret = sscanf(buf, "%20s", str_preference);
-	if (ret != 1)
-		return -EINVAL;
-
-	ret = match_string(energy_perf_strings, -1, str_preference);
+	ret = sysfs_match_string(energy_perf_strings, buf);
 	if (ret < 0)
 		return -EINVAL;
 
Signature · 1 line
2.51.0
Signature · 2 lines
Thanks and Regards
gautham.