test/power: fix CPU frequency check for intel_pstate
authorRichael Zhuang <richael.zhuang@arm.com>
Wed, 14 Jul 2021 10:44:05 +0000 (18:44 +0800)
committerDavid Marchand <david.marchand@redhat.com>
Tue, 20 Jul 2021 15:24:07 +0000 (17:24 +0200)
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: stable@dpdk.org
Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
Acked-by: David Hunt <david.hunt@intel.com>
app/test/test_power_cpufreq.c

index b8fc539..1a95495 100644 (file)
@@ -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