[PATCH 1/2] ARM: omap: cpuidle34xx: balance cpu_pm_enter/exit()

Andreas Kemnade andreas at kemnade.info
Wed Oct 28 13:27:18 PDT 2026


On Wed, 28 Oct 2026 20:15:11 +0100
Andreas Kemnade <andreas at kemnade.info> wrote:

> These calls are usually done in a balanced way, so allow notifiers to
> assume that these calls are balanced under all circumstances.
> Seen some spurios vfp issues probably connected to this.
> 
> Signed-off-by: Andreas Kemnade <andreas at kemnade.info>

Looked again at some discussions with Sicelo testing such things:
He had observed a NEON off count 1 but MPU 0 in /sys/kernel/debug/pm_debug/count.
Probably more involved, but lets not freak out things here.
So that is definitively a real problem fixed by this. vfp_pm_resume()
would not be called to restore the state without a patch like this.

So this is

Fixes: 1cd96478cf150 ("ARM: OMAP3xxx: CPUIdle: optimize __omap3_enter_idle()")

> ---
>  arch/arm/mach-omap2/cpuidle34xx.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/cpuidle34xx.c b/arch/arm/mach-omap2/cpuidle34xx.c
> index 2ab5dcbfb7f6..e42dcf8c03a3 100644
> --- a/arch/arm/mach-omap2/cpuidle34xx.c
> +++ b/arch/arm/mach-omap2/cpuidle34xx.c
> @@ -139,8 +139,7 @@ static int omap3_enter_idle(struct cpuidle_device *dev,
>  	 * Call idle CPU PM enter notifier chain to restore
>  	 * VFP context.
>  	 */
> -	if (cx->mpu_state == PWRDM_POWER_OFF &&
> -	    pwrdm_read_prev_pwrst(mpu_pd) == PWRDM_POWER_OFF)
> +	if (cx->mpu_state == PWRDM_POWER_OFF)
>  		cpu_pm_exit();
>  
>  out_clkdm_set:
> 




More information about the linux-arm-kernel mailing list