Hi Vaidy,
On Thu, Aug 24, 2017 at 12:28:41AM +0530, Vaidyanathan Srinivasan
wrote:

Cc'ing Rafael and linux-pm list.

> 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: Anton Blanchard <an...@samba.org>
> Signed-off-by: Vaidyanathan Srinivasan <sva...@linux.vnet.ibm.com>

This looks good to me.

Reviewed-by: Gautham R. Shenoy <e...@linux.vnet.ibm.com>
> ---
>  drivers/cpuidle/cpuidle-powernv.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/cpuidle/cpuidle-powernv.c 
> b/drivers/cpuidle/cpuidle-powernv.c
> index 42896a67aeae..5f3922392059 100644
> --- a/drivers/cpuidle/cpuidle-powernv.c
> +++ b/drivers/cpuidle/cpuidle-powernv.c
> @@ -383,9 +383,9 @@ static int powernv_add_idle_states(void)
>                * Firmware passes residency and latency values in ns.
>                * cpuidle expects it in us.
>                */
> -             exit_latency = latency_ns[i] / 1000;
> +             exit_latency = DIV_ROUND_UP(latency_ns[i], 1000);
>               if (!rc)
> -                     target_residency = residency_ns[i] / 1000;
> +                     target_residency = DIV_ROUND_UP(residency_ns[i], 1000);
>               else
>                       target_residency = 0;
> 
> -- 
> 2.13.5
> 

Reply via email to