From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ozlabs.org (ozlabs.org [203.10.76.45]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "mx.ozlabs.org", Issuer "CA Cert Signing Authority" (verified OK)) by bilbo.ozlabs.org (Postfix) with ESMTPS id 8A4C3B713D for ; Thu, 11 Jun 2009 20:58:05 +1000 (EST) Received: from rhlx01.hs-esslingen.de (rhlx01.hs-esslingen.de [129.143.116.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "rhlx01.hs-esslingen.de", Issuer "HE CA - G02" (verified OK)) by ozlabs.org (Postfix) with ESMTPS id 24E9BDDD1B for ; Thu, 11 Jun 2009 20:58:05 +1000 (EST) Date: Thu, 11 Jun 2009 12:52:17 +0200 From: Adrian Reber To: Benjamin Herrenschmidt Subject: Re: [PATCH v2] Fix RTAS watchdog driver temperature read functionality Message-ID: <20090611105216.GG8358@lisas.de> References: <20090316123543.GG15530@lisas.de> <1237868838.25062.712.camel@pasglop> <20090324114505.GB24724@lisas.de> <1237928433.25062.725.camel@pasglop> <20090326120542.GD24889@lisas.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii In-Reply-To: <20090326120542.GD24889@lisas.de> Cc: linuxppc-dev@ozlabs.org, Utz Bacher List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , I forgot about this patch. Can this still be merged? On Thu, Mar 26, 2009 at 01:05:42PM +0100, Adrian Reber wrote: > 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 > --- > 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); > > 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 */ > > -- > 1.5.6.6