cpupower: Fix to return negative value if no permisssion for read_msr
PATCH v4 2/2 cpupower: Fix to return negative value if no permisssion for read_msr
From: xufuhai <[email protected]>
If the read_msr function is executed by a non-root user, the function returns -1, which means that there is no permission to access /dev/cpu/%d/msr, but cpufreq_has_boost_support should also return -1 immediately, and should not follow the original logic to return 0, which will cause amd The cpupower tool returns the boost active state as 0.
Reproduce procedure:
cpupower frequency-info
Reported-by yangrui <[email protected]>
Signed-off-by xufuhai <[email protected]>
Signed-off-by chenguanqiao <[email protected]>
Signed-off-by lishujin <[email protected]>
Reviewed-by Thomas Renninger <[email protected]>
--- tools/power/cpupower/utils/helpers/misc.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
tools/power/cpupower/utils/helpers/misc.c +8 -5
@@ -16,7 +16,7 @@int cpufreq_has_boost_support (unsigned int cpu,int *support,int *active,int *states) { -int ret; +int ret =0 ;unsigned long long val; *support = *active = *states =0 ;
@@ -30,18 +30,21 @@ int cpufreq_has_boost_support(unsigned int cpu, int *support, int *active,*/ if (cpupower_cpu_info.caps &CPUPOWER_CAP_AMD_CPB_MSR ) { -if (!read_msr (cpu,MSR_AMD_HWCR , &val)) { +/* +* no permission to access /dev/cpu/%d/msr, return -1 immediately, +* and should not follow the original logic to return 0 +*/ + ret =read_msr (cpu,MSR_AMD_HWCR , &val); +if (!ret) {if (!(val &CPUPOWER_AMD_CPBDIS )) *active =1 ; } }else { ret =amd_pci_get_num_boost_states (active, states); -if (ret) -return ret; } }else if (cpupower_cpu_info.caps &CPUPOWER_CAP_INTEL_IDA ) *support = *active =1 ; -return 0 ; +return ret; }int cpupower_intel_get_perf_bias (unsigned int cpu)
--
2.24.3 (Apple Git-128)