diff options
| author | Adrian Reber <adrian@lisas.de> | 2009-03-26 02:05:42 +0000 | 
|---|---|---|
| committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-06-26 16:55:37 +1000 | 
| commit | 5ba762c9bb3ce2cc11e9e111cb3c476e84b91668 (patch) | |
| tree | ed35c2bae740828478f62867bfc69d01de105fe0 /drivers/watchdog/wdrtas.c | |
| parent | 6c16a74d423f584ed80815ee7b944f5b578dd37a (diff) | |
| download | linux-5ba762c9bb3ce2cc11e9e111cb3c476e84b91668.tar.bz2 | |
powerpc/rtas: Fix watchdog driver temperature read functionality
Using the RTAS watchdog driver to read out the temperature crashes
on a PXCAB:
Unable to handle kernel paging request for data at address 0xfe347b50
Faulting instruction address: 0xc00000000001af64
Oops: Kernel access of bad area, sig: 11 [#1]
The wrong usage of "(void *)__pa(&temperature)" in rtas_call() is
removed by using the function rtas_get_sensor() which does the
right thing.
Signed-off-by: Adrian Reber <adrian@lisas.de>
Acked-by: Utz Bacher <utz.bacher@de.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'drivers/watchdog/wdrtas.c')
| -rw-r--r-- | drivers/watchdog/wdrtas.c | 8 | 
1 files changed, 3 insertions, 5 deletions
| diff --git a/drivers/watchdog/wdrtas.c b/drivers/watchdog/wdrtas.c index a4fe7a38d9b0..3bde56bce63a 100644 --- a/drivers/watchdog/wdrtas.c +++ b/drivers/watchdog/wdrtas.c @@ -218,16 +218,14 @@ static void wdrtas_timer_keepalive(void)   */  static int wdrtas_get_temperature(void)  { -	long result; +	int result;  	int temperature = 0; -	result = rtas_call(wdrtas_token_get_sensor_state, 2, 2, -			   (void *)__pa(&temperature), -			   WDRTAS_THERMAL_SENSOR, 0); +	result = rtas_get_sensor(WDRTAS_THERMAL_SENSOR, 0, &temperature);  	if (result < 0)  		printk(KERN_WARNING "wdrtas: reading the thermal sensor " -		       "faild: %li\n", result); +		       "failed: %i\n", result);  	else  		temperature = ((temperature * 9) / 5) + 32; /* fahrenheit */ |