Commit 8d4e10e9 authored by Vaidyanathan Srinivasan's avatar Vaidyanathan Srinivasan Committed by Michael Ellerman

powerpc/powernv/idle: Round up latency and residency values

On PowerNV platforms, firmware provides exit latency and
target residency for each of the idle states in nano
seconds.  Cpuidle framework expects the values in micro
seconds.  Round up to nearest micro seconds to avoid errors
in cases where the values are defined as fractional micro
seconds.

Default idle state of 'snooze' has exit latency of zero.  If
other states have fractional micro second exit latency, they
would get rounded down to zero micro second and make cpuidle
framework choose deeper idle state when snooze loop is the
right choice.
Reported-by: default avatarAnton Blanchard <anton@samba.org>
Signed-off-by: default avatarVaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Reviewed-by: default avatarGautham R. Shenoy <ego@linux.vnet.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent acdfe931
...@@ -383,9 +383,9 @@ static int powernv_add_idle_states(void) ...@@ -383,9 +383,9 @@ static int powernv_add_idle_states(void)
* Firmware passes residency and latency values in ns. * Firmware passes residency and latency values in ns.
* cpuidle expects it in us. * cpuidle expects it in us.
*/ */
exit_latency = latency_ns[i] / 1000; exit_latency = DIV_ROUND_UP(latency_ns[i], 1000);
if (!rc) if (!rc)
target_residency = residency_ns[i] / 1000; target_residency = DIV_ROUND_UP(residency_ns[i], 1000);
else else
target_residency = 0; target_residency = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment