diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2020-06-22 18:41:58 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2020-06-22 19:08:56 +0100 |
commit | 71a22c37ae6541f9d991d81f15cbade1da402b75 (patch) | |
tree | 1f74d6d77e305c30bcb873ce8919cabacd970313 /tests/i915/gem_userptr_blits.c | |
parent | 3b6975c0f9e429c0c1f48c61a3417be9d68300cf (diff) |
i915/gem_userptr_blits: Probe async error status
Be wary in case we postpone error discovering for nonblocking execbuf,
and double check the fence status.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Diffstat (limited to 'tests/i915/gem_userptr_blits.c')
-rw-r--r-- | tests/i915/gem_userptr_blits.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/tests/i915/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c index d66cbf1d..db41882d 100644 --- a/tests/i915/gem_userptr_blits.c +++ b/tests/i915/gem_userptr_blits.c @@ -63,6 +63,7 @@ #include "i915/gem.h" #include "igt.h" #include "intel_bufmgr.h" +#include "sw_sync.h" #include "eviction_common.c" @@ -205,10 +206,20 @@ static int copy(int fd, uint32_t dst, uint32_t src) exec.buffer_count++; exec.buffers_ptr = to_user_pointer(obj); exec.flags = HAS_BLT_RING(intel_get_drm_devid(fd)) ? I915_EXEC_BLT : 0; + exec.flags |= I915_EXEC_FENCE_OUT; - ret = __gem_execbuf(fd, &exec); + ret = __gem_execbuf_wr(fd, &exec); gem_close(fd, handle); + if (ret == 0) { + int fence = exec.rsvd2 >> 32; + + sync_fence_wait(fence, -1); + if (sync_fence_status(fence) < 0) + ret = sync_fence_status(fence); + close(fence); + } + return ret; } |