From 388c4c03eca316698d2bb55435ec5c804c67c844 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mattias=20R=C3=B6nnblom?= Date: Thu, 14 Nov 2019 15:10:36 +0100 Subject: [PATCH] power: handle frequency increase with turbo disabled MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Tested-by: David Hunt Acked-by: David Hunt Reviewed-by: Liang Ma --- lib/librte_power/power_acpi_cpufreq.c | 3 ++- lib/librte_power/power_pstate_cpufreq.c | 3 ++- 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 22989244ab..f443fce69f 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 8f095e0ab1..2d8a9499dc 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. */ -- 2.20.1