power: fix current frequency index
authorReshma Pattan <reshma.pattan@intel.com>
Wed, 29 Jul 2020 13:58:53 +0000 (14:58 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 7 Oct 2020 12:51:52 +0000 (14:51 +0200)
commita3f9cca718d75f2d60f5895be94f0f14e5fc4865
tree05f5f16f975de40449ce85e52fedccad6425a8c3
parentca32fa67a7f2f7b54e57b2a0772ceacafb6db56f
power: fix current frequency index

During power initialization the pstate cpufreq api is
not setting the initial curr_idx of pstate_power_info
to corresponding current frequency index.

Without this the idx is always 0, which is causing the
below check to pass and returns without setting the initial
min/max frequency to system max frequency and this leads to
incorrect frequency settings when power_pstate_cpufreq_set_freq()
is called in the apps.

set_freq_internal(struct pstate_power_info *pi, uint32_t idx)
{
...

 /* Check if it is the same as current */
        if (idx == pi->curr_idx)
                return 0;
...
}

scenario 1:
If system has starting scaling min/max: 1000/1000, and want to
set this to 2200/2200, the max frequency gets updated but not min.

scenario 2:
If system has starting scaling min/max: 2200/1000, and want to set
to 2200/2200, the max, min frequency was not updated. Since no change
in max that should be ok, but min was also ignored, which will be fixed
now with the new changes.

Fixes: e6c6dc0f ("power: add p-state driver compatibility")
Cc: stable@dpdk.org
Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Reviewed-by: Liang Ma <liang.j.ma@intel.com>
lib/librte_power/power_pstate_cpufreq.c