public inbox for igt-dev@lists.freedesktop.org
 help / color / mirror / Atom feed
From: "Zbigniew Kempczyński" <zbigniew.kempczynski@intel.com>
To: igt-dev@lists.freedesktop.org
Subject: [igt-dev] [PATCH i-g-t v2 4/4] tests/i915/gem_exec_basic: Iterate over all memory regions
Date: Tue, 19 Nov 2019 17:02:23 +0100	[thread overview]
Message-ID: <20191119160223.25283-5-zbigniew.kempczynski@intel.com> (raw)
In-Reply-To: <20191119160223.25283-1-zbigniew.kempczynski@intel.com>

From: Lukasz Kalamarz <lukasz.kalamarz@intel.com>

As a part of local memory effort we need to make sure, that basic
scenarios are covered for every available memory region. This patch is
an attempt for this problem. If it will be accepted it will be
replicated on each test that can benefit from it.

Signed-off-by: Lukasz Kalamarz <lukasz.kalamarz@intel.com>
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
---
 tests/i915/gem_exec_basic.c | 109 +++++++++++++++++++++++-------------
 1 file changed, 70 insertions(+), 39 deletions(-)

diff --git a/tests/i915/gem_exec_basic.c b/tests/i915/gem_exec_basic.c
index 1287860b..4a444916 100644
--- a/tests/i915/gem_exec_basic.c
+++ b/tests/i915/gem_exec_basic.c
@@ -25,12 +25,12 @@
 
 IGT_TEST_DESCRIPTION("Basic sanity check of execbuf-ioctl rings.");
 
-static uint32_t batch_create(int fd)
+static uint32_t batch_create(int fd, uint32_t batch_size, uint32_t region)
 {
 	const uint32_t bbe = MI_BATCH_BUFFER_END;
 	uint32_t handle;
 
-	handle = gem_create(fd, 4096);
+	handle = gem_create_in_memory_regions(fd, batch_size, region);
 	gem_write(fd, handle, 0, &bbe, sizeof(bbe));
 
 	return handle;
@@ -42,7 +42,7 @@ static void batch_fini(int fd, uint32_t handle)
 	gem_close(fd, handle);
 }
 
-static void noop(int fd, uint64_t flags)
+static void noop(int fd, uint64_t flags, uint32_t batch_size, uint32_t region)
 {
 	struct drm_i915_gem_execbuffer2 execbuf;
 	struct drm_i915_gem_exec_object2 exec;
@@ -50,8 +50,7 @@ static void noop(int fd, uint64_t flags)
 	gem_require_ring(fd, flags);
 
 	memset(&exec, 0, sizeof(exec));
-
-	exec.handle = batch_create(fd);
+	exec.handle = batch_create(fd, batch_size, region);
 
 	memset(&execbuf, 0, sizeof(execbuf));
 	execbuf.buffers_ptr = to_user_pointer(&exec);
@@ -62,7 +61,8 @@ static void noop(int fd, uint64_t flags)
 	batch_fini(fd, exec.handle);
 }
 
-static void readonly(int fd, uint64_t flags)
+static void readonly(int fd, uint64_t flags, uint32_t batch_size,
+		     uint32_t region)
 {
 	struct drm_i915_gem_execbuffer2 *execbuf;
 	struct drm_i915_gem_exec_object2 exec;
@@ -70,39 +70,41 @@ static void readonly(int fd, uint64_t flags)
 	gem_require_ring(fd, flags);
 
 	memset(&exec, 0, sizeof(exec));
-	exec.handle = batch_create(fd);
+	exec.handle = batch_create(fd, batch_size, region);
 
-	execbuf = mmap(NULL, 4096, PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
+	execbuf = mmap(NULL, batch_size, PROT_WRITE,
+		       MAP_ANON | MAP_PRIVATE, -1, 0);
 	igt_assert(execbuf != NULL);
 
 	execbuf->buffers_ptr = to_user_pointer(&exec);
 	execbuf->buffer_count = 1;
 	execbuf->flags = flags;
-	igt_assert(mprotect(execbuf, 4096, PROT_READ) == 0);
+	igt_assert(mprotect(execbuf, batch_size, PROT_READ) == 0);
 
 	gem_execbuf(fd, execbuf);
 
-	munmap(execbuf, 4096);
-
+	munmap(execbuf, batch_size);
 	batch_fini(fd, exec.handle);
 }
 
-static void gtt(int fd, uint64_t flags)
+static void gtt(int fd, uint64_t flags, uint32_t batch_size, uint32_t region)
 {
 	struct drm_i915_gem_execbuffer2 *execbuf;
 	struct drm_i915_gem_exec_object2 *exec;
 	uint32_t handle;
 
 	gem_require_ring(fd, flags);
+	gem_require_mappable_ggtt(fd);
+	igt_require(IS_SYSTEM_MEMORY_REGION(region));
 
-	handle = gem_create(fd, 4096);
-
+	handle = gem_create_in_memory_regions(fd, handle, region);
 	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
-	execbuf = gem_mmap__gtt(fd, handle, 4096, PROT_WRITE);
+
+	execbuf = gem_mmap__gtt(fd, handle, batch_size, PROT_WRITE);
 	exec = (struct drm_i915_gem_exec_object2 *)(execbuf + 1);
 	gem_close(fd, handle);
 
-	exec->handle = batch_create(fd);
+	exec->handle = batch_create(fd, batch_size, region);
 
 	execbuf->buffers_ptr = to_user_pointer(exec);
 	execbuf->buffer_count = 1;
@@ -111,36 +113,41 @@ static void gtt(int fd, uint64_t flags)
 	gem_execbuf(fd, execbuf);
 
 	batch_fini(fd, exec->handle);
-	munmap(execbuf, 4096);
+	munmap(execbuf, batch_size);
 }
 
-static void all(int i915)
+static void all(int i915, uint32_t batch_size, uint32_t region)
 {
 	const struct intel_execution_engine2 *e;
 
 	__for_each_physical_engine(i915, e)
-		noop(i915, e->flags);
+		noop(i915, e->flags, batch_size, region);
 }
 
-static void readonly_all(int i915)
+static void readonly_all(int i915, uint32_t batch_size, uint32_t region)
 {
 	const struct intel_execution_engine2 *e;
 
 	__for_each_physical_engine(i915, e)
-		readonly(i915, e->flags);
+		readonly(i915, e->flags, batch_size, region);
 }
 
-static void gtt_all(int i915)
+static void gtt_all(int i915, uint32_t batch_size, uint32_t region)
 {
 	const struct intel_execution_engine2 *e;
 
 	__for_each_physical_engine(i915, e)
-		gtt(i915, e->flags);
+		gtt(i915, e->flags, batch_size, region);
 }
 
 igt_main
 {
 	const struct intel_execution_engine2 *e;
+	const struct intel_memory_region *mr;
+	struct local_i915_query_memory_region_info *query_info;
+	uint32_t mem_type, mem_instance;
+	uint32_t batch_size;
+	uint32_t region;
 	int fd = -1;
 
 	igt_fixture {
@@ -148,27 +155,51 @@ igt_main
 		igt_require_gem(fd);
 
 		igt_fork_hang_detector(fd);
-	}
-
-	igt_subtest("basic-all")
-		all(fd);
 
-	igt_subtest("readonly-all")
-		readonly_all(fd);
-
-	igt_subtest("gtt-all")
-		gtt_all(fd);
+		query_info = gem_query_memory_regions(fd);
+		igt_assert(query_info);
+	}
 
-	__for_each_physical_engine(fd, e) {
-		igt_subtest_f("basic-%s", e->name)
-			noop(fd, e->flags);
-		igt_subtest_f("readonly-%s", e->name)
-			readonly(fd, e->flags);
-		igt_subtest_f("gtt-%s", e->name)
-			gtt(fd, e->flags);
+	for (mr = intel_memory_regions; mr->region_name; mr++) {
+		mem_type = mr->memory_type;
+		mem_instance = mr->memory_instance;
+		region = INTEL_MEMORY_REGION_ID(mem_type, mem_instance);
+
+		batch_size = gem_get_batch_size(fd, region);
+
+		igt_subtest_f("basic-%s-all", mr->region_name) {
+			gem_query_require_region(query_info, region);
+			all(fd, batch_size, region);
+		}
+
+		igt_subtest_f("readonly-%s-all", mr->region_name) {
+			gem_query_require_region(query_info, region);
+			readonly_all(fd, batch_size, region);
+		}
+
+		igt_subtest_f("gtt-%s-all", mr->region_name) {
+			gem_query_require_region(query_info, region);
+			gtt_all(fd, batch_size, region);
+		}
+
+		__for_each_physical_engine(fd, e) {
+			igt_subtest_f("basic-%s-%s", mr->region_name, e->name) {
+				gem_query_require_region(query_info, region);
+				noop(fd, e->flags, batch_size, region);
+			}
+			igt_subtest_f("readonly-%s-%s", mr->region_name, e->name) {
+				gem_query_require_region(query_info, region);
+				readonly(fd, e->flags, batch_size, region);
+			}
+			igt_subtest_f("gtt-%s-%s", mr->region_name, e->name) {
+				gem_query_require_region(query_info, region);
+				gtt(fd, e->flags, batch_size, region);
+			}
+		}
 	}
 
 	igt_fixture {
+		free(query_info);
 		igt_stop_hang_detector();
 		close(fd);
 	}
-- 
2.23.0

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

  parent reply	other threads:[~2019-11-19 16:02 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-19 16:02 [igt-dev] [PATCH i-g-t v2 0/4] Basic LMEM support in IGT Zbigniew Kempczyński
2019-11-19 16:02 ` [igt-dev] [PATCH i-g-t v2 1/4] lib/i915/gem_mman: add mmap_offset support Zbigniew Kempczyński
2019-11-19 16:23   ` Summers, Stuart
2019-11-19 17:19     ` Zbigniew Kempczyński
2019-11-19 16:02 ` [igt-dev] [PATCH i-g-t v2 2/4] lib/i915/intel_memory_region: Add lib to manage memory regions Zbigniew Kempczyński
2019-11-19 18:03   ` Vanshidhar Konda
2019-11-20  7:20     ` Zbigniew Kempczyński
2019-11-20  9:34   ` Petri Latvala
2019-11-20 16:27     ` Zbigniew Kempczyński
2019-11-19 16:02 ` [igt-dev] [PATCH i-g-t v2 3/4] tests/i915/gem_mmap_offset: Add new API test for gem_mmap_offset Zbigniew Kempczyński
2019-11-19 18:13   ` Vanshidhar Konda
2019-11-20 10:50     ` Zbigniew Kempczyński
2019-11-19 16:02 ` Zbigniew Kempczyński [this message]
2019-11-19 18:15   ` [igt-dev] [PATCH i-g-t v2 4/4] tests/i915/gem_exec_basic: Iterate over all memory regions Vanshidhar Konda
2019-11-19 16:53 ` [igt-dev] ✗ GitLab.Pipeline: warning for Basic LMEM support in IGT (rev2) Patchwork
2019-11-19 17:00 ` [igt-dev] ✗ Fi.CI.BAT: failure " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191119160223.25283-5-zbigniew.kempczynski@intel.com \
    --to=zbigniew.kempczynski@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox