From: Dave Jones <davej@redhat.com>
To: Marcin Slusarz <marcin.slusarz@gmail.com>,
LKML <linux-kernel@vger.kernel.org>,
Linux PM List <linux-pm@lists.linux-foundation.org>,
cpufreq@vger.kernel.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>
Subject: Re: 2.6.31-rc2+: Interrupts enabled after cpufreq_suspend
Date: Fri, 10 Jul 2009 16:13:08 -0400 [thread overview]
Message-ID: <20090710201308.GA11075@redhat.com> (raw)
In-Reply-To: <20090710192511.GB6240@redhat.com>
On Fri, Jul 10, 2009 at 03:25:11PM -0400, Dave Jones wrote:
> [PATCH] Add suspend method to cpufreq core
>
> In order to properly fix some issues with cpufreq vs. sleep on
> PowerBooks, I had to add a suspend callback to the pmac_cpufreq driver.
> I must force a switch to full speed before sleep and I switch back to
> previous speed on resume.
>
>
> Ben, is there something better we can do here ?
>
> I really don't want to add an #ifdef __powerpc__ to core code if we can help it.
> I'd rather we didn't call into driver guts at all from the suspend path.
Marcin,
Unless we get a better solution proposed, try running with this, which just
skips doing all that code entirely.
Dave
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 5cc77fb..8d3b3d1 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1288,6 +1288,14 @@ static int cpufreq_suspend(struct sys_device *sysdev, pm_message_t pmsg)
dprintk("suspending cpu %u\n", cpu);
+ /*
+ * This whole bogosity is here because Powerbooks are made of fail.
+ * No sane platform should need any of the code below to be run.
+ * (it's entirely the wrong thing to do, as driver->get may
+ * reenable interrupts on some architectures).
+ */
+
+#ifdef __powerpc__
if (!cpu_online(cpu))
return 0;
@@ -1346,6 +1354,7 @@ static int cpufreq_suspend(struct sys_device *sysdev, pm_message_t pmsg)
out:
cpufreq_cpu_put(cpu_policy);
+#endif /* __powerpc__ */
return ret;
}
@@ -1365,6 +1374,11 @@ static int cpufreq_resume(struct sys_device *sysdev)
dprintk("resuming cpu %u\n", cpu);
+ /* As with the ->suspend method, all the code below is
+ * only necessary because Powerbooks suck.
+ * See commit 42d4dc3f4e1e for jokes. */
+#ifdef __powerpc__
+
if (!cpu_online(cpu))
return 0;
@@ -1428,6 +1442,7 @@ out:
schedule_work(&cpu_policy->update);
fail:
cpufreq_cpu_put(cpu_policy);
+#endif /* __powerpc__ */
return ret;
}
next prev parent reply other threads:[~2009-07-10 20:13 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-09 15:44 2.6.31-rc2+: Interrupts enabled after cpufreq_suspend Marcin Slusarz
2009-07-10 19:25 ` Dave Jones
2009-07-10 19:25 ` Dave Jones
2009-07-10 20:13 ` Dave Jones [this message]
2009-07-11 14:33 ` Marcin Slusarz
2009-07-11 14:33 ` Marcin Slusarz
2009-07-10 20:13 ` Dave Jones
2009-07-10 22:23 ` Benjamin Herrenschmidt
2009-07-10 22:23 ` Benjamin Herrenschmidt
2009-07-10 23:46 ` Dave Jones
2009-07-10 23:46 ` Dave Jones
2009-07-16 3:10 ` Benjamin Herrenschmidt
2009-07-16 3:10 ` Benjamin Herrenschmidt
-- strict thread matches above, loose matches on Subject: below --
2009-07-09 15:44 Marcin Slusarz
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=20090710201308.GA11075@redhat.com \
--to=davej@redhat.com \
--cc=benh@kernel.crashing.org \
--cc=cpufreq@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=marcin.slusarz@gmail.com \
/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.