<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div dir="auto">
<div><br>
<div class="gmail_extra"><br>
<div class="gmail_quote">Am 10.04.2020 12:58 schrieb "Pan, Xinhui" <Xinhui.Pan@amd.com>:<br type="attribution">
<blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><font size="2"><span style="font-size:11pt">
<div>The delayed delete list is per device which might be very huge. And in<br>
a heavy workload test, the list might always not be empty. That will<br>
trigger any RCU stall warnings or softlockups in non-preemptible kernels<br>
Lets do break out the loops in that case.<br>
<br>
Signed-off-by: xinhui pan <xinhui.pan@amd.com><br>
</div>
</span></font></div>
</blockquote>
</div>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">Reviewed-by: Christian König <christian.koenig@amd.com></div>
<div dir="auto"><br>
</div>
<div dir="auto">
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><font size="2"><span style="font-size:11pt">
<div>---<br>
drivers/gpu/drm/ttm/ttm_bo.c | 2 +-<br>
1 file changed, 1 insertion(+), 1 deletion(-)<br>
<br>
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c<br>
index 9e07c3f75156..c5b516fa4eae 100644<br>
--- a/drivers/gpu/drm/ttm/ttm_bo.c<br>
+++ b/drivers/gpu/drm/ttm/ttm_bo.c<br>
@@ -518,7 +518,7 @@ static bool ttm_bo_delayed_delete(struct ttm_bo_device *bdev, bool remove_all)<br>
INIT_LIST_HEAD(&removed);<br>
<br>
spin_lock(&glob->lru_lock);<br>
- while (!list_empty(&bdev->ddestroy)) {<!-- --><br>
+ while (!list_empty(&bdev->ddestroy) && !need_resched()) {<!-- --><br>
struct ttm_buffer_object *bo;<br>
<br>
bo = list_first_entry(&bdev->ddestroy, struct ttm_buffer_object,<br>
-- <br>
2.17.1<br>
<br>
</div>
</span></font></div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</body>
</html>