For acpi_cpufreq and cppc_cpufreq, both cpuinfo_cur_freq and scaling_cur_freq exist. For pstate, only scaling_cur_freq exists. And value in scaling_cur_freq and cpuinfo_cur_freq may not be the same. For acpi_cpufreq and cppc_cpufreq, we should check cpuinfo_cur_freq but not scaling_cur_freq. So here change the check sequence to make sure it works for all cpufreq drivers. Besides, add rounding for pstate driver.
Fixes: ff6dfb8e492f ("test/power: fix CPU frequency check") Cc: david.h...@intel.com Cc: sta...@dpdk.org Signed-off-by: Richael Zhuang <richael.zhu...@arm.com> --- app/test/test_power_cpufreq.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c index b8fc53925c..1a9549527e 100644 --- a/app/test/test_power_cpufreq.c +++ b/app/test/test_power_cpufreq.c @@ -62,13 +62,13 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo) int i; if (snprintf(fullpath, sizeof(fullpath), - TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) { + TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) { return 0; } f = fopen(fullpath, "r"); if (f == NULL) { if (snprintf(fullpath, sizeof(fullpath), - TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) { + TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) { return 0; } f = fopen(fullpath, "r"); @@ -85,7 +85,7 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo) freq_conv = cur_freq; env = rte_power_get_env(); - if (env == PM_ENV_CPPC_CPUFREQ) { + if (env == PM_ENV_CPPC_CPUFREQ || env == PM_ENV_PSTATE_CPUFREQ) { /* convert the frequency to nearest 100000 value * Ex: if cur_freq=1396789 then freq_conv=1400000 * Ex: if cur_freq=800030 then freq_conv=800000 -- 2.20.1