Re: [PATCH v2] Fix RTAS watchdog driver temperature read functionality
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2009-06-25 11:28:39
On Thu, 2009-06-25 at 13:22 +0200, Utz Bacher wrote:
Adrian Reber wrote on 11.06.2009 12:52:17:quoted
I forgot about this patch. Can this still be merged?
Probably, can you re-send it in proper format to the list so it gets into patchwork (unless it's already there in which case I'll pick it up anyway) ? Cheers, Ben.
quoted
On Thu, Mar 26, 2009 at 01:05:42PM +0100, Adrian Reber wrote:quoted
Using the RTAS watchdog driver to read out the temperature crashes on a PXCAB: Unable to handle kernel paging request for data at address0xfe347b50quoted
quoted
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 <redacted> --- v2: use rtas_get_sensor(); typo fixed --- 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 5d3b1a8..a9f00dc 100644 --- a/drivers/watchdog/wdrtas.c +++ b/drivers/watchdog/wdrtas.c@@ -214,16 +214,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);quoted
quoted
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*/quoted
quoted
-- 1.5.6.6makes sense. Second version also looks good to me -- thanks! Acked-by: Utz Bacher <redacted> Utz :wq