[PATCH] powermac: thermal control turns system off in normal temperature conditions

Benjamin Herrenschmidt benh at kernel.crashing.org
Mon Aug 31 07:22:31 EST 2009


On Sun, 2009-08-30 at 20:54 +0200, Bartlomiej Zolnierkiewicz wrote:
> From: Lyonel Vincent <lyonel at 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 at ezix.org>
> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier at 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 );
>  



More information about the Linuxppc-dev mailing list