FILE *f;
char fullpath[PATH_MAX];
char buf[BUFSIZ];
+ enum power_management_env env;
uint32_t cur_freq;
+ uint32_t freq_conv;
int ret = -1;
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");
goto fail_all;
cur_freq = strtoul(buf, NULL, TEST_POWER_CONVERT_TO_DECIMAL);
-
- /* 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
- */
- unsigned int freq_conv = 0;
- freq_conv = (cur_freq + TEST_FREQ_ROUNDING_DELTA)
- / TEST_ROUND_FREQ_TO_N_100000;
- freq_conv = freq_conv * TEST_ROUND_FREQ_TO_N_100000;
+ freq_conv = cur_freq;
+
+ env = rte_power_get_env();
+ 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
+ */
+ freq_conv = (cur_freq + TEST_FREQ_ROUNDING_DELTA)
+ / TEST_ROUND_FREQ_TO_N_100000;
+ freq_conv = freq_conv * TEST_ROUND_FREQ_TO_N_100000;
+ }
if (turbo)
ret = (freqs[idx] <= freq_conv ? 0 : -1);
{
int ret;
+ rte_power_freq_enable_turbo(TEST_POWER_LCORE_ID);
+
/* test with an invalid lcore id */
ret = rte_power_freq_down(TEST_POWER_LCORE_INVALID);
if (ret >= 0) {
TEST_POWER_LCORE_ID);
return -1;
}
+ ret = rte_power_freq_max(TEST_POWER_LCORE_ID);
+ if (ret < 0) {
+ printf("Fail to scale up the freq to max on lcore %u\n",
+ TEST_POWER_LCORE_ID);
+ return -1;
+ }
/* Check the current frequency */
ret = check_cur_freq(TEST_POWER_LCORE_ID, 0, true);
TEST_POWER_LCORE_ID);
return -1;
}
+ ret = rte_power_freq_max(TEST_POWER_LCORE_ID);
+ if (ret < 0) {
+ printf("Fail to scale up the freq to max on lcore %u\n",
+ TEST_POWER_LCORE_ID);
+ return -1;
+ }
/* Check the current frequency */
ret = check_cur_freq(TEST_POWER_LCORE_ID, 1, false);
/* Test environment configuration */
env = rte_power_get_env();
- if ((env != PM_ENV_ACPI_CPUFREQ) && (env != PM_ENV_PSTATE_CPUFREQ)) {
+ if ((env != PM_ENV_ACPI_CPUFREQ) && (env != PM_ENV_PSTATE_CPUFREQ) &&
+ (env != PM_ENV_CPPC_CPUFREQ)) {
printf("Unexpectedly got an environment other than ACPI/PSTATE\n");
goto fail_all;
}
/* test of exit power management for an invalid lcore */
ret = rte_power_exit(TEST_POWER_LCORE_INVALID);
if (ret == 0) {
- printf("Unpectedly exit power management successfully for "
+ printf("Unexpectedly exit power management successfully for "
"lcore %u\n", TEST_POWER_LCORE_INVALID);
rte_power_unset_env();
return -1;