* 2.6.29 PM and CPUIDLE
@ 2009-04-10 14:54 Jean Pihet
2009-04-10 23:11 ` Kevin Hilman
0 siblings, 1 reply; 2+ messages in thread
From: Jean Pihet @ 2009-04-10 14:54 UTC (permalink / raw)
To: linux-omap@vger.kernel.org, Kevin Hilman
Hi,
I am having problems using CPUIDLE PM_SLEEP on Beagleboard with the latest pm
tree.
It looks like CPUIDLE prevents the system to go into retention mode, while it
works fine without CPUIDLE enabled:
root@beagleboard:~# echo 1 > /sys/power/clocks_off_while_idle
root@beagleboard:~# echo mem > /sys/power/state
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.02 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
omapfb omapfb: timeout waiting for FRAME DONE
Powerdomain (core_pwrdm) didn't enter target state 1
Powerdomain (dss_pwrdm) didn't enter target state 1
Could not enter target state in pm_suspend
Restarting tasks ... done.
The registers dump shows the next power state in PM_PWSTCTRL is set to ON
instead of RET for MPU and CORE. Furthermore DSS is not reaching RET (stays
ON).
Are the CPUIDLE and suspend/resume features compatible with each other? Am I
missing something, e.g. a way to change the behavior from /sys?
Regards,
Jean
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: 2.6.29 PM and CPUIDLE
2009-04-10 14:54 2.6.29 PM and CPUIDLE Jean Pihet
@ 2009-04-10 23:11 ` Kevin Hilman
0 siblings, 0 replies; 2+ messages in thread
From: Kevin Hilman @ 2009-04-10 23:11 UTC (permalink / raw)
To: Jean Pihet; +Cc: linux-omap@vger.kernel.org
Jean Pihet <jpihet@mvista.com> writes:
> I am having problems using CPUIDLE PM_SLEEP on Beagleboard with the
> latest pm tree. It looks like CPUIDLE prevents the system to go
> into retention mode, while it works fine without CPUIDLE enabled:
It's a feature. ;)
> root@beagleboard:~# echo 1 > /sys/power/clocks_off_while_idle
> root@beagleboard:~# echo mem > /sys/power/state
Try this:
# echo 1 > /sys/power/sleep_while_idle
And then try to suspend. I think this should work (you may have to
wait a little just so you hit the idle loop before trying suspend.)
What's happening is that without sleep_while_idle set, CPUidle will
not go into any other state than C1 (see the omap3_can_sleep() check.)
Recently, C1 was changed to keep the MPU and CORE ON to have the a
very fast wakeup latency. So, with CPUidle running, the next power
states are set to ON in the idle path and never tested/changed in the
suspend path.
The bug is that the suspend path should always ensure that either RET
or OFF is set in the next states (depending on enable_off_mode.) This
was not necessary before the new C1 was added because all of the idle
states at least tried for RET.
Kevin
> PM: Syncing filesystems ... done.
> Freezing user space processes ... (elapsed 0.02 seconds) done.
> Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
> Suspending console(s) (use no_console_suspend to debug)
> omapfb omapfb: timeout waiting for FRAME DONE
> Powerdomain (core_pwrdm) didn't enter target state 1
> Powerdomain (dss_pwrdm) didn't enter target state 1
> Could not enter target state in pm_suspend
> Restarting tasks ... done.
>
> The registers dump shows the next power state in PM_PWSTCTRL is set to ON
> instead of RET for MPU and CORE. Furthermore DSS is not reaching RET (stays
> ON).
>
> Are the CPUIDLE and suspend/resume features compatible with each other? Am I
> missing something, e.g. a way to change the behavior from /sys?
>
> Regards,
> Jean
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-04-10 23:11 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-10 14:54 2.6.29 PM and CPUIDLE Jean Pihet
2009-04-10 23:11 ` Kevin Hilman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox