]> Git Repo - linux.git/commitdiff
powerpc/rtas: Fix watchdog driver temperature read functionality
authorAdrian Reber <[email protected]>
Thu, 26 Mar 2009 02:05:42 +0000 (02:05 +0000)
committerBenjamin Herrenschmidt <[email protected]>
Fri, 26 Jun 2009 06:55:37 +0000 (16:55 +1000)
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 <[email protected]>
Acked-by: Utz Bacher <[email protected]>
Signed-off-by: Benjamin Herrenschmidt <[email protected]>
drivers/watchdog/wdrtas.c

index a4fe7a38d9b037e6c2b83eb5e5b735274998f818..3bde56bce63a3228c4f72089263cefe9d5357227 100644 (file)
@@ -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 */
 
This page took 0.07079 seconds and 4 git commands to generate.