[igt-dev] [PATCH i-g-t v2 10/10] igt: Use lib gem_execbuf where possible

Antonio Argenziano antonio.argenziano at intel.com
Fri Feb 9 23:39:05 UTC 2018


Replace custom execbuf ioctl wrapper with the ones in lib.

v2:
	- Lib execbuf wrapper is not signal handling friendly. (Chris)

Signed-off-by: Antonio Argenziano <antonio.argenziano at intel.com>
Cc: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Petri Latvala <petri.latvala at intel.com>
---
 tests/gem_close_race.c           |  3 +--
 tests/gem_ctx_exec.c             | 15 +++++----------
 tests/gem_evict_alignment.c      |  7 ++-----
 tests/gem_exec_bad_domains.c     |  6 +-----
 tests/gem_exec_blt.c             |  4 ++--
 tests/gem_exec_lut_handle.c      |  2 +-
 tests/gem_exec_params.c          |  9 ++-------
 tests/gem_gtt_hog.c              |  2 +-
 tests/gem_lut_handle.c           | 11 ++---------
 tests/gem_pwrite_pread.c         | 12 ++++++------
 tests/gen3_mixed_blits.c         | 10 +++++-----
 tests/gen3_render_linear_blits.c |  6 +++---
 tests/gen3_render_mixed_blits.c  |  6 +++---
 tests/gen3_render_tiledx_blits.c |  4 ++--
 tests/gen3_render_tiledy_blits.c |  6 +++---
 tests/pm_rpm.c                   |  6 +++---
 16 files changed, 42 insertions(+), 67 deletions(-)

diff --git a/tests/gem_close_race.c b/tests/gem_close_race.c
index d9a45387..bc1127b1 100644
--- a/tests/gem_close_race.c
+++ b/tests/gem_close_race.c
@@ -119,8 +119,7 @@ static void selfcopy(int fd, uint32_t handle, int loops)
 	gem_pwrite.size = sizeof(buf);
 	gem_pwrite.data_ptr = to_user_pointer(buf);
 	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_PWRITE, &gem_pwrite) == 0) {
-		while (loops-- &&
-		       drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf) == 0)
+		while (loops-- && __gem_execbuf(fd, &execbuf) == 0)
 			;
 	}
 
diff --git a/tests/gem_ctx_exec.c b/tests/gem_ctx_exec.c
index fa864a21..1f8ed64d 100644
--- a/tests/gem_ctx_exec.c
+++ b/tests/gem_ctx_exec.c
@@ -52,7 +52,6 @@ static int exec(int fd, uint32_t handle, int ring, int ctx_id)
 {
 	struct drm_i915_gem_execbuffer2 execbuf;
 	struct drm_i915_gem_exec_object2 gem_exec;
-	int ret = 0;
 
 	gem_exec.handle = handle;
 	gem_exec.relocation_count = 0;
@@ -75,10 +74,7 @@ static int exec(int fd, uint32_t handle, int ring, int ctx_id)
 	i915_execbuffer2_set_context_id(execbuf, ctx_id);
 	execbuf.rsvd2 = 0;
 
-	ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2,
-			&execbuf);
-
-	return ret;
+	return __gem_execbuf(fd, &execbuf);
 }
 
 static void big_exec(int fd, uint32_t handle, int ring)
@@ -116,7 +112,7 @@ static void big_exec(int fd, uint32_t handle, int ring)
 
 	execbuf.buffer_count = 1;
 	i915_execbuffer2_set_context_id(execbuf, ctx_id1);
-	do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+	gem_execbuf(fd, &execbuf);
 
 	for (i = 0; i < num_buffers; i++) {
 		uint32_t tmp_handle = gem_create(fd, 4096);
@@ -127,8 +123,7 @@ static void big_exec(int fd, uint32_t handle, int ring)
 	execbuf.buffer_count = i + 1;
 
 	/* figure out how many buffers we can exactly fit */
-	while (drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2,
-			&execbuf) != 0) {
+	while (__gem_execbuf(fd, &execbuf) != 0) {
 		i--;
 		gem_close(fd, gem_exec[i].handle);
 		gem_exec[i].handle = handle;
@@ -140,10 +135,10 @@ static void big_exec(int fd, uint32_t handle, int ring)
 	       i - 1, num_buffers);
 
 	/* double check that it works */
-	do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+	gem_execbuf(fd, &execbuf);
 
 	i915_execbuffer2_set_context_id(execbuf, ctx_id2);
-	do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+	gem_execbuf(fd, &execbuf);
 	gem_sync(fd, handle);
 }
 
diff --git a/tests/gem_evict_alignment.c b/tests/gem_evict_alignment.c
index 239be728..a80aa414 100644
--- a/tests/gem_evict_alignment.c
+++ b/tests/gem_evict_alignment.c
@@ -61,7 +61,7 @@ copy(int fd, uint32_t dst, uint32_t src, uint32_t *all_bo,
 	struct drm_i915_gem_exec_object2 *obj;
 	struct drm_i915_gem_execbuffer2 exec;
 	uint32_t handle;
-	int n, ret, i=0;
+	int n, i=0;
 
 	batch[i++] = (XY_SRC_COPY_BLT_CMD |
 		    XY_SRC_COPY_BLT_WRITE_ALPHA |
@@ -121,10 +121,7 @@ copy(int fd, uint32_t dst, uint32_t src, uint32_t *all_bo,
 	i915_execbuffer2_set_context_id(exec, 0);
 	exec.rsvd2 = 0;
 
-	ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
-	if (ret)
-		ret = errno;
-	igt_assert_eq(ret, error);
+	igt_assert_eq(__gem_execbuf(fd, &exec), error);
 
 	gem_close(fd, handle);
 	free(obj);
diff --git a/tests/gem_exec_bad_domains.c b/tests/gem_exec_bad_domains.c
index 9a7487e3..cd2c8956 100644
--- a/tests/gem_exec_bad_domains.c
+++ b/tests/gem_exec_bad_domains.c
@@ -95,7 +95,6 @@ static void multi_write_domain(int fd)
 	struct drm_i915_gem_exec_object2 exec[2];
 	struct drm_i915_gem_relocation_entry reloc[1];
 	uint32_t handle, handle_target;
-	int ret;
 
 	handle = gem_create(fd, 4096);
 	handle_target = gem_create(fd, 4096);
@@ -137,10 +136,7 @@ static void multi_write_domain(int fd)
 	i915_execbuffer2_set_context_id(execbuf, 0);
 	execbuf.rsvd2 = 0;
 
-	ret = drmIoctl(fd,
-		       DRM_IOCTL_I915_GEM_EXECBUFFER2,
-		       &execbuf);
-	igt_assert(ret != 0 && errno == EINVAL);
+	igt_assert_eq(__gem_execbuf(fd, &execbuf), -EINVAL);
 
 	gem_close(fd, handle);
 	gem_close(fd, handle_target);
diff --git a/tests/gem_exec_blt.c b/tests/gem_exec_blt.c
index 8c0453f6..8d61dc87 100644
--- a/tests/gem_exec_blt.c
+++ b/tests/gem_exec_blt.c
@@ -228,12 +228,12 @@ static void run(int object_size, bool dumb)
 	execbuf.flags |= LOCAL_I915_EXEC_HANDLE_LUT;
 	execbuf.flags |= LOCAL_I915_EXEC_NO_RELOC;
 
-	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf)) {
+	if (__gem_execbuf(fd, &execbuf)) {
 		len = gem_linear_blt(fd, buf, src, dst, object_size, reloc);
 		igt_assert(len == execbuf.batch_len);
 		gem_write(fd, handle, 0, buf, len);
 		execbuf.flags = ring;
-		do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+		gem_execbuf(fd, &execbuf);
 	}
 	gem_sync(fd, handle);
 
diff --git a/tests/gem_exec_lut_handle.c b/tests/gem_exec_lut_handle.c
index 9793133c..98e6ae5a 100644
--- a/tests/gem_exec_lut_handle.c
+++ b/tests/gem_exec_lut_handle.c
@@ -77,7 +77,7 @@ static int has_exec_lut(int fd)
 	execbuf.buffer_count = 1;
 	execbuf.flags = LOCAL_I915_EXEC_HANDLE_LUT;
 
-	return drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf) == 0;
+	return __gem_execbuf(fd, &execbuf) == 0;
 }
 
 #define ELAPSED(a,b) (1e6*((b)->tv_sec - (a)->tv_sec) + ((b)->tv_usec - (a)->tv_usec))
diff --git a/tests/gem_exec_params.c b/tests/gem_exec_params.c
index c3dc0ac2..5909bc93 100644
--- a/tests/gem_exec_params.c
+++ b/tests/gem_exec_params.c
@@ -233,10 +233,7 @@ igt_main
 	}
 
 #define RUN_FAIL(expected_errno) do { \
-		igt_assert(drmIoctl(fd, \
-				    DRM_IOCTL_I915_GEM_EXECBUFFER2, \
-				    &execbuf) == -1); \
-		igt_assert_eq(errno, expected_errno); \
+		igt_assert_eq(errno, __gem_execbuf(fd, &execbuf)); \
 	} while(0)
 
 	igt_subtest("no-bsd") {
@@ -350,9 +347,7 @@ igt_main
 		RUN_FAIL(EPERM);
 
 		igt_device_set_master(fd);
-		igt_assert(drmIoctl(fd,
-				    DRM_IOCTL_I915_GEM_EXECBUFFER2,
-				    &execbuf) == 0);
+		gem_execbuf(fd, &execbuf);
 
 		igt_device_drop_master(fd); /* Only needs temporary master */
 	}
diff --git a/tests/gem_gtt_hog.c b/tests/gem_gtt_hog.c
index a3dbfad4..ca730649 100644
--- a/tests/gem_gtt_hog.c
+++ b/tests/gem_gtt_hog.c
@@ -113,7 +113,7 @@ static void busy(data_t *data, uint32_t handle, int size, int loops)
 	gem_pwrite.data_ptr = to_user_pointer(buf);
 	if (drmIoctl(data->fd, DRM_IOCTL_I915_GEM_PWRITE, &gem_pwrite) == 0) {
 		while (loops--)
-			drmIoctl(data->fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+			gem_execbuf(data->fd, &execbuf);
 	}
 
 	drmIoctl(data->fd, DRM_IOCTL_GEM_CLOSE, &create.handle);
diff --git a/tests/gem_lut_handle.c b/tests/gem_lut_handle.c
index 10516b4f..27758f39 100644
--- a/tests/gem_lut_handle.c
+++ b/tests/gem_lut_handle.c
@@ -84,12 +84,7 @@ static int exec(int fd, uint32_t handle, unsigned int flags)
 	i915_execbuffer2_set_context_id(execbuf, 0);
 	execbuf.rsvd2 = 0;
 
-	if (drmIoctl(fd,
-		     DRM_IOCTL_I915_GEM_EXECBUFFER2,
-		     &execbuf))
-		return -errno;
-
-	return 0;
+	return __gem_execbuf(fd, &execbuf);
 }
 
 static int many_exec(int fd, uint32_t batch, int num_exec, int num_reloc, unsigned flags)
@@ -156,9 +151,7 @@ static int many_exec(int fd, uint32_t batch, int num_exec, int num_reloc, unsign
 	i915_execbuffer2_set_context_id(execbuf, 0);
 	execbuf.rsvd2 = 0;
 
-	ret = drmIoctl(fd,
-		       DRM_IOCTL_I915_GEM_EXECBUFFER2,
-		       &execbuf);
+	ret = __gem_execbuf(fd, &execbuf);
 	if (ret < 0)
 		ret = -errno;
 
diff --git a/tests/gem_pwrite_pread.c b/tests/gem_pwrite_pread.c
index e1543f22..383a57f7 100644
--- a/tests/gem_pwrite_pread.c
+++ b/tests/gem_pwrite_pread.c
@@ -100,7 +100,7 @@ static void copy(int fd, uint32_t src, uint32_t dst, void *buf, int len, int loo
 
 	while (loops--) {
 		gem_write(fd, src, 0, buf, len);
-		do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+		gem_execbuf(fd, &execbuf);
 		gem_read(fd, dst, 0, buf, len);
 	}
 
@@ -120,7 +120,7 @@ static void as_gtt_mmap(int fd, uint32_t src, uint32_t dst, void *buf, int len,
 			       I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
 		memcpy(src_ptr, buf, len);
 
-		do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+		gem_execbuf(fd, &execbuf);
 		gem_set_domain(fd, dst,
 			       I915_GEM_DOMAIN_GTT, 0);
 		memcpy(buf, dst_ptr, len);
@@ -145,7 +145,7 @@ static void as_cpu_mmap(int fd, uint32_t src, uint32_t dst, void *buf, int len,
 			       I915_GEM_DOMAIN_CPU, I915_GEM_DOMAIN_CPU);
 		memcpy(src_ptr, buf, len);
 
-		do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+		gem_execbuf(fd, &execbuf);
 		gem_set_domain(fd, dst,
 			       I915_GEM_DOMAIN_CPU, 0);
 		memcpy(buf, dst_ptr, len);
@@ -167,7 +167,7 @@ static void test_copy(int fd, uint32_t src, uint32_t dst, uint32_t *buf, int len
 	gem_write(fd, src, 0, buf, len);
 	memset(buf, 0, len);
 
-	do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+	gem_execbuf(fd, &execbuf);
 	gem_read(fd, dst, 0, buf, len);
 
 	gem_close(fd, exec[2].handle);
@@ -189,7 +189,7 @@ static void test_as_gtt_mmap(int fd, uint32_t src, uint32_t dst, int len)
 	for (i = 0; i < len/4; i++)
 		src_ptr[i] = i;
 
-	do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+	gem_execbuf(fd, &execbuf);
 	gem_close(fd, exec[2].handle);
 
 	gem_set_domain(fd, dst, I915_GEM_DOMAIN_GTT, 0);
@@ -213,7 +213,7 @@ static void test_as_cpu_mmap(int fd, uint32_t src, uint32_t dst, int len)
 	for (i = 0; i < len/4; i++)
 		src_ptr[i] = i;
 
-	do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+	gem_execbuf(fd, &execbuf);
 	gem_close(fd, exec[2].handle);
 
 	gem_set_domain(fd, dst, I915_GEM_DOMAIN_CPU, 0);
diff --git a/tests/gen3_mixed_blits.c b/tests/gen3_mixed_blits.c
index 1159b4eb..147b7b87 100644
--- a/tests/gen3_mixed_blits.c
+++ b/tests/gen3_mixed_blits.c
@@ -310,10 +310,10 @@ render_copy(int fd,
 	i915_execbuffer2_set_context_id(exec, 0);
 	exec.rsvd2 = 0;
 
-	ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
-	while (ret && errno == EBUSY) {
+	ret = __gem_execbuf(fd, &exec);
+	while (ret == EBUSY) {
 		drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
-		ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
+		ret = __gem_execbuf(fd, &exec);
 	}
 	igt_assert_eq(ret, 0);
 
@@ -388,10 +388,10 @@ static void blt_copy(int fd, uint32_t dst, uint32_t src)
 	i915_execbuffer2_set_context_id(exec, 0);
 	exec.rsvd2 = 0;
 
-	ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
+	ret = __gem_execbuf(fd, &exec);
 	while (ret && errno == EBUSY) {
 		drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
-		ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
+		ret = __gem_execbuf(fd, &exec);
 	}
 	igt_assert_eq(ret, 0);
 
diff --git a/tests/gen3_render_linear_blits.c b/tests/gen3_render_linear_blits.c
index e56bff93..980a1eed 100644
--- a/tests/gen3_render_linear_blits.c
+++ b/tests/gen3_render_linear_blits.c
@@ -280,10 +280,10 @@ copy(int fd, uint32_t dst, uint32_t src)
 	i915_execbuffer2_set_context_id(exec, 0);
 	exec.rsvd2 = 0;
 
-	ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
-	while (ret && errno == EBUSY) {
+	ret = __gem_execbuf(fd, &exec);
+	while (ret == EBUSY) {
 		drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
-		ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
+		ret = __gem_execbuf(fd, &exec);
 	}
 	igt_assert_eq(ret, 0);
 
diff --git a/tests/gen3_render_mixed_blits.c b/tests/gen3_render_mixed_blits.c
index 6cc8d056..7dab181d 100644
--- a/tests/gen3_render_mixed_blits.c
+++ b/tests/gen3_render_mixed_blits.c
@@ -293,10 +293,10 @@ copy(int fd,
 	i915_execbuffer2_set_context_id(exec, 0);
 	exec.rsvd2 = 0;
 
-	ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
-	while (ret && errno == EBUSY) {
+	ret = __gem_execbuf(fd, &exec);
+	while (ret == EBUSY) {
 		drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
-		ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
+		ret = __gem_execbuf(fd, &exec);
 	}
 	igt_assert_eq(ret, 0);
 
diff --git a/tests/gen3_render_tiledx_blits.c b/tests/gen3_render_tiledx_blits.c
index 6706d3a3..b7a632fa 100644
--- a/tests/gen3_render_tiledx_blits.c
+++ b/tests/gen3_render_tiledx_blits.c
@@ -280,10 +280,10 @@ copy(int fd, uint32_t dst, uint32_t src)
 	i915_execbuffer2_set_context_id(exec, 0);
 	exec.rsvd2 = 0;
 
-	ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
+	ret = __gem_execbuf(fd, &exec);
 	while (ret && errno == EBUSY) {
 		drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
-		ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
+		ret = __gem_execbuf(fd, &exec);
 	}
 	igt_assert_eq(ret, 0);
 
diff --git a/tests/gen3_render_tiledy_blits.c b/tests/gen3_render_tiledy_blits.c
index 44e88d4d..5a495534 100644
--- a/tests/gen3_render_tiledy_blits.c
+++ b/tests/gen3_render_tiledy_blits.c
@@ -280,10 +280,10 @@ copy(int fd, uint32_t dst, uint32_t src)
 	i915_execbuffer2_set_context_id(exec, 0);
 	exec.rsvd2 = 0;
 
-	ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
-	while (ret && errno == EBUSY) {
+	ret = __gem_execbuf(fd, &exec);
+	while (ret == EBUSY) {
 		drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
-		ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
+		ret = __gem_execbuf(fd, &exec);
 	}
 	igt_assert_eq(ret, 0);
 
diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c
index d2a6705e..04be8c54 100644
--- a/tests/pm_rpm.c
+++ b/tests/pm_rpm.c
@@ -1116,7 +1116,7 @@ static void submit_blt_cmd(uint32_t dst_handle, uint16_t x, uint16_t y,
 	execbuf.flags = I915_EXEC_BLT;
 	i915_execbuffer2_set_context_id(execbuf, 0);
 
-	do_ioctl(drm_fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+	gem_execbuf(drm_fd, &execbuf);
 
 	*presumed_dst_offset = relocs[0].presumed_offset;
 
@@ -1257,7 +1257,7 @@ static void gem_execbuf_stress_subtest(int rounds, int wait_flags)
 	i915_execbuffer2_set_context_id(execbuf, 0);
 
 	for (i = 0; i < rounds; i++) {
-		do_ioctl(drm_fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+		gem_execbuf(drm_fd, &execbuf);
 
 		if (wait_flags & WAIT_STATUS)
 			igt_assert(wait_for_suspended());
@@ -1387,7 +1387,7 @@ static void system_suspend_execbuf_subtest(void)
 	igt_assert(wait_for_suspended());
 
 	for (i = 0; i < 20; i++) {
-		do_ioctl(drm_fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+		gem_execbuf(drm_fd, &execbuf);
 		igt_assert(wait_for_suspended());
 	}
 
-- 
2.14.2



More information about the igt-dev mailing list