From patchwork Tue Mar 24 11:45:05 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Reber X-Patchwork-Id: 24949 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from ozlabs.org (localhost [127.0.0.1]) by ozlabs.org (Postfix) with ESMTP id 2AE27DE7A5 for ; Tue, 24 Mar 2009 22:46:20 +1100 (EST) X-Original-To: linuxppc-dev@ozlabs.org Delivered-To: linuxppc-dev@ozlabs.org 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 C05C8DE264 for ; Tue, 24 Mar 2009 22:45:13 +1100 (EST) Received: by rhlx01.hs-esslingen.de (Postfix, from userid 1203) id 3463440085; Tue, 24 Mar 2009 12:45:05 +0100 (CET) Date: Tue, 24 Mar 2009 12:45:05 +0100 From: Adrian Reber To: Benjamin Herrenschmidt Subject: Re: [PATCH] Fix RTAS watchdog driver temperature read functionality Message-ID: <20090324114505.GB24724@lisas.de> Mail-Followup-To: Benjamin Herrenschmidt , linuxppc-dev@ozlabs.org References: <20090316123543.GG15530@lisas.de> <1237868838.25062.712.camel@pasglop> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1237868838.25062.712.camel@pasglop> X-Url: X-Operating-System: Linux (2.6.18-92.1.13.el5) X-Load-Average: 2.76 2.88 3.06 X-Unexpected: The Spanish Inquisition X-GnuPG-Key: gpg --recv-keys 3ED6F034 User-Agent: Mutt/1.5.18 (2008-05-17) Cc: linuxppc-dev@ozlabs.org X-BeenThere: linuxppc-dev@ozlabs.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@ozlabs.org Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@ozlabs.org On Tue, Mar 24, 2009 at 03:27:18PM +1100, Benjamin Herrenschmidt wrote: > On Mon, 2009-03-16 at 13:35 +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] > > > > This (removing "(void *)__pa") fixes it. > > Looks correct, but why not use rtas_get_sensor() instead ? (Exported by > arch/powerpc/kernel/rtas.c Ah, you mean something like? drivers/watchdog/wdrtas.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) Adrian diff --git a/drivers/watchdog/wdrtas.c b/drivers/watchdog/wdrtas.c index 5d3b1a8..af2bbfa 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); + "faild: %i\n", result); else temperature = ((temperature * 9) / 5) + 32; /* fahrenheit */