]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
cpupower: Add the function to check AMD P-State enabled
authorHuang Rui <ray.huang@amd.com>
Tue, 22 Feb 2022 15:34:18 +0000 (23:34 +0800)
committerShuah Khan <skhan@linuxfoundation.org>
Wed, 23 Feb 2022 01:36:32 +0000 (18:36 -0700)
The processor with AMD P-State function also supports legacy ACPI
hardware P-States feature as well. Once driver sets AMD P-State eanbled,
the processor will respond the finer grain AMD P-State feature instead of
legacy ACPI P-States. So it introduces the cpupower_amd_pstate_enabled()
to check whether the current kernel enables AMD P-State or AMD CPUFreq
module.

Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
tools/power/cpupower/utils/helpers/helpers.h
tools/power/cpupower/utils/helpers/misc.c

index b4813efdfb009851fee49ecf85dbb2fdfe2eb8d9..62771a08687127c7f3ce5946b850f07a67e44871 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <libintl.h>
 #include <locale.h>
+#include <stdbool.h>
 
 #include "helpers/bitmask.h"
 #include <cpupower.h>
@@ -136,6 +137,12 @@ extern int decode_pstates(unsigned int cpu, int boost_states,
 
 extern int cpufreq_has_boost_support(unsigned int cpu, int *support,
                                     int *active, int * states);
+
+/* AMD P-State stuff **************************/
+bool cpupower_amd_pstate_enabled(void);
+
+/* AMD P-State stuff **************************/
+
 /*
  * CPUID functions returning a single datum
  */
@@ -168,6 +175,9 @@ static inline int cpufreq_has_boost_support(unsigned int cpu, int *support,
                                            int *active, int * states)
 { return -1; }
 
+static inline bool cpupower_amd_pstate_enabled(void)
+{ return false; }
+
 /* cpuid and cpuinfo helpers  **************************/
 
 static inline unsigned int cpuid_eax(unsigned int op) { return 0; };
index fc6e345117216af5179f253bb77717cba223016f..0c483cdefcc26242b421088303c7ffedd792639f 100644 (file)
@@ -3,9 +3,11 @@
 #include <stdio.h>
 #include <errno.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include "helpers/helpers.h"
 #include "helpers/sysfs.h"
+#include "cpufreq.h"
 
 #if defined(__i386__) || defined(__x86_64__)
 
@@ -83,6 +85,22 @@ int cpupower_intel_set_perf_bias(unsigned int cpu, unsigned int val)
        return 0;
 }
 
+bool cpupower_amd_pstate_enabled(void)
+{
+       char *driver = cpufreq_get_driver(0);
+       bool ret = false;
+
+       if (!driver)
+               return ret;
+
+       if (!strcmp(driver, "amd-pstate"))
+               ret = true;
+
+       cpufreq_put_driver(driver);
+
+       return ret;
+}
+
 #endif /* #if defined(__i386__) || defined(__x86_64__) */
 
 /* get_cpustate