[PATCH 11/29] rearrange-lookup

Chris Wilson chris at chris-wilson.co.uk
Thu Jul 9 01:08:35 UTC 2020


---
 .../gpu/drm/i915/gem/i915_gem_execbuffer.c    | 34 +++++++++----------
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index 4e6302d7ec25..031db70b2223 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -1575,10 +1575,6 @@ static int eb_relocate(struct i915_execbuffer *eb)
 {
 	int err;
 
-	err = eb_lookup_vmas(eb);
-	if (err)
-		return err;
-
 	err = eb_reserve_vm(eb);
 	if (err)
 		return err;
@@ -2194,6 +2190,13 @@ static int __eb_pin_engine(struct i915_execbuffer *eb, struct intel_context *ce)
 	if (err)
 		return err;
 
+	eb->engine = ce->engine;
+	eb->context = ce;
+
+	err = eb_lookup_vmas(eb);
+	if (err)
+		goto err_unpin;
+
 	/*
 	 * Take a local wakeref for preparing to dispatch the execbuf as
 	 * we expect to access the hardware fairly frequently in the
@@ -2240,9 +2243,6 @@ static int __eb_pin_engine(struct i915_execbuffer *eb, struct intel_context *ce)
 		retire_requests(tl);
 	}
 
-	eb->engine = ce->engine;
-	eb->context = ce;
-
 	err = __eb_pin_reloc_engine(eb);
 	if (err)
 		goto err_exit;
@@ -2700,16 +2700,6 @@ i915_gem_do_execbuffer(struct drm_device *dev,
 	if (fences)
 		signal_fence_array(&eb, fences);
 
-	if (out_fence) {
-		if (err == 0) {
-			fd_install(out_fence_fd, out_fence->file);
-			args->rsvd2 &= GENMASK_ULL(31, 0); /* keep in-fence */
-			args->rsvd2 |= (u64)out_fence_fd << 32;
-			out_fence_fd = -1;
-		} else {
-			fput(out_fence->file);
-		}
-	}
 	i915_request_put(eb.request);
 
 err_batch_unpin:
@@ -2727,6 +2717,16 @@ i915_gem_do_execbuffer(struct drm_device *dev,
 err_destroy:
 	eb_destroy(&eb);
 err_out_fence:
+	if (out_fence) {
+		if (err == 0) {
+			fd_install(out_fence_fd, out_fence->file);
+			args->rsvd2 &= GENMASK_ULL(31, 0); /* keep in-fence */
+			args->rsvd2 |= (u64)out_fence_fd << 32;
+			out_fence_fd = -1;
+		} else {
+			fput(out_fence->file);
+		}
+	}
 	if (out_fence_fd != -1)
 		put_unused_fd(out_fence_fd);
 err_in_fence:
-- 
2.20.1



More information about the Intel-gfx-trybot mailing list