diff mbox series

[4/7] cpupower: Don't try to read frequency from hardware when kernel uses aperfmperf

Message ID 20241218191144.3440854-5-superm1@kernel.org (mailing list archive)
State Accepted
Delegated to: Shuah Khan
Headers show
Series cpupower improvements on AMD systems | expand

Commit Message

Mario Limonciello Dec. 18, 2024, 7:09 p.m. UTC
From: Mario Limonciello <mario.limonciello@amd.com>

When the amd-pstate is in use frequency is set by the hardware and
measured by the kernel through using the aperf and mperf registers.

There is no direct call to the hardware to indicate current frequency.

Detect that this feature is in use and skip the check.

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
 tools/power/cpupower/utils/cpufreq-info.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/tools/power/cpupower/utils/cpufreq-info.c b/tools/power/cpupower/utils/cpufreq-info.c
index 5f092f3c729e7..3df28e45be421 100644
--- a/tools/power/cpupower/utils/cpufreq-info.c
+++ b/tools/power/cpupower/utils/cpufreq-info.c
@@ -254,7 +254,12 @@  static int get_freq_kernel(unsigned int cpu, unsigned int human)
 
 static int get_freq_hardware(unsigned int cpu, unsigned int human)
 {
-	unsigned long freq = cpufreq_get_freq_hardware(cpu);
+	unsigned long freq;
+
+	if (cpupower_cpu_info.caps & CPUPOWER_CAP_APERF)
+		return -EINVAL;
+
+	freq = cpufreq_get_freq_hardware(cpu);
 	printf(_("  current CPU frequency: "));
 	if (!freq) {
 		printf("Unable to call hardware\n");