<br><tt><font size=2>Adrian Reber wrote on 11.06.2009 12:52:17:</font></tt>
<br><tt><font size=2>&gt; <br>
&gt; I forgot about this patch. Can this still be merged?<br>
&gt; <br>
&gt; <br>
&gt; On Thu, Mar 26, 2009 at 01:05:42PM +0100, Adrian Reber wrote:<br>
&gt; &gt; Using the RTAS watchdog driver to read out the temperature crashes<br>
&gt; &gt; on a PXCAB:<br>
&gt; &gt; <br>
&gt; &gt; Unable to handle kernel paging request for data at address 0xfe347b50<br>
&gt; &gt; Faulting instruction address: 0xc00000000001af64<br>
&gt; &gt; Oops: Kernel access of bad area, sig: 11 [#1]<br>
&gt; &gt; <br>
&gt; &gt; The wrong usage of &quot;(void *)__pa(&amp;temperature)&quot;
in rtas_call() is<br>
&gt; &gt; removed by using the function rtas_get_sensor() which does the<br>
&gt; &gt; right thing.<br>
&gt; &gt; <br>
&gt; &gt; Signed-off-by: Adrian Reber &lt;adrian@lisas.de&gt;<br>
&gt; &gt; ---<br>
&gt; &gt; v2: use rtas_get_sensor(); typo fixed<br>
&gt; &gt; ---<br>
&gt; &gt; &nbsp;drivers/watchdog/wdrtas.c | &nbsp; &nbsp;8 +++-----<br>
&gt; &gt; &nbsp;1 files changed, 3 insertions(+), 5 deletions(-)<br>
&gt; &gt; <br>
&gt; &gt; diff --git a/drivers/watchdog/wdrtas.c b/drivers/watchdog/wdrtas.c<br>
&gt; &gt; index 5d3b1a8..a9f00dc 100644<br>
&gt; &gt; --- a/drivers/watchdog/wdrtas.c<br>
&gt; &gt; +++ b/drivers/watchdog/wdrtas.c<br>
&gt; &gt; @@ -214,16 +214,14 @@ static void wdrtas_timer_keepalive(void)<br>
&gt; &gt; &nbsp; */<br>
&gt; &gt; &nbsp;static int wdrtas_get_temperature(void)<br>
&gt; &gt; &nbsp;{<br>
&gt; &gt; - &nbsp; long result;<br>
&gt; &gt; + &nbsp; int result;<br>
&gt; &gt; &nbsp; &nbsp; int temperature = 0;<br>
&gt; &gt; &nbsp;<br>
&gt; &gt; - &nbsp; result = rtas_call(wdrtas_token_get_sensor_state, 2,
2,<br>
&gt; &gt; - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(void *)__pa(&amp;temperature),<br>
&gt; &gt; - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WDRTAS_THERMAL_SENSOR,
0);<br>
&gt; &gt; + &nbsp; result = rtas_get_sensor(WDRTAS_THERMAL_SENSOR, 0, &amp;temperature);<br>
&gt; &gt; &nbsp;<br>
&gt; &gt; &nbsp; &nbsp; if (result &lt; 0)<br>
&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp;printk(KERN_WARNING &quot;wdrtas:
reading the thermal sensor &quot;<br>
&gt; &gt; - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;faild: %li\n&quot;,
result);<br>
&gt; &gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;failed: %i\n&quot;,
result);<br>
&gt; &gt; &nbsp; &nbsp; else<br>
&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp;temperature = ((temperature * 9) /
5) + 32; /* fahrenheit */<br>
&gt; &gt; &nbsp;<br>
&gt; &gt; -- <br>
&gt; &gt; 1.5.6.6<br>
</font></tt>
<br><tt><font size=2>makes sense. Second version also looks good to me
-- thanks!</font></tt>
<br>
<br><tt><font size=2>Acked-by: Utz Bacher &lt;utz.bacher@de.ibm.com&gt;</font></tt>
<br>
<br><tt><font size=2>Utz</font></tt>
<br>
<br><tt><font size=2>:wq</font></tt>