From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: buggy usage of pm_idle by omap1 code
Date: Mon, 19 Dec 2011 15:22:51 -0800 [thread overview]
Message-ID: <20111219232251.GV6464@atomide.com> (raw)
In-Reply-To: <alpine.LFD.2.02.1112191758520.2907@xanadu.home>
* Nicolas Pitre <nico@fluxnic.net> [111219 14:32]:
> On Mon, 19 Dec 2011, Russell King - ARM Linux wrote:
>
> > On Mon, Dec 19, 2011 at 09:35:19AM -0800, Tony Lindgren wrote:
> > > Commit 9ccdac3662dbf3c75e8f8851a214bdf7d365a4bd ([ARM] idle:
> > > clean up pm_idle calling, obey hlt_counter) removed a check
> > > for NULL pm_idle.
> > >
> > > On omap1 the system hits an equivalent of suspend during idle.
> > > If we are suspending, we need to make sure so we don't call
> > > omap1_pm_idle during the suspend process.
> > >
> > > Fix this by setting the pm_idle function to a an empty
> > > function while suspending.
> >
> > 2. what's wrong with calling disable_hlt() to prevent the pm_idle function
> > being called? Why solve it this complicated way of changing the pm_idle
> > pointer when there's some infrastructure which can fix it for you already?
>
> Absolutely. I must have been stairing at the whole thing for too long,
> as I obviously did exactly that already elsewhere.
>
> So I propose this alternative:
>
> ARM: OMAP1: Fix pm_idle during suspend
>
> Commit 9ccdac3662dbf3c75e8f8851a214bdf7d365a4bd ([ARM] idle:
> clean up pm_idle calling, obey hlt_counter) removed a check
> for NULL pm_idle.
>
> Replace the NULL assignment in the OMAP1 code with disable_hlt()
> to be in sync with the core code and provide the intended behavior.
>
> Signed-off-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Yeh this is better. Looks like you beat me to it by few minutes:
Acked-by: Tony Lindgren <tony@atomide.com>
> diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c
> index 89ea20ca0c..6c6a2dc554 100644
> --- a/arch/arm/mach-omap1/pm.c
> +++ b/arch/arm/mach-omap1/pm.c
> @@ -583,8 +583,6 @@ static void omap_pm_init_proc(void)
>
> #endif /* DEBUG && CONFIG_PROC_FS */
>
> -static void (*saved_idle)(void) = NULL;
> -
> /*
> * omap_pm_prepare - Do preliminary suspend work.
> *
> @@ -592,8 +590,7 @@ static void (*saved_idle)(void) = NULL;
> static int omap_pm_prepare(void)
> {
> /* We cannot sleep in idle until we have resumed */
> - saved_idle = pm_idle;
> - pm_idle = NULL;
> + disable_hlt();
>
> return 0;
> }
> @@ -630,7 +627,7 @@ static int omap_pm_enter(suspend_state_t state)
>
> static void omap_pm_finish(void)
> {
> - pm_idle = saved_idle;
> + enable_hlt();
> }
>
>
next prev parent reply other threads:[~2011-12-19 23:22 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-17 3:24 buggy usage of pm_idle by omap1 code Nicolas Pitre
2011-12-19 17:35 ` Tony Lindgren
2011-12-19 17:44 ` Nicolas Pitre
2011-12-19 21:34 ` Russell King - ARM Linux
2011-12-19 23:04 ` Nicolas Pitre
2011-12-19 23:22 ` Tony Lindgren [this message]
2011-12-19 23:20 ` Tony Lindgren
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=20111219232251.GV6464@atomide.com \
--to=tony@atomide.com \
--cc=linux-arm-kernel@lists.infradead.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.