[PATCH 14/32] rearrange-lookup
Chris Wilson
chris at chris-wilson.co.uk
Thu Jul 9 15:39:15 UTC 2020
---
.../gpu/drm/i915/gem/i915_gem_execbuffer.c | 36 +++++++++----------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index b8a917d458f5..c3c20d519e63 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;
@@ -2167,6 +2163,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
@@ -2213,9 +2216,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;
@@ -2666,23 +2666,13 @@ i915_gem_do_execbuffer(struct drm_device *dev,
trace_i915_request_queue(eb.request, eb.batch_flags);
err = eb_submit(&eb, batch);
err_request:
- add_to_client(eb.request, file);
i915_request_get(eb.request);
eb_request_add(&eb);
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);
- }
- }
+ add_to_client(eb.request, file);
i915_request_put(eb.request);
err_batch_unpin:
@@ -2700,6 +2690,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