]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/i915/gt: Move the late flush_submission in retire to the end
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 20 Apr 2020 12:53:56 +0000 (13:53 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 20 Apr 2020 15:56:23 +0000 (16:56 +0100)
Avoid flushing the submission queue (of others) under the client's
timeline lock, but instead move it to the end so that we may catch more.

References: https://gitlab.freedesktop.org/drm/intel/-/issues/1066
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200420125356.26614-2-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_gt_requests.c

index 835ec184763e55ae4c43727d0f33e265b29968ac..dec96a731a77c4bf2f94c029499ed7375614bebd 100644 (file)
@@ -162,7 +162,7 @@ long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout)
                        }
                }
 
-               if (!retire_requests(tl) || flush_submission(gt))
+               if (!retire_requests(tl))
                        active_count++;
                mutex_unlock(&tl->mutex);
 
@@ -185,6 +185,9 @@ out_active: spin_lock(&timelines->lock);
        list_for_each_entry_safe(tl, tn, &free, link)
                __intel_timeline_free(&tl->kref);
 
+       if (flush_submission(gt)) /* Wait, there's more! */
+               active_count++;
+
        return active_count ? timeout : 0;
 }