All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Hilman <khilman@deeprootsystems.com>
To: Jean Pihet <jpihet@mvista.com>
Cc: "linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>
Subject: Re: 2.6.29 PM and CPUIDLE
Date: Fri, 10 Apr 2009 16:11:35 -0700	[thread overview]
Message-ID: <8763hc2jfc.fsf@deeprootsystems.com> (raw)
In-Reply-To: <200904101654.58917.jpihet@mvista.com> (Jean Pihet's message of "Fri\, 10 Apr 2009 16\:54\:58 +0200")

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

      reply	other threads:[~2009-04-10 23:11 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-10 14:54 2.6.29 PM and CPUIDLE Jean Pihet
2009-04-10 23:11 ` Kevin Hilman [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8763hc2jfc.fsf@deeprootsystems.com \
    --to=khilman@deeprootsystems.com \
    --cc=jpihet@mvista.com \
    --cc=linux-omap@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.