intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH] i915: purge i915_gem_create_v2
@ 2020-06-03 10:07 Matthew Auld
  2020-06-03 10:11 ` [Intel-gfx] [igt-dev] " Chris Wilson
  2020-06-03 11:21 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for " Patchwork
  0 siblings, 2 replies; 3+ messages in thread
From: Matthew Auld @ 2020-06-03 10:07 UTC (permalink / raw)
  To: igt-dev; +Cc: intel-gfx, Chris Wilson

The gem_create_v2 uapi was never merged, which would have been a nice
addition to allow userspace to utilise stolen memory. Since it can only
get in the way at this point, let's just remove it.

Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
 lib/ioctl_wrappers.c    | 70 -------------------------------
 lib/ioctl_wrappers.h    |  3 --
 tests/i915/gem_create.c | 46 +++-----------------
 tests/i915/gem_pread.c  | 93 -----------------------------------------
 tests/i915/gem_pwrite.c | 43 -------------------
 5 files changed, 5 insertions(+), 250 deletions(-)

diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
index 61f93bd8..3781286d 100644
--- a/lib/ioctl_wrappers.c
+++ b/lib/ioctl_wrappers.c
@@ -469,76 +469,6 @@ void gem_sync(int fd, uint32_t handle)
 	errno = 0;
 }
 
-
-bool gem_create__has_stolen_support(int fd)
-{
-	int has_stolen_support;
-	struct drm_i915_getparam gp;
-	int val = -1;
-
-	memset(&gp, 0, sizeof(gp));
-	gp.param = 38; /* CREATE_VERSION */
-	gp.value = &val;
-
-	/* Do we have the extended gem_create_ioctl? */
-	ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp);
-	has_stolen_support = val >= 2;
-
-	return has_stolen_support;
-}
-
-struct local_i915_gem_create_v2 {
-	uint64_t size;
-	uint32_t handle;
-	uint32_t pad;
-#define I915_CREATE_PLACEMENT_STOLEN (1<<0)
-	uint32_t flags;
-};
-
-#define LOCAL_IOCTL_I915_GEM_CREATE       DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CREATE, struct local_i915_gem_create_v2)
-uint32_t __gem_create_stolen(int fd, uint64_t size)
-{
-	struct local_i915_gem_create_v2 create;
-	int ret;
-
-	memset(&create, 0, sizeof(create));
-	create.handle = 0;
-	create.size = size;
-	create.flags = I915_CREATE_PLACEMENT_STOLEN;
-	ret = igt_ioctl(fd, LOCAL_IOCTL_I915_GEM_CREATE, &create);
-
-	if (ret < 0)
-		return 0;
-
-	errno = 0;
-	return create.handle;
-}
-
-/**
- * gem_create_stolen:
- * @fd: open i915 drm file descriptor
- * @size: desired size of the buffer
- *
- * This wraps the new GEM_CREATE ioctl, which allocates a new gem buffer
- * object of @size and placement in stolen memory region.
- *
- * Returns: The file-private handle of the created buffer object
- */
-
-uint32_t gem_create_stolen(int fd, uint64_t size)
-{
-	struct local_i915_gem_create_v2 create;
-
-	memset(&create, 0, sizeof(create));
-	create.handle = 0;
-	create.size = size;
-	create.flags = I915_CREATE_PLACEMENT_STOLEN;
-	do_ioctl(fd, LOCAL_IOCTL_I915_GEM_CREATE, &create);
-	igt_assert(create.handle);
-
-	return create.handle;
-}
-
 int __gem_create(int fd, uint64_t size, uint32_t *handle)
 {
 	struct drm_i915_gem_create create = {
diff --git a/lib/ioctl_wrappers.h b/lib/ioctl_wrappers.h
index 435fc813..870ac8b7 100644
--- a/lib/ioctl_wrappers.h
+++ b/lib/ioctl_wrappers.h
@@ -75,9 +75,6 @@ int __gem_set_domain(int fd, uint32_t handle, uint32_t read, uint32_t write);
 void gem_set_domain(int fd, uint32_t handle, uint32_t read, uint32_t write);
 int gem_wait(int fd, uint32_t handle, int64_t *timeout_ns);
 void gem_sync(int fd, uint32_t handle);
-bool gem_create__has_stolen_support(int fd);
-uint32_t __gem_create_stolen(int fd, uint64_t size);
-uint32_t gem_create_stolen(int fd, uint64_t size);
 int __gem_create(int fd, uint64_t size, uint32_t *handle);
 uint32_t gem_create(int fd, uint64_t size);
 void gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
diff --git a/tests/i915/gem_create.c b/tests/i915/gem_create.c
index e376f8ae..c7444d55 100644
--- a/tests/i915/gem_create.c
+++ b/tests/i915/gem_create.c
@@ -27,11 +27,8 @@
 
 /** @file gem_create.c
  *
- * This is a test for the extended and old gem_create ioctl, that
- * includes allocation of object from stolen memory and shmem.
- *
- * The goal is to simply ensure that basics work and invalid input
- * combinations are rejected.
+ * This is a test for the gem_create ioctl. The goal is to simply ensure that
+ * basics work and invalid input combinations are rejected.
  */
 
 #include <stdlib.h>
@@ -59,42 +56,12 @@
 #include "i915/gem_mman.h"
 #include "i915_drm.h"
 
-IGT_TEST_DESCRIPTION("This is a test for the extended & old gem_create ioctl,"
-		     " that includes allocation of object from stolen memory"
-		     " and shmem.");
+IGT_TEST_DESCRIPTION("This is a test for the gem_create ioctl,"
+		     " where the goal is to simply ensure that basics work"
+		     " and invalid input combinations are rejected.");
 
-#define CLEAR(s) memset(&s, 0, sizeof(s))
 #define PAGE_SIZE 4096
 
-struct local_i915_gem_create_v2 {
-	uint64_t size;
-	uint32_t handle;
-	uint32_t pad;
-#define I915_CREATE_PLACEMENT_STOLEN (1<<0)
-	uint32_t flags;
-} create_v2;
-
-#define LOCAL_IOCTL_I915_GEM_CREATE       DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CREATE, struct local_i915_gem_create_v2)
-
-static void invalid_flag_test(int fd)
-{
-	int ret;
-
-	gem_require_stolen_support(fd);
-
-	create_v2.handle = 0;
-	create_v2.size = PAGE_SIZE;
-	create_v2.flags = ~I915_CREATE_PLACEMENT_STOLEN;
-	ret = drmIoctl(fd, LOCAL_IOCTL_I915_GEM_CREATE, &create_v2);
-
-	igt_assert(ret <= 0);
-
-	create_v2.flags = ~0;
-	ret = drmIoctl(fd, LOCAL_IOCTL_I915_GEM_CREATE, &create_v2);
-
-	igt_assert(ret <= 0);
-}
-
 static int create_ioctl(int fd, struct drm_i915_gem_create *create)
 {
         int err = 0;
@@ -278,9 +245,6 @@ igt_main
 		fd = drm_open_driver(DRIVER_INTEL);
 	}
 
-	igt_subtest("stolen-invalid-flag")
-		invalid_flag_test(fd);
-
 	igt_subtest("create-invalid-size")
 		invalid_size_test(fd);
 
diff --git a/tests/i915/gem_pread.c b/tests/i915/gem_pread.c
index 5b926ab0..6d12b8e9 100644
--- a/tests/i915/gem_pread.c
+++ b/tests/i915/gem_pread.c
@@ -73,7 +73,6 @@ static void pread_self(int i915)
 }
 
 #define OBJECT_SIZE 16384
-#define LARGE_OBJECT_SIZE 1024 * 1024
 #define KGRN "\x1B[32m"
 #define KRED "\x1B[31m"
 #define KNRM "\x1B[0m"
@@ -110,10 +109,7 @@ static const char *bytes_per_sec(char *buf, double v)
 	return buf;
 }
 
-
 uint32_t *src, dst;
-uint32_t *dst_user, src_stolen, large_stolen;
-uint32_t *stolen_pf_user, *stolen_nopf_user;
 int fd, count;
 int object_size = 0;
 
@@ -156,8 +152,6 @@ igt_main_args("s:", NULL, help_str, opt_handler, NULL)
 
 		dst = gem_create(fd, object_size);
 		src = malloc(object_size);
-		src_stolen = gem_create_stolen(fd, object_size);
-		dst_user = malloc(object_size);
 	}
 
 	igt_subtest("bench") {
@@ -197,96 +191,9 @@ igt_main_args("s:", NULL, help_str, opt_handler, NULL)
 		}
 	}
 
-	igt_subtest("stolen-normal") {
-		gem_require_stolen_support(fd);
-		for (count = 1; count <= 1<<17; count <<= 1) {
-			struct timeval start, end;
-
-			gettimeofday(&start, NULL);
-			do_gem_read(fd, src_stolen, dst_user, object_size, count);
-			gettimeofday(&end, NULL);
-			usecs = elapsed(&start, &end, count);
-			bps = bytes_per_sec(buf, object_size/usecs*1e6);
-			igt_info("Time to pread %d bytes x %6d:	%7.3fµs, %s\n",
-				 object_size, count, usecs, bps);
-			fflush(stdout);
-		}
-	}
-	for (c = cache; c->level != -1; c++) {
-		igt_subtest_f("stolen-%s", c->name) {
-			gem_require_stolen_support(fd);
-			gem_set_caching(fd, src_stolen, c->level);
-
-			for (count = 1; count <= 1<<17; count <<= 1) {
-				struct timeval start, end;
-
-				gettimeofday(&start, NULL);
-				do_gem_read(fd, src_stolen, dst_user,
-					    object_size, count);
-				gettimeofday(&end, NULL);
-				usecs = elapsed(&start, &end, count);
-				bps = bytes_per_sec(buf, object_size/usecs*1e6);
-				igt_info("Time to stolen-%s pread %d bytes x %6d:      %7.3fµs, %s\n",
-					 c->name, object_size, count, usecs, bps);
-				fflush(stdout);
-			}
-		}
-	}
-
-	/* List the time taken in pread operation for stolen objects, with
-	 * and without the overhead of page fault handling on accessing the
-	 * user space buffer
-	 */
-	igt_subtest("pagefault-pread") {
-		gem_require_stolen_support(fd);
-		large_stolen = gem_create_stolen(fd, LARGE_OBJECT_SIZE);
-		stolen_nopf_user = (uint32_t *) mmap(NULL, LARGE_OBJECT_SIZE,
-						PROT_WRITE,
-						MAP_ANONYMOUS|MAP_PRIVATE,
-						-1, 0);
-		igt_assert(stolen_nopf_user);
-
-		for (count = 1; count <= 10; count ++) {
-			struct timeval start, end;
-			double t_elapsed = 0;
-
-			gettimeofday(&start, NULL);
-			do_gem_read(fd, large_stolen, stolen_nopf_user,
-				    LARGE_OBJECT_SIZE, 1);
-			gettimeofday(&end, NULL);
-			t_elapsed = elapsed(&start, &end, count);
-			bps = bytes_per_sec(buf, object_size/t_elapsed*1e6);
-			igt_info("Pagefault-N - Time to pread %d bytes: %7.3fµs, %s\n",
-				 LARGE_OBJECT_SIZE, t_elapsed, bps);
-
-			stolen_pf_user = (uint32_t *) mmap(NULL, LARGE_OBJECT_SIZE,
-						      PROT_WRITE,
-						      MAP_ANONYMOUS|MAP_PRIVATE,
-						      -1, 0);
-			igt_assert(stolen_pf_user);
-
-			gettimeofday(&start, NULL);
-			do_gem_read(fd, large_stolen, stolen_pf_user,
-				    LARGE_OBJECT_SIZE, 1);
-			gettimeofday(&end, NULL);
-			usecs = elapsed(&start, &end, count);
-			bps = bytes_per_sec(buf, object_size/usecs*1e6);
-			igt_info("Pagefault-Y - Time to pread %d bytes: %7.3fµs, %s%s%s\n",
-				 LARGE_OBJECT_SIZE, usecs,
-				 t_elapsed < usecs ? KGRN : KRED, bps, KNRM);
-			fflush(stdout);
-			munmap(stolen_pf_user, LARGE_OBJECT_SIZE);
-		}
-		munmap(stolen_nopf_user, LARGE_OBJECT_SIZE);
-		gem_close(fd, large_stolen);
-	}
-
-
 	igt_fixture {
 		free(src);
 		gem_close(fd, dst);
-		free(dst_user);
-		gem_close(fd, src_stolen);
 
 		close(fd);
 	}
diff --git a/tests/i915/gem_pwrite.c b/tests/i915/gem_pwrite.c
index 20e9728b..e491263f 100644
--- a/tests/i915/gem_pwrite.c
+++ b/tests/i915/gem_pwrite.c
@@ -277,7 +277,6 @@ static void test_random(int fd)
 }
 
 uint32_t *src, dst;
-uint32_t *src_user, dst_stolen;
 int fd;
 int object_size = 0;
 
@@ -321,8 +320,6 @@ igt_main_args("s:", NULL, help_str, opt_handler, NULL)
 
 		dst = gem_create(fd, object_size);
 		src = malloc(object_size);
-		dst_stolen = gem_create_stolen(fd, object_size);
-		src_user = malloc(object_size);
 	}
 
 	igt_subtest("bench") {
@@ -362,49 +359,9 @@ igt_main_args("s:", NULL, help_str, opt_handler, NULL)
 		}
 	}
 
-	igt_subtest("stolen-normal") {
-		gem_require_stolen_support(fd);
-		for (count = 1; count <= 1<<17; count <<= 1) {
-			struct timeval start, end;
-
-			gettimeofday(&start, NULL);
-			do_gem_write(fd, dst_stolen, src_user,
-				     object_size, count);
-			gettimeofday(&end, NULL);
-			usecs = elapsed(&start, &end, count);
-			bps = bytes_per_sec(buf, object_size/usecs*1e6);
-			igt_info("Time to pwrite %d bytes x %6d:        %7.3fµs, %s\n",
-				 object_size, count, usecs, bps);
-			fflush(stdout);
-		}
-	}
-
-	for (c = cache; c->level != -1; c++) {
-		igt_subtest_f("stolen-%s", c->name) {
-			gem_require_stolen_support(fd);
-			gem_set_caching(fd, dst, c->level);
-			for (count = 1; count <= 1<<17; count <<= 1) {
-				struct timeval start, end;
-
-				gettimeofday(&start, NULL);
-				do_gem_write(fd, dst_stolen, src_user,
-					     object_size, count);
-				gettimeofday(&end, NULL);
-				bps = bytes_per_sec(buf,
-						    object_size/usecs*1e6);
-				igt_info("Time to stolen-%s pwrite %d bytes x %6d:     %7.3fµs, %s\n",
-					 c->name, object_size, count,
-					 usecs, bps);
-				fflush(stdout);
-			}
-		}
-	}
-
 	igt_fixture {
 		free(src);
 		gem_close(fd, dst);
-		free(src_user);
-		gem_close(fd, dst_stolen);
 	}
 
 	igt_subtest_f("basic-random")
-- 
2.26.2

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Intel-gfx] [igt-dev] [PATCH] i915: purge i915_gem_create_v2
  2020-06-03 10:07 [Intel-gfx] [PATCH] i915: purge i915_gem_create_v2 Matthew Auld
@ 2020-06-03 10:11 ` Chris Wilson
  2020-06-03 11:21 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for " Patchwork
  1 sibling, 0 replies; 3+ messages in thread
From: Chris Wilson @ 2020-06-03 10:11 UTC (permalink / raw)
  To: Matthew Auld, igt-dev; +Cc: intel-gfx

Quoting Matthew Auld (2020-06-03 11:07:51)
> The gem_create_v2 uapi was never merged, which would have been a nice
> addition to allow userspace to utilise stolen memory. Since it can only
> get in the way at this point, let's just remove it.

Just imagine all the trouble we could have saved had we been doing
asynchronous clearing of stolen memory for userspace 5+ years ago :|
 
> Signed-off-by: Matthew Auld <matthew.auld@intel.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Intel-gfx] ✗ Fi.CI.BUILD: failure for i915: purge i915_gem_create_v2
  2020-06-03 10:07 [Intel-gfx] [PATCH] i915: purge i915_gem_create_v2 Matthew Auld
  2020-06-03 10:11 ` [Intel-gfx] [igt-dev] " Chris Wilson
@ 2020-06-03 11:21 ` Patchwork
  1 sibling, 0 replies; 3+ messages in thread
From: Patchwork @ 2020-06-03 11:21 UTC (permalink / raw)
  To: Matthew Auld; +Cc: intel-gfx

== Series Details ==

Series: i915: purge i915_gem_create_v2
URL   : https://patchwork.freedesktop.org/series/77947/
State : failure

== Summary ==

Applying: i915: purge i915_gem_create_v2
error: sha1 information is lacking or useless (lib/ioctl_wrappers.c).
error: could not build fake ancestor
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 i915: purge i915_gem_create_v2
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-06-03 11:21 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-03 10:07 [Intel-gfx] [PATCH] i915: purge i915_gem_create_v2 Matthew Auld
2020-06-03 10:11 ` [Intel-gfx] [igt-dev] " Chris Wilson
2020-06-03 11:21 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).