Re: cpufreq problem wrt suspend/resume on Athlon64

From: Rafael J. Wysocki
Date: Thu Feb 03 2005 - 18:18:42 EST


On Thursday, 3 of February 2005 15:22, Pavel Machek wrote:
> Hi!
>
> > > > So, would it be acceptable to check in _suspend() if the state is S4
> > > > and drop the frequency in that case or do nothing otherwise?
> > >
> > > No. The point is that this is _very_ system-specific. Some systems resume
> > > always at full speed, some always at low speed; for S4 the behaviour may be
> > > completely unpredictable. And in fact I wouldn't want my desktop P4 drop th
> > > 12.5 % frequency if I ask it to suspend to disk, too. "Ignoring" the warning
> > > seems to be the best thing to me. The good thing is, after all, that cpufreq
> > > detected this situation and tries to correct for it.
> >
> > Well, the warning is not a big problem, as far as I'm concerned. The problem is
> > that the box often reboots when it's woken up on batteries and this certainly
> > is related to cpufreq (ie it does not happen if cpufreq is not compiled in).
> >
> > Pavel has suggested that it may happen when the frequency of
> > the CPU is too high on resume, so I'm trying to verify if this is the case. If so,
> > which I'm not entirely convinced about yet, I'll be going to provide a fix
> > for it, but I wouldn't like to do anything that's not acceptable from the
> > start.
>
> Well, try to force your machine to 2GHz while it is on battery. If it
> crashes, you have verified it is indeed the problem. [Insert standard
> disclaimer about exploding batteries here.]

Instead of trying to blow up the battery I used the patch that forces the CPU
to 800 MHz and it apparently survives resuming on batteries - at least 3
times out of 3 attempts (I'll try some times more tomorrow).

It seems to boot at 1800 MHz, though, every time, according to
cpufreq_resume().


> > I'm currently thinking that the proper approach may be to add a ->suspend()
> > routine to struct cpufreq_driver and call the driver-specific ->suspend()
> > (if one is defined) from cpufreq_suspend(). Then, it'll be possible to do
> > whatever-is-necessary on a per-driver basis. Just a thought. :-)
>
> Yes, that seems like right solution.

Then I'll try to do something along this line.

Greets,
Rafael


--
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to.
-- Lewis Carroll "Alice's Adventures in Wonderland"
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/