Commit 5ba762c9 authored by Adrian Reber's avatar Adrian Reber Committed by Benjamin Herrenschmidt

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: default avatarAdrian Reber <adrian@lisas.de>
Acked-by: default avatarUtz Bacher <utz.bacher@de.ibm.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 6c16a74d
...@@ -218,16 +218,14 @@ static void wdrtas_timer_keepalive(void) ...@@ -218,16 +218,14 @@ static void wdrtas_timer_keepalive(void)
*/ */
static int wdrtas_get_temperature(void) static int wdrtas_get_temperature(void)
{ {
long result; int result;
int temperature = 0; int temperature = 0;
result = rtas_call(wdrtas_token_get_sensor_state, 2, 2, result = rtas_get_sensor(WDRTAS_THERMAL_SENSOR, 0, &temperature);
(void *)__pa(&temperature),
WDRTAS_THERMAL_SENSOR, 0);
if (result < 0) if (result < 0)
printk(KERN_WARNING "wdrtas: reading the thermal sensor " printk(KERN_WARNING "wdrtas: reading the thermal sensor "
"faild: %li\n", result); "failed: %i\n", result);
else else
temperature = ((temperature * 9) / 5) + 32; /* fahrenheit */ temperature = ((temperature * 9) / 5) + 32; /* fahrenheit */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment