s2idle breaks on machines without cpuidle support

Sudeep Holla sudeep.holla at arm.com
Mon Feb 6 02:12:39 PST 2023


Hi Kazaki,

On Sun, Feb 05, 2023 at 12:27:47AM +0900, Kazuki wrote:
> 
> Hi everyone,
> 
> s2idle is blocked on machines without proper cpuidle support here
> in kernel/sched/idle.c:
> 
> > if (cpuidle_not_available(drv, dev)) {
> > 	tick_nohz_idle_stop_tick();
> 
> > 	default_idle_call();
> > 	goto exit_idle;
> > }
> 
> > /*
> >  * Suspend-to-idle ("s2idle") is a system state in which all user space
> >  * has been frozen, all I/O devices have been suspended and the only
> 
> However, there are 2 problems with this approach:
> 
> 1. The suspend framework does not expect this, and continues to suspend the
> machine, which causes machines without proper cpuidle support to break when
> suspending

What do you mean by break ? More details on the observation would be helpful.

> 2. Suspend actually works on ARM64 machines even without proper
> cpuidle (PSCI cpuidle) since they support wfi, so the assumption here is wrong
> on such machines
>

Sorry I am bit confused here. Your point (2) contradicts the $subject.

> I'm not exactly sure how to figure this out, and my attempts have all led to an
> unbootable kernel, so I've cc'ed the relevant people and hopefully we can find a
> solution to this problem.
>

Again, since s2idle is userspace driven, I don't understand what do you
mean by unbootable kernel in the context of s2idle.

-- 
Regards,
Sudeep



More information about the linux-arm-kernel mailing list