* [PATH i-g-t 1/2] tests/gem_ctx_bad_exec: Consolidate to gem_ctx_exec
@ 2018-09-07 9:30 ` Tvrtko Ursulin
0 siblings, 0 replies; 9+ messages in thread
From: Tvrtko Ursulin @ 2018-09-07 9:30 UTC (permalink / raw)
To: igt-dev; +Cc: Intel-gfx
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Move a really small test that invalid context is rejected under the
gem_ctx_exec umbrella.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
tests/Makefile.sources | 1 -
tests/gem_ctx_bad_exec.c | 60 ----------------------------------------
tests/gem_ctx_exec.c | 22 +++++++++++++++
tests/meson.build | 1 -
4 files changed, 22 insertions(+), 62 deletions(-)
delete mode 100644 tests/gem_ctx_bad_exec.c
diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index f8f2c8d67d72..6765143bf344 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -51,7 +51,6 @@ TESTS_progs = \
gem_cs_prefetch \
gem_cs_tlb \
gem_ctx_bad_destroy \
- gem_ctx_bad_exec \
gem_ctx_create \
gem_ctx_exec \
gem_ctx_isolation \
diff --git a/tests/gem_ctx_bad_exec.c b/tests/gem_ctx_bad_exec.c
deleted file mode 100644
index e3ccc5be46a0..000000000000
--- a/tests/gem_ctx_bad_exec.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- */
-
-#include "igt.h"
-
-IGT_TEST_DESCRIPTION("Test that context cannot be submitted to any ring");
-
-static int exec(int fd, unsigned ring)
-{
- struct drm_i915_gem_execbuffer2 execbuf;
- struct drm_i915_gem_exec_object2 obj;
-
- memset(&obj, 0, sizeof(obj));
- memset(&execbuf, 0, sizeof(execbuf));
-
- execbuf.buffers_ptr = to_user_pointer(&obj);
- execbuf.buffer_count = 1;
- i915_execbuffer2_set_context_id(execbuf, 1);
-
- return __gem_execbuf(fd, &execbuf);
-}
-
-igt_main
-{
- const struct intel_execution_engine *e;
- int fd = -1;
-
- igt_skip_on_simulation();
-
- igt_fixture
- fd = drm_open_driver_render(DRIVER_INTEL);
-
- for (e = intel_execution_engines; e->name; e++) {
- igt_subtest_f("%s", e->name) {
- gem_require_ring(fd, e->exec_id | e->flags);
- igt_assert_eq(exec(fd, e->exec_id | e->flags), -ENOENT);
- }
- }
-}
diff --git a/tests/gem_ctx_exec.c b/tests/gem_ctx_exec.c
index 1f8ed64d4bd3..b35ec9f64775 100644
--- a/tests/gem_ctx_exec.c
+++ b/tests/gem_ctx_exec.c
@@ -142,6 +142,19 @@ static void big_exec(int fd, uint32_t handle, int ring)
gem_sync(fd, handle);
}
+static void invalid_context(int fd, unsigned ring)
+{
+ struct drm_i915_gem_exec_object2 obj = { };
+ struct drm_i915_gem_execbuffer2 execbuf = {
+ .buffers_ptr = to_user_pointer(&obj),
+ .buffer_count = 1,
+ };
+
+ i915_execbuffer2_set_context_id(execbuf, 1);
+
+ igt_assert_eq(__gem_execbuf(fd, &execbuf), -ENOENT);
+}
+
uint32_t handle;
uint32_t batch[2] = {0, MI_BATCH_BUFFER_END};
uint32_t ctx_id, ctx_id2;
@@ -149,6 +162,8 @@ int fd;
igt_main
{
+ const struct intel_execution_engine *e;
+
igt_fixture {
fd = drm_open_driver_render(DRIVER_INTEL);
igt_require_gem(fd);
@@ -174,6 +189,13 @@ igt_main
gem_sync(fd, handle);
}
+ for (e = intel_execution_engines; e->name; e++) {
+ igt_subtest_f("invalid-context-%s", e->name) {
+ gem_require_ring(fd, e->exec_id | e->flags);
+ invalid_context(fd, e->exec_id | e->flags);
+ }
+ }
+
igt_subtest("eviction")
big_exec(fd, handle, I915_EXEC_RENDER);
diff --git a/tests/meson.build b/tests/meson.build
index 9319fa4e19b4..f70c859f1a62 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -28,7 +28,6 @@ test_progs = [
'gem_cs_prefetch',
'gem_cs_tlb',
'gem_ctx_bad_destroy',
- 'gem_ctx_bad_exec',
'gem_ctx_create',
'gem_ctx_exec',
'gem_ctx_isolation',
--
2.17.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [igt-dev] [PATH i-g-t 1/2] tests/gem_ctx_bad_exec: Consolidate to gem_ctx_exec
@ 2018-09-07 9:30 ` Tvrtko Ursulin
0 siblings, 0 replies; 9+ messages in thread
From: Tvrtko Ursulin @ 2018-09-07 9:30 UTC (permalink / raw)
To: igt-dev; +Cc: Intel-gfx, Tvrtko Ursulin
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Move a really small test that invalid context is rejected under the
gem_ctx_exec umbrella.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
tests/Makefile.sources | 1 -
tests/gem_ctx_bad_exec.c | 60 ----------------------------------------
tests/gem_ctx_exec.c | 22 +++++++++++++++
tests/meson.build | 1 -
4 files changed, 22 insertions(+), 62 deletions(-)
delete mode 100644 tests/gem_ctx_bad_exec.c
diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index f8f2c8d67d72..6765143bf344 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -51,7 +51,6 @@ TESTS_progs = \
gem_cs_prefetch \
gem_cs_tlb \
gem_ctx_bad_destroy \
- gem_ctx_bad_exec \
gem_ctx_create \
gem_ctx_exec \
gem_ctx_isolation \
diff --git a/tests/gem_ctx_bad_exec.c b/tests/gem_ctx_bad_exec.c
deleted file mode 100644
index e3ccc5be46a0..000000000000
--- a/tests/gem_ctx_bad_exec.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- */
-
-#include "igt.h"
-
-IGT_TEST_DESCRIPTION("Test that context cannot be submitted to any ring");
-
-static int exec(int fd, unsigned ring)
-{
- struct drm_i915_gem_execbuffer2 execbuf;
- struct drm_i915_gem_exec_object2 obj;
-
- memset(&obj, 0, sizeof(obj));
- memset(&execbuf, 0, sizeof(execbuf));
-
- execbuf.buffers_ptr = to_user_pointer(&obj);
- execbuf.buffer_count = 1;
- i915_execbuffer2_set_context_id(execbuf, 1);
-
- return __gem_execbuf(fd, &execbuf);
-}
-
-igt_main
-{
- const struct intel_execution_engine *e;
- int fd = -1;
-
- igt_skip_on_simulation();
-
- igt_fixture
- fd = drm_open_driver_render(DRIVER_INTEL);
-
- for (e = intel_execution_engines; e->name; e++) {
- igt_subtest_f("%s", e->name) {
- gem_require_ring(fd, e->exec_id | e->flags);
- igt_assert_eq(exec(fd, e->exec_id | e->flags), -ENOENT);
- }
- }
-}
diff --git a/tests/gem_ctx_exec.c b/tests/gem_ctx_exec.c
index 1f8ed64d4bd3..b35ec9f64775 100644
--- a/tests/gem_ctx_exec.c
+++ b/tests/gem_ctx_exec.c
@@ -142,6 +142,19 @@ static void big_exec(int fd, uint32_t handle, int ring)
gem_sync(fd, handle);
}
+static void invalid_context(int fd, unsigned ring)
+{
+ struct drm_i915_gem_exec_object2 obj = { };
+ struct drm_i915_gem_execbuffer2 execbuf = {
+ .buffers_ptr = to_user_pointer(&obj),
+ .buffer_count = 1,
+ };
+
+ i915_execbuffer2_set_context_id(execbuf, 1);
+
+ igt_assert_eq(__gem_execbuf(fd, &execbuf), -ENOENT);
+}
+
uint32_t handle;
uint32_t batch[2] = {0, MI_BATCH_BUFFER_END};
uint32_t ctx_id, ctx_id2;
@@ -149,6 +162,8 @@ int fd;
igt_main
{
+ const struct intel_execution_engine *e;
+
igt_fixture {
fd = drm_open_driver_render(DRIVER_INTEL);
igt_require_gem(fd);
@@ -174,6 +189,13 @@ igt_main
gem_sync(fd, handle);
}
+ for (e = intel_execution_engines; e->name; e++) {
+ igt_subtest_f("invalid-context-%s", e->name) {
+ gem_require_ring(fd, e->exec_id | e->flags);
+ invalid_context(fd, e->exec_id | e->flags);
+ }
+ }
+
igt_subtest("eviction")
big_exec(fd, handle, I915_EXEC_RENDER);
diff --git a/tests/meson.build b/tests/meson.build
index 9319fa4e19b4..f70c859f1a62 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -28,7 +28,6 @@ test_progs = [
'gem_cs_prefetch',
'gem_cs_tlb',
'gem_ctx_bad_destroy',
- 'gem_ctx_bad_exec',
'gem_ctx_create',
'gem_ctx_exec',
'gem_ctx_isolation',
--
2.17.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATH i-g-t 2/2] tests/gem_ctx_exec: Move lrc-lite-restore to gem_ctx_switch
2018-09-07 9:30 ` [igt-dev] " Tvrtko Ursulin
@ 2018-09-07 9:30 ` Tvrtko Ursulin
-1 siblings, 0 replies; 9+ messages in thread
From: Tvrtko Ursulin @ 2018-09-07 9:30 UTC (permalink / raw)
To: igt-dev; +Cc: Intel-gfx
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
New home is more appropriate for this test.
At the same time tidy code a tiny bit.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
tests/gem_ctx_exec.c | 75 +++++++-----------------------------------
tests/gem_ctx_switch.c | 46 ++++++++++++++++++++++++++
2 files changed, 58 insertions(+), 63 deletions(-)
diff --git a/tests/gem_ctx_exec.c b/tests/gem_ctx_exec.c
index b35ec9f64775..b9173e9e2b17 100644
--- a/tests/gem_ctx_exec.c
+++ b/tests/gem_ctx_exec.c
@@ -25,10 +25,6 @@
*
*/
-/*
- * This test covers basic context switch functionality
- */
-
#include "igt.h"
#include <unistd.h>
#include <stdlib.h>
@@ -45,34 +41,18 @@
#include <drm.h>
-IGT_TEST_DESCRIPTION("Test basic context switch functionality.");
+IGT_TEST_DESCRIPTION("Test context batch execution.");
-/* Copied from gem_exec_nop.c */
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;
-
- gem_exec.handle = handle;
- gem_exec.relocation_count = 0;
- gem_exec.relocs_ptr = 0;
- gem_exec.alignment = 0;
- gem_exec.offset = 0;
- gem_exec.flags = 0;
- gem_exec.rsvd1 = 0;
- gem_exec.rsvd2 = 0;
-
- execbuf.buffers_ptr = to_user_pointer(&gem_exec);
- execbuf.buffer_count = 1;
- execbuf.batch_start_offset = 0;
- execbuf.batch_len = 8;
- execbuf.cliprects_ptr = 0;
- execbuf.num_cliprects = 0;
- execbuf.DR1 = 0;
- execbuf.DR4 = 0;
- execbuf.flags = ring;
+ struct drm_i915_gem_exec_object2 obj = { .handle = handle };
+ struct drm_i915_gem_execbuffer2 execbuf = {
+ .buffers_ptr = to_user_pointer(&obj),
+ .buffer_count = 1,
+ .flags = ring,
+ };
+
i915_execbuffer2_set_context_id(execbuf, ctx_id);
- execbuf.rsvd2 = 0;
return __gem_execbuf(fd, &execbuf);
}
@@ -92,13 +72,11 @@ static void big_exec(int fd, uint32_t handle, int ring)
igt_assert(gem_exec);
memset(gem_exec, 0, (num_buffers + 1) * sizeof(*gem_exec));
-
ctx_id1 = gem_context_create(fd);
ctx_id2 = gem_context_create(fd);
gem_exec[0].handle = handle;
-
execbuf.buffers_ptr = to_user_pointer(gem_exec);
execbuf.buffer_count = num_buffers + 1;
execbuf.batch_start_offset = 0;
@@ -155,14 +133,13 @@ static void invalid_context(int fd, unsigned ring)
igt_assert_eq(__gem_execbuf(fd, &execbuf), -ENOENT);
}
-uint32_t handle;
-uint32_t batch[2] = {0, MI_BATCH_BUFFER_END};
-uint32_t ctx_id, ctx_id2;
-int fd;
-
igt_main
{
+ const uint32_t batch[2] = { 0, MI_BATCH_BUFFER_END };
const struct intel_execution_engine *e;
+ uint32_t handle;
+ uint32_t ctx_id;
+ int fd;
igt_fixture {
fd = drm_open_driver_render(DRIVER_INTEL);
@@ -225,32 +202,4 @@ igt_main
gem_context_destroy(fd, ctx_id);
}
-
- igt_subtest("lrc-lite-restore") {
- int i, j;
-
- /*
- * Need 2 contexts to be able to replicate a lite restore,
- * i.e. a running context is resubmitted.
- */
- ctx_id = gem_context_create(fd);
- ctx_id2 = gem_context_create(fd);
-
- /*
- * Queue several small batchbuffers to be sure we'll send execlists
- * with 2 valid context, and likely cause a lite restore when ctxB
- * is resubmitted at the top of the new execlist.
- */
- for (i = 0; i < 20; i++) {
- for (j = 0; j < 200; j++) {
- igt_assert(exec(fd, handle, I915_EXEC_RENDER, ctx_id) == 0);
- igt_assert(exec(fd, handle, I915_EXEC_RENDER, ctx_id2) == 0);
- }
-
- gem_sync(fd, handle);
- }
-
- gem_context_destroy(fd, ctx_id);
- gem_context_destroy(fd, ctx_id2);
- }
}
diff --git a/tests/gem_ctx_switch.c b/tests/gem_ctx_switch.c
index 1208cb8d7fe2..7ad7b31ea183 100644
--- a/tests/gem_ctx_switch.c
+++ b/tests/gem_ctx_switch.c
@@ -83,6 +83,20 @@ static int measure_qlen(int fd,
return qlen;
}
+static int exec(int fd, uint32_t handle, int ring, int ctx_id)
+{
+ struct drm_i915_gem_exec_object2 obj = { .handle = handle };
+ struct drm_i915_gem_execbuffer2 execbuf = {
+ .buffers_ptr = to_user_pointer(&obj),
+ .buffer_count = 1,
+ .flags = ring,
+ };
+
+ i915_execbuffer2_set_context_id(execbuf, ctx_id);
+
+ return __gem_execbuf(fd, &execbuf);
+}
+
static void single(int fd, uint32_t handle,
const struct intel_execution_engine *e,
unsigned flags,
@@ -318,6 +332,38 @@ igt_main
igt_subtest("basic-all-heavy")
all(fd, heavy, 0, 5);
+ igt_subtest("lrc-lite-restore") {
+ uint32_t ctx[2];
+ int i, j;
+
+ /*
+ * Need 2 contexts to be able to replicate a lite restore,
+ * i.e. a running context is resubmitted.
+ */
+ ctx[0] = gem_context_create(fd);
+ ctx[1] = gem_context_create(fd);
+
+ /*
+ * Queue several small batchbuffers to be sure we'll send
+ * execlists with 2 valid context, and likely cause a lite
+ * restore when ctxB is resubmitted at the top of the new
+ * execlist.
+ */
+ for (i = 0; i < 20; i++) {
+ for (j = 0; j < 200; j++) {
+ igt_assert_eq(exec(fd, light, I915_EXEC_RENDER,
+ ctx[0]), 0);
+ igt_assert_eq(exec(fd, light, I915_EXEC_RENDER,
+ ctx[1]), 0);
+ }
+
+ gem_sync(fd, light);
+ }
+
+ gem_context_destroy(fd, ctx[0]);
+ gem_context_destroy(fd, ctx[1]);
+ }
+
igt_fixture {
igt_stop_hang_detector();
gem_close(fd, heavy);
--
2.17.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [igt-dev] [PATH i-g-t 2/2] tests/gem_ctx_exec: Move lrc-lite-restore to gem_ctx_switch
@ 2018-09-07 9:30 ` Tvrtko Ursulin
0 siblings, 0 replies; 9+ messages in thread
From: Tvrtko Ursulin @ 2018-09-07 9:30 UTC (permalink / raw)
To: igt-dev; +Cc: Intel-gfx, Tvrtko Ursulin
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
New home is more appropriate for this test.
At the same time tidy code a tiny bit.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
tests/gem_ctx_exec.c | 75 +++++++-----------------------------------
tests/gem_ctx_switch.c | 46 ++++++++++++++++++++++++++
2 files changed, 58 insertions(+), 63 deletions(-)
diff --git a/tests/gem_ctx_exec.c b/tests/gem_ctx_exec.c
index b35ec9f64775..b9173e9e2b17 100644
--- a/tests/gem_ctx_exec.c
+++ b/tests/gem_ctx_exec.c
@@ -25,10 +25,6 @@
*
*/
-/*
- * This test covers basic context switch functionality
- */
-
#include "igt.h"
#include <unistd.h>
#include <stdlib.h>
@@ -45,34 +41,18 @@
#include <drm.h>
-IGT_TEST_DESCRIPTION("Test basic context switch functionality.");
+IGT_TEST_DESCRIPTION("Test context batch execution.");
-/* Copied from gem_exec_nop.c */
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;
-
- gem_exec.handle = handle;
- gem_exec.relocation_count = 0;
- gem_exec.relocs_ptr = 0;
- gem_exec.alignment = 0;
- gem_exec.offset = 0;
- gem_exec.flags = 0;
- gem_exec.rsvd1 = 0;
- gem_exec.rsvd2 = 0;
-
- execbuf.buffers_ptr = to_user_pointer(&gem_exec);
- execbuf.buffer_count = 1;
- execbuf.batch_start_offset = 0;
- execbuf.batch_len = 8;
- execbuf.cliprects_ptr = 0;
- execbuf.num_cliprects = 0;
- execbuf.DR1 = 0;
- execbuf.DR4 = 0;
- execbuf.flags = ring;
+ struct drm_i915_gem_exec_object2 obj = { .handle = handle };
+ struct drm_i915_gem_execbuffer2 execbuf = {
+ .buffers_ptr = to_user_pointer(&obj),
+ .buffer_count = 1,
+ .flags = ring,
+ };
+
i915_execbuffer2_set_context_id(execbuf, ctx_id);
- execbuf.rsvd2 = 0;
return __gem_execbuf(fd, &execbuf);
}
@@ -92,13 +72,11 @@ static void big_exec(int fd, uint32_t handle, int ring)
igt_assert(gem_exec);
memset(gem_exec, 0, (num_buffers + 1) * sizeof(*gem_exec));
-
ctx_id1 = gem_context_create(fd);
ctx_id2 = gem_context_create(fd);
gem_exec[0].handle = handle;
-
execbuf.buffers_ptr = to_user_pointer(gem_exec);
execbuf.buffer_count = num_buffers + 1;
execbuf.batch_start_offset = 0;
@@ -155,14 +133,13 @@ static void invalid_context(int fd, unsigned ring)
igt_assert_eq(__gem_execbuf(fd, &execbuf), -ENOENT);
}
-uint32_t handle;
-uint32_t batch[2] = {0, MI_BATCH_BUFFER_END};
-uint32_t ctx_id, ctx_id2;
-int fd;
-
igt_main
{
+ const uint32_t batch[2] = { 0, MI_BATCH_BUFFER_END };
const struct intel_execution_engine *e;
+ uint32_t handle;
+ uint32_t ctx_id;
+ int fd;
igt_fixture {
fd = drm_open_driver_render(DRIVER_INTEL);
@@ -225,32 +202,4 @@ igt_main
gem_context_destroy(fd, ctx_id);
}
-
- igt_subtest("lrc-lite-restore") {
- int i, j;
-
- /*
- * Need 2 contexts to be able to replicate a lite restore,
- * i.e. a running context is resubmitted.
- */
- ctx_id = gem_context_create(fd);
- ctx_id2 = gem_context_create(fd);
-
- /*
- * Queue several small batchbuffers to be sure we'll send execlists
- * with 2 valid context, and likely cause a lite restore when ctxB
- * is resubmitted at the top of the new execlist.
- */
- for (i = 0; i < 20; i++) {
- for (j = 0; j < 200; j++) {
- igt_assert(exec(fd, handle, I915_EXEC_RENDER, ctx_id) == 0);
- igt_assert(exec(fd, handle, I915_EXEC_RENDER, ctx_id2) == 0);
- }
-
- gem_sync(fd, handle);
- }
-
- gem_context_destroy(fd, ctx_id);
- gem_context_destroy(fd, ctx_id2);
- }
}
diff --git a/tests/gem_ctx_switch.c b/tests/gem_ctx_switch.c
index 1208cb8d7fe2..7ad7b31ea183 100644
--- a/tests/gem_ctx_switch.c
+++ b/tests/gem_ctx_switch.c
@@ -83,6 +83,20 @@ static int measure_qlen(int fd,
return qlen;
}
+static int exec(int fd, uint32_t handle, int ring, int ctx_id)
+{
+ struct drm_i915_gem_exec_object2 obj = { .handle = handle };
+ struct drm_i915_gem_execbuffer2 execbuf = {
+ .buffers_ptr = to_user_pointer(&obj),
+ .buffer_count = 1,
+ .flags = ring,
+ };
+
+ i915_execbuffer2_set_context_id(execbuf, ctx_id);
+
+ return __gem_execbuf(fd, &execbuf);
+}
+
static void single(int fd, uint32_t handle,
const struct intel_execution_engine *e,
unsigned flags,
@@ -318,6 +332,38 @@ igt_main
igt_subtest("basic-all-heavy")
all(fd, heavy, 0, 5);
+ igt_subtest("lrc-lite-restore") {
+ uint32_t ctx[2];
+ int i, j;
+
+ /*
+ * Need 2 contexts to be able to replicate a lite restore,
+ * i.e. a running context is resubmitted.
+ */
+ ctx[0] = gem_context_create(fd);
+ ctx[1] = gem_context_create(fd);
+
+ /*
+ * Queue several small batchbuffers to be sure we'll send
+ * execlists with 2 valid context, and likely cause a lite
+ * restore when ctxB is resubmitted at the top of the new
+ * execlist.
+ */
+ for (i = 0; i < 20; i++) {
+ for (j = 0; j < 200; j++) {
+ igt_assert_eq(exec(fd, light, I915_EXEC_RENDER,
+ ctx[0]), 0);
+ igt_assert_eq(exec(fd, light, I915_EXEC_RENDER,
+ ctx[1]), 0);
+ }
+
+ gem_sync(fd, light);
+ }
+
+ gem_context_destroy(fd, ctx[0]);
+ gem_context_destroy(fd, ctx[1]);
+ }
+
igt_fixture {
igt_stop_hang_detector();
gem_close(fd, heavy);
--
2.17.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [igt-dev] [PATH i-g-t 1/2] tests/gem_ctx_bad_exec: Consolidate to gem_ctx_exec
2018-09-07 9:30 ` [igt-dev] " Tvrtko Ursulin
@ 2018-09-07 9:39 ` Chris Wilson
-1 siblings, 0 replies; 9+ messages in thread
From: Chris Wilson @ 2018-09-07 9:39 UTC (permalink / raw)
To: Tvrtko Ursulin, igt-dev; +Cc: Intel-gfx
Quoting Tvrtko Ursulin (2018-09-07 10:30:07)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> Move a really small test that invalid context is rejected under the
> gem_ctx_exec umbrella.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> ---
> tests/Makefile.sources | 1 -
> tests/gem_ctx_bad_exec.c | 60 ----------------------------------------
> tests/gem_ctx_exec.c | 22 +++++++++++++++
> tests/meson.build | 1 -
> 4 files changed, 22 insertions(+), 62 deletions(-)
> delete mode 100644 tests/gem_ctx_bad_exec.c
>
> diff --git a/tests/Makefile.sources b/tests/Makefile.sources
> index f8f2c8d67d72..6765143bf344 100644
> --- a/tests/Makefile.sources
> +++ b/tests/Makefile.sources
> @@ -51,7 +51,6 @@ TESTS_progs = \
> gem_cs_prefetch \
> gem_cs_tlb \
> gem_ctx_bad_destroy \
> - gem_ctx_bad_exec \
> gem_ctx_create \
> gem_ctx_exec \
> gem_ctx_isolation \
> diff --git a/tests/gem_ctx_bad_exec.c b/tests/gem_ctx_bad_exec.c
> deleted file mode 100644
> index e3ccc5be46a0..000000000000
> --- a/tests/gem_ctx_bad_exec.c
> +++ /dev/null
> @@ -1,60 +0,0 @@
> -/*
> - * Copyright © 2012 Intel Corporation
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a
> - * copy of this software and associated documentation files (the "Software"),
> - * to deal in the Software without restriction, including without limitation
> - * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> - * and/or sell copies of the Software, and to permit persons to whom the
> - * Software is furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice (including the next
> - * paragraph) shall be included in all copies or substantial portions of the
> - * Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> - * IN THE SOFTWARE.
> - *
> - */
> -
> -#include "igt.h"
> -
> -IGT_TEST_DESCRIPTION("Test that context cannot be submitted to any ring");
> -
> -static int exec(int fd, unsigned ring)
> -{
> - struct drm_i915_gem_execbuffer2 execbuf;
> - struct drm_i915_gem_exec_object2 obj;
> -
> - memset(&obj, 0, sizeof(obj));
> - memset(&execbuf, 0, sizeof(execbuf));
> -
> - execbuf.buffers_ptr = to_user_pointer(&obj);
> - execbuf.buffer_count = 1;
> - i915_execbuffer2_set_context_id(execbuf, 1);
> -
> - return __gem_execbuf(fd, &execbuf);
> -}
> -
> -igt_main
> -{
> - const struct intel_execution_engine *e;
> - int fd = -1;
> -
> - igt_skip_on_simulation();
> -
> - igt_fixture
> - fd = drm_open_driver_render(DRIVER_INTEL);
> -
> - for (e = intel_execution_engines; e->name; e++) {
> - igt_subtest_f("%s", e->name) {
> - gem_require_ring(fd, e->exec_id | e->flags);
> - igt_assert_eq(exec(fd, e->exec_id | e->flags), -ENOENT);
> - }
> - }
> -}
> diff --git a/tests/gem_ctx_exec.c b/tests/gem_ctx_exec.c
> index 1f8ed64d4bd3..b35ec9f64775 100644
> --- a/tests/gem_ctx_exec.c
> +++ b/tests/gem_ctx_exec.c
> @@ -142,6 +142,19 @@ static void big_exec(int fd, uint32_t handle, int ring)
> gem_sync(fd, handle);
> }
>
> +static void invalid_context(int fd, unsigned ring)
> +{
> + struct drm_i915_gem_exec_object2 obj = { };
> + struct drm_i915_gem_execbuffer2 execbuf = {
> + .buffers_ptr = to_user_pointer(&obj),
> + .buffer_count = 1,
.flags = ring
> + };
> +
> + i915_execbuffer2_set_context_id(execbuf, 1);
BLEUGH.
> +
> + igt_assert_eq(__gem_execbuf(fd, &execbuf), -ENOENT);
That doesn't prove we rejected the context as ENOENT could equally be
for the non-existent obj.
I typically use -1 for the invalid context when using this in production
code, so a little more variety is in order :)
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [igt-dev] [PATH i-g-t 1/2] tests/gem_ctx_bad_exec: Consolidate to gem_ctx_exec
@ 2018-09-07 9:39 ` Chris Wilson
0 siblings, 0 replies; 9+ messages in thread
From: Chris Wilson @ 2018-09-07 9:39 UTC (permalink / raw)
To: Tvrtko Ursulin, igt-dev; +Cc: Intel-gfx
Quoting Tvrtko Ursulin (2018-09-07 10:30:07)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> Move a really small test that invalid context is rejected under the
> gem_ctx_exec umbrella.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> ---
> tests/Makefile.sources | 1 -
> tests/gem_ctx_bad_exec.c | 60 ----------------------------------------
> tests/gem_ctx_exec.c | 22 +++++++++++++++
> tests/meson.build | 1 -
> 4 files changed, 22 insertions(+), 62 deletions(-)
> delete mode 100644 tests/gem_ctx_bad_exec.c
>
> diff --git a/tests/Makefile.sources b/tests/Makefile.sources
> index f8f2c8d67d72..6765143bf344 100644
> --- a/tests/Makefile.sources
> +++ b/tests/Makefile.sources
> @@ -51,7 +51,6 @@ TESTS_progs = \
> gem_cs_prefetch \
> gem_cs_tlb \
> gem_ctx_bad_destroy \
> - gem_ctx_bad_exec \
> gem_ctx_create \
> gem_ctx_exec \
> gem_ctx_isolation \
> diff --git a/tests/gem_ctx_bad_exec.c b/tests/gem_ctx_bad_exec.c
> deleted file mode 100644
> index e3ccc5be46a0..000000000000
> --- a/tests/gem_ctx_bad_exec.c
> +++ /dev/null
> @@ -1,60 +0,0 @@
> -/*
> - * Copyright © 2012 Intel Corporation
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a
> - * copy of this software and associated documentation files (the "Software"),
> - * to deal in the Software without restriction, including without limitation
> - * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> - * and/or sell copies of the Software, and to permit persons to whom the
> - * Software is furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice (including the next
> - * paragraph) shall be included in all copies or substantial portions of the
> - * Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> - * IN THE SOFTWARE.
> - *
> - */
> -
> -#include "igt.h"
> -
> -IGT_TEST_DESCRIPTION("Test that context cannot be submitted to any ring");
> -
> -static int exec(int fd, unsigned ring)
> -{
> - struct drm_i915_gem_execbuffer2 execbuf;
> - struct drm_i915_gem_exec_object2 obj;
> -
> - memset(&obj, 0, sizeof(obj));
> - memset(&execbuf, 0, sizeof(execbuf));
> -
> - execbuf.buffers_ptr = to_user_pointer(&obj);
> - execbuf.buffer_count = 1;
> - i915_execbuffer2_set_context_id(execbuf, 1);
> -
> - return __gem_execbuf(fd, &execbuf);
> -}
> -
> -igt_main
> -{
> - const struct intel_execution_engine *e;
> - int fd = -1;
> -
> - igt_skip_on_simulation();
> -
> - igt_fixture
> - fd = drm_open_driver_render(DRIVER_INTEL);
> -
> - for (e = intel_execution_engines; e->name; e++) {
> - igt_subtest_f("%s", e->name) {
> - gem_require_ring(fd, e->exec_id | e->flags);
> - igt_assert_eq(exec(fd, e->exec_id | e->flags), -ENOENT);
> - }
> - }
> -}
> diff --git a/tests/gem_ctx_exec.c b/tests/gem_ctx_exec.c
> index 1f8ed64d4bd3..b35ec9f64775 100644
> --- a/tests/gem_ctx_exec.c
> +++ b/tests/gem_ctx_exec.c
> @@ -142,6 +142,19 @@ static void big_exec(int fd, uint32_t handle, int ring)
> gem_sync(fd, handle);
> }
>
> +static void invalid_context(int fd, unsigned ring)
> +{
> + struct drm_i915_gem_exec_object2 obj = { };
> + struct drm_i915_gem_execbuffer2 execbuf = {
> + .buffers_ptr = to_user_pointer(&obj),
> + .buffer_count = 1,
.flags = ring
> + };
> +
> + i915_execbuffer2_set_context_id(execbuf, 1);
BLEUGH.
> +
> + igt_assert_eq(__gem_execbuf(fd, &execbuf), -ENOENT);
That doesn't prove we rejected the context as ENOENT could equally be
for the non-existent obj.
I typically use -1 for the invalid context when using this in production
code, so a little more variety is in order :)
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [igt-dev] [PATH i-g-t 2/2] tests/gem_ctx_exec: Move lrc-lite-restore to gem_ctx_switch
2018-09-07 9:30 ` [igt-dev] " Tvrtko Ursulin
@ 2018-09-07 9:39 ` Chris Wilson
-1 siblings, 0 replies; 9+ messages in thread
From: Chris Wilson @ 2018-09-07 9:39 UTC (permalink / raw)
To: Tvrtko Ursulin, igt-dev; +Cc: Intel-gfx
Quoting Tvrtko Ursulin (2018-09-07 10:30:08)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> New home is more appropriate for this test.
Just delete it.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [igt-dev] [PATH i-g-t 2/2] tests/gem_ctx_exec: Move lrc-lite-restore to gem_ctx_switch
@ 2018-09-07 9:39 ` Chris Wilson
0 siblings, 0 replies; 9+ messages in thread
From: Chris Wilson @ 2018-09-07 9:39 UTC (permalink / raw)
To: Tvrtko Ursulin, igt-dev; +Cc: Intel-gfx, Tvrtko Ursulin
Quoting Tvrtko Ursulin (2018-09-07 10:30:08)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> New home is more appropriate for this test.
Just delete it.
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 9+ messages in thread
* [igt-dev] ✗ Fi.CI.BAT: failure for series starting with [PATH,i-g-t,1/2] tests/gem_ctx_bad_exec: Consolidate to gem_ctx_exec
2018-09-07 9:30 ` [igt-dev] " Tvrtko Ursulin
` (2 preceding siblings ...)
(?)
@ 2018-09-07 10:16 ` Patchwork
-1 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2018-09-07 10:16 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: igt-dev
== Series Details ==
Series: series starting with [PATH,i-g-t,1/2] tests/gem_ctx_bad_exec: Consolidate to gem_ctx_exec
URL : https://patchwork.freedesktop.org/series/49333/
State : failure
== Summary ==
= CI Bug Log - changes from CI_DRM_4782 -> IGTPW_1810 =
== Summary - FAILURE ==
Serious unknown changes coming with IGTPW_1810 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_1810, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/49333/revisions/1/mbox/
== Possible new issues ==
Here are the unknown changes that may have been introduced in IGTPW_1810:
=== IGT changes ===
==== Possible regressions ====
igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
fi-icl-u: PASS -> INCOMPLETE
== Known issues ==
Here are the changes found in IGTPW_1810 that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@debugfs_test@read_all_entries:
fi-snb-2520m: PASS -> INCOMPLETE (fdo#103713)
igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
fi-byt-clapper: PASS -> FAIL (fdo#103191, fdo#107362)
igt@kms_psr@primary_page_flip:
fi-skl-6600u: PASS -> FAIL (fdo#107336)
fi-kbl-r: PASS -> FAIL (fdo#107336)
igt@prime_vgem@basic-fence-flip:
fi-ilk-650: PASS -> FAIL (fdo#104008)
==== Possible fixes ====
igt@amdgpu/amd_cs_nop@sync-fork-gfx0:
fi-kbl-8809g: DMESG-WARN (fdo#107762) -> PASS
igt@kms_psr@primary_page_flip:
fi-kbl-7560u: FAIL (fdo#107336) -> PASS
==== Warnings ====
igt@amdgpu/amd_prime@amd-to-i915:
fi-kbl-8809g: DMESG-FAIL (fdo#107762) -> FAIL (fdo#107341)
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
fdo#104008 https://bugs.freedesktop.org/show_bug.cgi?id=104008
fdo#107336 https://bugs.freedesktop.org/show_bug.cgi?id=107336
fdo#107341 https://bugs.freedesktop.org/show_bug.cgi?id=107341
fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362
fdo#107762 https://bugs.freedesktop.org/show_bug.cgi?id=107762
== Participating hosts (52 -> 48) ==
Additional (2): fi-byt-j1900 fi-gdg-551
Missing (6): fi-ilk-m540 fi-hsw-4200u fi-hsw-peppy fi-byt-squawks fi-bsw-cyan fi-ctg-p8600
== Build changes ==
* IGT: IGT_4632 -> IGTPW_1810
CI_DRM_4782: 60edf94611d2374821fbe2a824cebcb425ce7b0d @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_1810: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1810/
IGT_4632: 94b4e204473a7d9f49e536c8877a4a5636e0d1b2 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Testlist changes ==
+igt@gem_ctx_exec@invalid-context-blt
+igt@gem_ctx_exec@invalid-context-bsd
+igt@gem_ctx_exec@invalid-context-bsd1
+igt@gem_ctx_exec@invalid-context-bsd2
+igt@gem_ctx_exec@invalid-context-default
+igt@gem_ctx_exec@invalid-context-render
+igt@gem_ctx_exec@invalid-context-vebox
+igt@gem_ctx_switch@lrc-lite-restore
-igt@gem_ctx_bad_exec@blt
-igt@gem_ctx_bad_exec@bsd
-igt@gem_ctx_bad_exec@bsd1
-igt@gem_ctx_bad_exec@bsd2
-igt@gem_ctx_bad_exec@default
-igt@gem_ctx_bad_exec@render
-igt@gem_ctx_bad_exec@vebox
-igt@gem_ctx_exec@lrc-lite-restore
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1810/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2018-09-07 10:16 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-07 9:30 [PATH i-g-t 1/2] tests/gem_ctx_bad_exec: Consolidate to gem_ctx_exec Tvrtko Ursulin
2018-09-07 9:30 ` [igt-dev] " Tvrtko Ursulin
2018-09-07 9:30 ` [PATH i-g-t 2/2] tests/gem_ctx_exec: Move lrc-lite-restore to gem_ctx_switch Tvrtko Ursulin
2018-09-07 9:30 ` [igt-dev] " Tvrtko Ursulin
2018-09-07 9:39 ` Chris Wilson
2018-09-07 9:39 ` Chris Wilson
2018-09-07 9:39 ` [igt-dev] [PATH i-g-t 1/2] tests/gem_ctx_bad_exec: Consolidate to gem_ctx_exec Chris Wilson
2018-09-07 9:39 ` [Intel-gfx] " Chris Wilson
2018-09-07 10:16 ` [igt-dev] ✗ Fi.CI.BAT: failure for series starting with [PATH,i-g-t,1/2] " Patchwork
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.