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>
This commit is contained in:
parent
6c16a74d42
commit
5ba762c9bb
1 changed files with 3 additions and 5 deletions
|
@ -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 */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue