Oh I almost forgot. I removed the funky &quot;(elapsed &gt;= 3000)&quot; conditional which funnily did not mean a hardlock. I don&#39;t understand what it was meant to be and what it was for. Any idea?<br><br>Marek<br><br>

<div class="gmail_quote">On Sun, Sep 12, 2010 at 5:09 AM, Marek Olšák <span dir="ltr">&lt;<a href="mailto:maraeo@gmail.com">maraeo@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

One subtest of mesa/demos/gltestperf takes 9 seconds to complete,<br>
so to prevent an unnecessary gpu reset followed by a hardlock, I am<br>
increasing the interval to 10 seconds after which a GPU is considered<br>
in a locked-up state. This is on RV530. However, with a little slower GPU,<br>
we would surpass the interval easily, so this is not a good fix<br>
for gltestperf.<br>
<br>
Nevertheless, this commit also fixes hardlocks in the applications which<br>
render at speed of less than 1 frame per second, where the whole frame<br>
consists of only one command stream. The game Tiny &amp; Big is an example.<br>
This bar is now lowered to 0.1 fps.<br>
<br>
Now the question comes down to whether we should (often unsuccessfully)<br>
reset the GPU at all? Once we have stable enough drivers, we won&#39;t have to.<br>
Has the time come already?<br>
<br>
If possible, this commit should go to stable as well.<br>
<br>
Signed-off-by: Marek Olšák &lt;<a href="mailto:maraeo@gmail.com">maraeo@gmail.com</a>&gt;<br>
---<br>
 drivers/gpu/drm/radeon/r100.c |   13 +------------<br>
 1 files changed, 1 insertions(+), 12 deletions(-)<br>
<br>
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c<br>
index e817a0b..ec64b36 100644<br>
--- a/drivers/gpu/drm/radeon/r100.c<br>
+++ b/drivers/gpu/drm/radeon/r100.c<br>
@@ -2020,18 +2020,7 @@ bool r100_gpu_cp_is_lockup(struct radeon_device *rdev, struct r100_gpu_lockup *l<br>
                return false;<br>
        }<br>
        elapsed = jiffies_to_msecs(cjiffies - lockup-&gt;last_jiffies);<br>
-       if (elapsed &gt;= 3000) {<br>
-               /* very likely the improbable case where current<br>
-                * rptr is equal to last recorded, a while ago, rptr<br>
-                * this is more likely a false positive update tracking<br>
-                * information which should force us to be recall at<br>
-                * latter point<br>
-                */<br>
-               lockup-&gt;last_cp_rptr = cp-&gt;rptr;<br>
-               lockup-&gt;last_jiffies = jiffies;<br>
-               return false;<br>
-       }<br>
-       if (elapsed &gt;= 1000) {<br>
+       if (elapsed &gt;= 10000) {<br>
                dev_err(rdev-&gt;dev, &quot;GPU lockup CP stall for more than %lumsec\n&quot;, elapsed);<br>
                return true;<br>
        }<br>
<font color="#888888">--<br>
1.7.0.4<br>
<br>
</font></blockquote></div><br>