summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMattias Rönnblom <mattias.ronnblom@ericsson.com>2019-11-14 15:10:36 +0100
committerThomas Monjalon <thomas@monjalon.net>2019-11-21 00:52:31 +0100
commit388c4c03eca316698d2bb55435ec5c804c67c844 (patch)
tree9852540dc2c29464bff49ad4e7f206c83522fa7c
parent43d0e304980a1527bcac92dc679057b189e2545a (diff)
downloaddpdk-next-net-intel-388c4c03eca316698d2bb55435ec5c804c67c844.zip
dpdk-next-net-intel-388c4c03eca316698d2bb55435ec5c804c67c844.tar.gz
dpdk-next-net-intel-388c4c03eca316698d2bb55435ec5c804c67c844.tar.xz
power: handle frequency increase with turbo disabled
Calling pstate's or acpi's rte_power_freq_up() when on the highest non-turbo frequency results in an error, if turbo is enabled in the BIOS, but disabled via the power library. The error is in the form of a return code and a RTE_LOG() entry on the ERR level. According to the API documentation, the frequency is scaled up "according to the available frequencies". In case turbo is disabled, that frequency is not available. This patch's rte_power_freq_up() behaviour is also consistent with how rte_power_freq_max() is implemented (i.e. the highest non-turbo frequency is set, in case turbo is disabled). Fixes: 445c6528b55f ("power: common interface for guest and host") Fixes: e6c6dc0f96c8 ("power: add p-state driver compatibility") Cc: stable@dpdk.org Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com> Tested-by: David Hunt <david.hunt@intel.com> Acked-by: David Hunt <david.hunt@intel.com> Reviewed-by: Liang Ma <liang.j.ma@intel.com>
-rw-r--r--lib/librte_power/power_acpi_cpufreq.c3
-rw-r--r--lib/librte_power/power_pstate_cpufreq.c3
2 files changed, 4 insertions, 2 deletions
diff --git a/lib/librte_power/power_acpi_cpufreq.c b/lib/librte_power/power_acpi_cpufreq.c
index 2298924..f443fce 100644
--- a/lib/librte_power/power_acpi_cpufreq.c
+++ b/lib/librte_power/power_acpi_cpufreq.c
@@ -515,7 +515,8 @@ power_acpi_cpufreq_freq_up(unsigned int lcore_id)
}
pi = &lcore_power_info[lcore_id];
- if (pi->curr_idx == 0)
+ if (pi->curr_idx == 0 ||
+ (pi->curr_idx == 1 && pi->turbo_available && !pi->turbo_enable))
return 0;
/* Frequencies in the array are from high to low. */
diff --git a/lib/librte_power/power_pstate_cpufreq.c b/lib/librte_power/power_pstate_cpufreq.c
index 8f095e0..2d8a949 100644
--- a/lib/librte_power/power_pstate_cpufreq.c
+++ b/lib/librte_power/power_pstate_cpufreq.c
@@ -696,7 +696,8 @@ power_pstate_cpufreq_freq_up(unsigned int lcore_id)
}
pi = &lcore_power_info[lcore_id];
- if (pi->curr_idx == 0)
+ if (pi->curr_idx == 0 ||
+ (pi->curr_idx == 1 && pi->turbo_available && !pi->turbo_enable))
return 0;
/* Frequencies in the array are from high to low. */