Re: [PATCH] cpuidle: exynos: Unify target residency for AFTR and coupled AFTR states

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 03/28/2019 02:33 PM, Marek Szyprowski wrote:
> Since commit 45f1ff59e27c ("cpuidle: Return nohz hint from
> cpuidle_select()") Exynos CPUidle driver stopped entering C1 (AFTR) mode
> on Exynos4412-based Trats2 board.
> 
> Further analysis revealed that the CPUidle framework changed the way
> it handles predicted timer ticks and reported target residency for the
> given idle states. As a result, the C1 (AFTR) state was not chosen
> anymore on completely idle device. The main issue was to high target
> residency value. The similar C1 (AFTR) state for 'coupled' CPUidle
> version used 10 times lower value for the target residency, despite
> the fact that it is the same state from the hardware perspective.
> 
> The 100000us value for standard C1 (AFTR) mode is there from the begining
> of the support for this idle state, added by the commit 67173ca492ab
> ("ARM: EXYNOS: Add support AFTR mode on EXYNOS4210"). That commit doesn't
> give any reason for it, instead it looks like it was blindly copied from
> the WFI/IDLE state of the same driver that time. That time, that value
> was probably not really used by the framework for any critical decision,
> so it didn't matter that much.
> 
> Now it turned out to be an issue, so unify the target residency with the
> 'coupled' version, as it seems to better match the real use case values
> and restores the operation of the Exynos CPUidle driver on the idle
> device.
> 
> Signed-off-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx>

Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@xxxxxxxxxxx>

Thank you for fixing this!

> ---
>  drivers/cpuidle/cpuidle-exynos.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/cpuidle/cpuidle-exynos.c b/drivers/cpuidle/cpuidle-exynos.c
> index a95c7907a1fb..7284495d4869 100644
> --- a/drivers/cpuidle/cpuidle-exynos.c
> +++ b/drivers/cpuidle/cpuidle-exynos.c
> @@ -84,7 +84,7 @@ static struct cpuidle_driver exynos_idle_driver = {
>  		[1] = {
>  			.enter			= exynos_enter_lowpower,
>  			.exit_latency		= 300,
> -			.target_residency	= 100000,
> +			.target_residency	= 10000,
>  			.name			= "C1",
>  			.desc			= "ARM power down",
>  		},
> 

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics



[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux for Synopsys ARC Processors]    
  • [Linux on Unisoc (RDA Micro) SoCs]     [Linux Actions SoC]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  •   Powered by Linux