X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest%2Ftest_power_cpufreq.c;h=1a9549527e7d68d2dd4eb0c5be5b2824a7419a34;hb=f0243339496d48e6f5d76e6ef6741d6986b965d0;hp=2b4728d2e1125b02268fcc6a1c624ab28ed3389c;hpb=6db92b3b9bb130acf0bc9d774ab2d75ea67d00df;p=dpdk.git diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c index 2b4728d2e1..1a9549527e 100644 --- a/app/test/test_power_cpufreq.c +++ b/app/test/test_power_cpufreq.c @@ -55,18 +55,20 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo) 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"); @@ -80,15 +82,18 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo) 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); @@ -249,6 +254,8 @@ check_power_freq_down(void) { 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) { @@ -434,6 +441,12 @@ check_power_turbo(void) 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); @@ -453,6 +466,12 @@ check_power_turbo(void) 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); @@ -482,7 +501,8 @@ test_power_cpufreq(void) /* 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; }