Re: PROBLEM: ACPI Thermal Zone for CPU0 does not update after hibernation

From: Andrew Morton
Date: Mon Apr 09 2007 - 21:57:35 EST


On Mon, 9 Apr 2007 21:47:38 -0400 (EDT) "Walter Francis" <wally@xxxxxxxxxxxxxxxx> wrote:

> > On Fri, 6 Apr 2007 16:13:55 -0400 (EDT)
> > "Walter Francis" <wally@xxxxxxxxxxxxxxxx> wrote:
>
> >> After hibernating, the CPU0 thermal zone never updates. It will stay at 59C
> >> forever for example.
>
> > Yeah, John spotted a bug in there the other day.
> >
> > Does this fix it?
> >
> > --- a/drivers/acpi/thermal.c~acpi-thermal-fix-mod_timer-interval
> > +++ a/drivers/acpi/thermal.c
> > @@ -758,7 +758,8 @@ static void acpi_thermal_check(void *dat
> > del_timer(&(tz->timer));
> > } else {
> > if (timer_pending(&(tz->timer)))
> > - mod_timer(&(tz->timer), (HZ * sleep_time) / 1000);
> > + mod_timer(&(tz->timer),
> > + jiffies + (HZ * sleep_time) / 1000);
> > else {
> > tz->timer.data = (unsigned long)tz;
> > tz->timer.function = acpi_thermal_run;
>
> No joy, didn't help.
>
> Didn't apply clean to 21-pre6 (still latest I see on kernel.org), but here's
> the section that seemed right.
>
> /*
> * Schedule Next Poll
> * ------------------
> */
> if (!sleep_time) {
> if (timer_pending(&(tz->timer)))
> del_timer(&(tz->timer));
> } else {
> if (timer_pending(&(tz->timer)))
> mod_timer(&(tz->timer),jiffies + (HZ * sleep_time) /
> 1000);
> else {
> tz->timer.data = (unsigned long)tz;
> tz->timer.function = acpi_thermal_run;
> tz->timer.expires = jiffies + (HZ * sleep_time) / 1000;
> add_timer(&(tz->timer));

Yes, the above looks like the correct change.

> Also, I think this is new with the line replaced.. Not sure exactly what's
> causing it, but when I restart the cpuspeed daemon:
>
> Starting cpuspeed: Error: Not an integer:
> /proc/acpi/thermal_zone/TZS1/temperature

Strange. Maybe a timing thing.

> # cat /proc/acpi/thermal_zone/TZS1/temperature
> temperature: 41 C
>
> Looks normal to me?

Yes it does. What happens of you stop and restart the daemon a second
time?

fwiw, /proc/acpi/thermal_zone/ATF0/temperature seems to do the right thing
here.

-
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/