Patchwork powermac: thermal control turns system off in normal temperature conditions

login
register
mail settings
Submitter Bartlomiej Zolnierkiewicz
Date Aug. 30, 2009, 6:54 p.m.
Message ID <200908302054.20498.bzolnier@gmail.com>
Download mbox | patch
Permalink /patch/32591/
State Accepted, archived
Commit b8e4a7dae53760b9791aca96e74366078692d90f
Delegated to: Benjamin Herrenschmidt
Headers show

Comments

Bartlomiej Zolnierkiewicz - Aug. 30, 2009, 6:54 p.m.
From: Lyonel Vincent <lyonel@ezix.org>
Subject: [PATCH] powermac: thermal control turns system off in normal temperature conditions

On certain PowerMacs, a module (therm_windtunnel) controls various
thermal settings (it can report CPU/case temperature, change speed
of internal fans, etc.)

By default, the hardware thermal control has a temperature limit to
protect the computer from damages (the default limit seems to be 80°C)
but therm_windtunnel.c reduces it to an anormaly low value (65°C),
which means that he computer will shut down randomly when hit by direct
sun light or during summer (summer in France can be quite hot), actually
possibly losing data instead of protecting it.

The overheat limit in therm_windtunnel.c:253-254 should be set to 75°C
and 70°C instead of 65°C and 60°C respectively.

From: Lyonel Vincent <lyonel@ezix.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
---
Resurrected from Fedora's bugzilla (aka The Big Black Hole):
https://bugzilla.redhat.com/show_bug.cgi?id=171937

The patch itself seems perfectly valid to me
(especially given comments in therm_windtunnel.c).

 drivers/macintosh/therm_windtunnel.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
Benjamin Herrenschmidt - Aug. 30, 2009, 9:22 p.m.
On Sun, 2009-08-30 at 20:54 +0200, Bartlomiej Zolnierkiewicz wrote:
> From: Lyonel Vincent <lyonel@ezix.org>
> Subject: [PATCH] powermac: thermal control turns system off in normal temperature conditions
> 
> On certain PowerMacs, a module (therm_windtunnel) controls various
> thermal settings (it can report CPU/case temperature, change speed
> of internal fans, etc.)
> 
> By default, the hardware thermal control has a temperature limit to
> protect the computer from damages (the default limit seems to be 80°C)
> but therm_windtunnel.c reduces it to an anormaly low value (65°C),
> which means that he computer will shut down randomly when hit by direct
> sun light or during summer (summer in France can be quite hot), actually
> possibly losing data instead of protecting it.
> 
> The overheat limit in therm_windtunnel.c:253-254 should be set to 75°C
> and 70°C instead of 65°C and 60°C respectively.

Looks reasonable, thanks.

Ben.

> From: Lyonel Vincent <lyonel@ezix.org>
> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
> ---
> Resurrected from Fedora's bugzilla (aka The Big Black Hole):
> https://bugzilla.redhat.com/show_bug.cgi?id=171937
> 
> The patch itself seems perfectly valid to me
> (especially given comments in therm_windtunnel.c).
> 
>  drivers/macintosh/therm_windtunnel.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> Index: b/drivers/macintosh/therm_windtunnel.c
> ===================================================================
> --- a/drivers/macintosh/therm_windtunnel.c
> +++ b/drivers/macintosh/therm_windtunnel.c
> @@ -239,8 +239,8 @@ setup_hardware( void )
>  	 * to be on the safe side (OSX doesn't)...
>  	 */
>  	if( x.overheat_temp == (80 << 8) ) {
> -		x.overheat_temp = 65 << 8;
> -		x.overheat_hyst = 60 << 8;
> +		x.overheat_temp = 75 << 8;
> +		x.overheat_hyst = 70 << 8;
>  		write_reg( x.thermostat, 2, x.overheat_hyst, 2 );
>  		write_reg( x.thermostat, 3, x.overheat_temp, 2 );
>
Linux User #330250 - Aug. 31, 2009, 9:25 a.m.
Hello!

First: I'm just a user. And I hope I don't cause disturbance.

I've read about this when I was setting up Linux on my Power Mac G4 MDD about 
two years ago and I remember reading that the temperature might be reported 
falsely. The original author reduced the limits to be on the safe side.

While Mac OS X seems to push the allowed temperature more to the limits, it 
could still be fatal to trust the reported temperatures.


My machine had the same shut-downs due to temperature at first. Since my MDD 
was quite a few years old when I got it I cleaned the CPUs and used new 
thermal compound with the original heatsink. This fixed the "overheat" issue 
for me.


Sorry to interrupt,
Andreas  aka  Linux User #330250



----------  Original message  ----------
Subject: [PATCH] powermac: thermal control turns system off in normal 
temperature conditions
Date:    Sonntag, 30. August 2009N
From:    Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
To:      Benjamin Herrenschmidt <benh@kernel.crashing.org>

> From: Lyonel Vincent <lyonel@ezix.org>
> Subject: [PATCH] powermac: thermal control turns system off in normal
> temperature conditions
>
> On certain PowerMacs, a module (therm_windtunnel) controls various
> thermal settings (it can report CPU/case temperature, change speed
> of internal fans, etc.)
>
> By default, the hardware thermal control has a temperature limit to
> protect the computer from damages (the default limit seems to be 80°C)
> but therm_windtunnel.c reduces it to an anormaly low value (65°C),
> which means that he computer will shut down randomly when hit by direct
> sun light or during summer (summer in France can be quite hot), actually
> possibly losing data instead of protecting it.
>
> The overheat limit in therm_windtunnel.c:253-254 should be set to 75°C
> and 70°C instead of 65°C and 60°C respectively.
>
> From: Lyonel Vincent <lyonel@ezix.org>
> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
> ---
> Resurrected from Fedora's bugzilla (aka The Big Black Hole):
> https://bugzilla.redhat.com/show_bug.cgi?id=171937
>
> The patch itself seems perfectly valid to me
> (especially given comments in therm_windtunnel.c).
>
>  drivers/macintosh/therm_windtunnel.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> Index: b/drivers/macintosh/therm_windtunnel.c
> ===================================================================
> --- a/drivers/macintosh/therm_windtunnel.c
> +++ b/drivers/macintosh/therm_windtunnel.c
> @@ -239,8 +239,8 @@ setup_hardware( void )
>  	 * to be on the safe side (OSX doesn't)...
>  	 */
>  	if( x.overheat_temp == (80 << 8) ) {
> -		x.overheat_temp = 65 << 8;
> -		x.overheat_hyst = 60 << 8;
> +		x.overheat_temp = 75 << 8;
> +		x.overheat_hyst = 70 << 8;
>  		write_reg( x.thermostat, 2, x.overheat_hyst, 2 );
>  		write_reg( x.thermostat, 3, x.overheat_temp, 2 );
Benjamin Herrenschmidt - Aug. 31, 2009, 9:32 a.m.
On Mon, 2009-08-31 at 11:25 +0200, Linux User #330250 wrote:
> Hello!
> 
> First: I'm just a user. And I hope I don't cause disturbance.
> 
> I've read about this when I was setting up Linux on my Power Mac G4 MDD about 
> two years ago and I remember reading that the temperature might be reported 
> falsely. The original author reduced the limits to be on the safe side.
> 
> While Mac OS X seems to push the allowed temperature more to the limits, it 
> could still be fatal to trust the reported temperatures.
> 
> 
> My machine had the same shut-downs due to temperature at first. Since my MDD 
> was quite a few years old when I got it I cleaned the CPUs and used new 
> thermal compound with the original heatsink. This fixed the "overheat" issue 
> for me.

Thanks. I think pushing them a bit like this patch does still remains
within reasonably safe limits though. The CPU should cope with more
hopefully :-)

But yeah, cleaning up the dust is definitely a good idea :-)

Cheers,
Ben.

> 
> Sorry to interrupt,
> Andreas  aka  Linux User #330250
> 
> 
> 
> ----------  Original message  ----------
> Subject: [PATCH] powermac: thermal control turns system off in normal 
> temperature conditions
> Date:    Sonntag, 30. August 2009N
> From:    Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
> To:      Benjamin Herrenschmidt <benh@kernel.crashing.org>
> 
> > From: Lyonel Vincent <lyonel@ezix.org>
> > Subject: [PATCH] powermac: thermal control turns system off in normal
> > temperature conditions
> >
> > On certain PowerMacs, a module (therm_windtunnel) controls various
> > thermal settings (it can report CPU/case temperature, change speed
> > of internal fans, etc.)
> >
> > By default, the hardware thermal control has a temperature limit to
> > protect the computer from damages (the default limit seems to be 80°C)
> > but therm_windtunnel.c reduces it to an anormaly low value (65°C),
> > which means that he computer will shut down randomly when hit by direct
> > sun light or during summer (summer in France can be quite hot), actually
> > possibly losing data instead of protecting it.
> >
> > The overheat limit in therm_windtunnel.c:253-254 should be set to 75°C
> > and 70°C instead of 65°C and 60°C respectively.
> >
> > From: Lyonel Vincent <lyonel@ezix.org>
> > Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
> > ---
> > Resurrected from Fedora's bugzilla (aka The Big Black Hole):
> > https://bugzilla.redhat.com/show_bug.cgi?id=171937
> >
> > The patch itself seems perfectly valid to me
> > (especially given comments in therm_windtunnel.c).
> >
> >  drivers/macintosh/therm_windtunnel.c |    4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > Index: b/drivers/macintosh/therm_windtunnel.c
> > ===================================================================
> > --- a/drivers/macintosh/therm_windtunnel.c
> > +++ b/drivers/macintosh/therm_windtunnel.c
> > @@ -239,8 +239,8 @@ setup_hardware( void )
> >  	 * to be on the safe side (OSX doesn't)...
> >  	 */
> >  	if( x.overheat_temp == (80 << 8) ) {
> > -		x.overheat_temp = 65 << 8;
> > -		x.overheat_hyst = 60 << 8;
> > +		x.overheat_temp = 75 << 8;
> > +		x.overheat_hyst = 70 << 8;
> >  		write_reg( x.thermostat, 2, x.overheat_hyst, 2 );
> >  		write_reg( x.thermostat, 3, x.overheat_temp, 2 );

Patch

Index: b/drivers/macintosh/therm_windtunnel.c
===================================================================
--- a/drivers/macintosh/therm_windtunnel.c
+++ b/drivers/macintosh/therm_windtunnel.c
@@ -239,8 +239,8 @@  setup_hardware( void )
 	 * to be on the safe side (OSX doesn't)...
 	 */
 	if( x.overheat_temp == (80 << 8) ) {
-		x.overheat_temp = 65 << 8;
-		x.overheat_hyst = 60 << 8;
+		x.overheat_temp = 75 << 8;
+		x.overheat_hyst = 70 << 8;
 		write_reg( x.thermostat, 2, x.overheat_hyst, 2 );
 		write_reg( x.thermostat, 3, x.overheat_temp, 2 );