Oh I almost forgot. I removed the funky "(elapsed >= 3000)" conditional which funnily did not mean a hardlock. I don'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"><<a href="mailto:maraeo@gmail.com">maraeo@gmail.com</a>></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 & 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'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 <<a href="mailto:maraeo@gmail.com">maraeo@gmail.com</a>><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->last_jiffies);<br>
- if (elapsed >= 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->last_cp_rptr = cp->rptr;<br>
- lockup->last_jiffies = jiffies;<br>
- return false;<br>
- }<br>
- if (elapsed >= 1000) {<br>
+ if (elapsed >= 10000) {<br>
dev_err(rdev->dev, "GPU lockup CP stall for more than %lumsec\n", elapsed);<br>
return true;<br>
}<br>
<font color="#888888">--<br>
1.7.0.4<br>
<br>
</font></blockquote></div><br>