[igt-dev] [PATCH] i915: purge i915_gem_create_v2
Matthew Auld
matthew.auld at intel.com
Wed Jun 3 10:07:51 UTC 2020
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 at intel.com>
Cc: Chris Wilson <chris at 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
More information about the igt-dev
mailing list