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; } _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm