diff options
| author | Josh Boyer <jwboyer@gmail.com> | 2010-02-05 03:52:16 +0000 | 
|---|---|---|
| committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2010-03-09 11:55:27 +1100 | 
| commit | de0b632ba05bc88949e67d33d1c313fcf922ae2e (patch) | |
| tree | 9406ef8826300295b73b266d2fa754a3b0f21135 | |
| parent | f09b7b2a1115d3afe02c66156746287f6c63bba0 (diff) | |
powerpc: Fix G5 thermal shutdown
This changes the thresholds for the liquid cooled G5 thermal
shutdown mechanism to prevent an errant shutdown with some
models.
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
| -rw-r--r-- | drivers/macintosh/therm_pm72.c | 30 | ||||
| -rw-r--r-- | drivers/macintosh/therm_pm72.h | 2 | 
2 files changed, 25 insertions, 7 deletions
| diff --git a/drivers/macintosh/therm_pm72.c b/drivers/macintosh/therm_pm72.c index 5738d8bf2d97..921373e4e3af 100644 --- a/drivers/macintosh/therm_pm72.c +++ b/drivers/macintosh/therm_pm72.c @@ -948,10 +948,16 @@ static void do_monitor_cpu_combined(void)  		printk(KERN_WARNING "Warning ! Temperature way above maximum (%d) !\n",  		       temp_combi >> 16);  		state0->overtemp += CPU_MAX_OVERTEMP / 4; -	} else if (temp_combi > (state0->mpu.tmax << 16)) +	} else if (temp_combi > (state0->mpu.tmax << 16)) {  		state0->overtemp++; -	else +		printk(KERN_WARNING "Temperature %d above max %d. overtemp %d\n", +		       temp_combi >> 16, state0->mpu.tmax, state0->overtemp); +	} else { +		if (state0->overtemp) +			printk(KERN_WARNING "Temperature back down to %d\n", +			       temp_combi >> 16);  		state0->overtemp = 0; +	}  	if (state0->overtemp >= CPU_MAX_OVERTEMP)  		critical_state = 1;  	if (state0->overtemp > 0) { @@ -1023,10 +1029,16 @@ static void do_monitor_cpu_split(struct cpu_pid_state *state)  		       " (%d) !\n",  		       state->index, temp >> 16);  		state->overtemp += CPU_MAX_OVERTEMP / 4; -	} else if (temp > (state->mpu.tmax << 16)) +	} else if (temp > (state->mpu.tmax << 16)) {  		state->overtemp++; -	else +		printk(KERN_WARNING "CPU %d temperature %d above max %d. overtemp %d\n", +		       state->index, temp >> 16, state->mpu.tmax, state->overtemp); +	} else { +		if (state->overtemp) +			printk(KERN_WARNING "CPU %d temperature back down to %d\n", +			       state->index, temp >> 16);  		state->overtemp = 0; +	}  	if (state->overtemp >= CPU_MAX_OVERTEMP)  		critical_state = 1;  	if (state->overtemp > 0) { @@ -1085,10 +1097,16 @@ static void do_monitor_cpu_rack(struct cpu_pid_state *state)  		       " (%d) !\n",  		       state->index, temp >> 16);  		state->overtemp = CPU_MAX_OVERTEMP / 4; -	} else if (temp > (state->mpu.tmax << 16)) +	} else if (temp > (state->mpu.tmax << 16)) {  		state->overtemp++; -	else +		printk(KERN_WARNING "CPU %d temperature %d above max %d. overtemp %d\n", +		       state->index, temp >> 16, state->mpu.tmax, state->overtemp); +	} else { +		if (state->overtemp) +			printk(KERN_WARNING "CPU %d temperature back down to %d\n", +			       state->index, temp >> 16);  		state->overtemp = 0; +	}  	if (state->overtemp >= CPU_MAX_OVERTEMP)  		critical_state = 1;  	if (state->overtemp > 0) { diff --git a/drivers/macintosh/therm_pm72.h b/drivers/macintosh/therm_pm72.h index 393cc9df94e1..df3680e2a22f 100644 --- a/drivers/macintosh/therm_pm72.h +++ b/drivers/macintosh/therm_pm72.h @@ -269,7 +269,7 @@ struct slots_pid_state  #define CPU_TEMP_HISTORY_SIZE		2  #define CPU_POWER_HISTORY_SIZE		10  #define CPU_PID_INTERVAL		1 -#define CPU_MAX_OVERTEMP		30 +#define CPU_MAX_OVERTEMP		90  #define CPUA_PUMP_RPM_INDEX		7  #define CPUB_PUMP_RPM_INDEX		8 | 
