* [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork
@ 2018-02-21 23:19 Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 02/11] lib/igt_gt: add intel_measure_ring_size Antonio Argenziano
` (19 more replies)
0 siblings, 20 replies; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-21 23:19 UTC (permalink / raw)
To: igt-dev
From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
The "cork" bo (imported bo with attached fence) and fence is used in several
tests to stall execution. Moving it to a common place makes the codebase
cleaner.
Note that the actual test updates is done in follow up patches as it is
simpler to do in one go after one more common function is added in the
next patch.
v2: don't use new/free naming, don't use dynamic alloc (Chris)
v3: add sw_sync common functions. (Chris)
v4: squash sw_sync and vgem cork structs into one. (Chris)
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Antonio Argenziano <antonio.argenziano@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
---
lib/igt_dummyload.c | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++
lib/igt_dummyload.h | 32 ++++++++++++++
2 files changed, 153 insertions(+)
diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c
index 27eb402b..e90eff5f 100644
--- a/lib/igt_dummyload.c
+++ b/lib/igt_dummyload.c
@@ -29,12 +29,14 @@
#include <i915_drm.h>
#include "igt_core.h"
+#include "drmtest.h"
#include "igt_dummyload.h"
#include "igt_gt.h"
#include "intel_chipset.h"
#include "intel_reg.h"
#include "ioctl_wrappers.h"
#include "sw_sync.h"
+#include "igt_vgem.h"
/**
* SECTION:igt_dummyload
@@ -371,3 +373,122 @@ void igt_terminate_spin_batches(void)
igt_spin_batch_end(iter);
pthread_mutex_unlock(&list_lock);
}
+
+static uint32_t plug_vgem_handle(struct igt_cork *cork, int fd)
+{
+ struct vgem_bo bo;
+ int dmabuf;
+ uint32_t handle;
+ struct igt_cork_vgem *vgem_cork = &cork->cork.vgem;
+
+ vgem_cork->device = drm_open_driver(DRIVER_VGEM);
+ igt_require(vgem_has_fences(vgem_cork->device));
+
+ bo.width = bo.height = 1;
+ bo.bpp = 4;
+ vgem_create(vgem_cork->device, &bo);
+ vgem_cork->fence = vgem_fence_attach(vgem_cork->device, &bo, VGEM_FENCE_WRITE);
+
+ dmabuf = prime_handle_to_fd(vgem_cork->device, bo.handle);
+ handle = prime_fd_to_handle(fd, dmabuf);
+ close(dmabuf);
+
+ return handle;
+}
+
+static void unplug_vgem_handle(struct igt_cork *cork)
+{
+ struct igt_cork_vgem *vgem_cork = &cork->cork.vgem;
+
+ igt_assert(vgem_cork->device);
+
+ vgem_fence_signal(vgem_cork->device, vgem_cork->fence);
+ close(vgem_cork->device);
+ vgem_cork->device = -1;
+}
+
+static uint32_t plug_sync_fd(struct igt_cork *cork)
+{
+ int fence;
+ struct igt_cork_sw_sync *sw_sync_cork = &cork->cork.sw_sync;
+
+ igt_require_sw_sync();
+
+ sw_sync_cork->timeline = sw_sync_timeline_create();
+ fence = sw_sync_timeline_create_fence(sw_sync_cork->timeline, 1);
+
+ return fence;
+}
+
+static void unplug_sync_fd(struct igt_cork *cork)
+{
+ struct igt_cork_sw_sync *sw_sync_cork = &cork->cork.sw_sync;
+
+ sw_sync_timeline_inc(sw_sync_cork->timeline, 1);
+ close(sw_sync_cork->timeline);
+}
+
+/**
+ * igt_cork_plug:
+ * @fd: open drm file descriptor
+ * @method: method to utilize for corking.
+ * @cork: structure that will be filled with the state of the cork bo.
+ * Note: this has to match the corking method.
+ *
+ * This function provides a mechanism to stall submission. It provides two
+ * blocking methods:
+ *
+ * VGEM_BO.
+ * Imports a vgem bo with a fence attached to it. This bo can be used as a
+ * dependency during submission to stall execution until the fence is signaled.
+ *
+ * SW_SYNC:
+ * Creates a timeline and then a fence on that timeline. The fence can be used
+ * as an input fence to a request, the request will be stalled until the fence
+ * is signaled.
+ *
+ * The parameters required to unblock the execution and to cleanup are stored in
+ * the provided cork structure.
+ *
+ * Returns:
+ * Handle of the imported BO / Sw sync fence FD.
+ */
+uint32_t igt_cork_plug(struct igt_cork *cork, int fd)
+{
+ igt_assert(cork->cork.fd == -1);
+
+ switch (cork->type) {
+ case CORK_SYNC_FD:
+ return plug_sync_fd(cork);
+
+ case CORK_VGEM_HANDLE:
+ return plug_vgem_handle(cork, fd);
+
+ default:
+ igt_assert_f(0, "Invalid cork type!\n");
+ return 0;
+ }
+}
+
+/**
+ * igt_cork_unplug:
+ * @method: method to utilize for corking.
+ * @cork: cork state from igt_cork_plug()
+ *
+ * This function unblocks the execution by signaling the fence attached to the
+ * imported bo and does the necessary post-processing.
+ *
+ * NOTE: the handle returned by igt_cork_plug is not closed during this phase.
+ */
+void igt_cork_unplug(struct igt_cork *cork)
+{
+ switch (cork->type) {
+ case CORK_SYNC_FD:
+ unplug_sync_fd(cork);
+ return;
+
+ case CORK_VGEM_HANDLE:
+ unplug_vgem_handle(cork);
+ return;
+ }
+}
diff --git a/lib/igt_dummyload.h b/lib/igt_dummyload.h
index ffa7e351..c70d0093 100644
--- a/lib/igt_dummyload.h
+++ b/lib/igt_dummyload.h
@@ -61,4 +61,36 @@ void igt_spin_batch_free(int fd, igt_spin_t *spin);
void igt_terminate_spin_batches(void);
+enum igt_cork_type {
+ CORK_SYNC_FD = 1,
+ CORK_VGEM_HANDLE
+};
+
+struct igt_cork_vgem {
+ int device;
+ uint32_t fence;
+};
+
+struct igt_cork_sw_sync {
+ int timeline;
+};
+
+struct igt_cork {
+ enum igt_cork_type type;
+
+ union __cork {
+ int fd;
+
+ struct igt_cork_vgem vgem;
+ struct igt_cork_sw_sync sw_sync;
+ } cork;
+};
+
+#define IGT_CORK(name, cork_type) struct igt_cork name = { .type = cork_type, .cork.fd = -1}
+#define IGT_CORK_HANDLE(name) IGT_CORK(name, CORK_VGEM_HANDLE)
+#define IGT_CORK_FENCE(name) IGT_CORK(name, CORK_SYNC_FD)
+
+uint32_t igt_cork_plug(struct igt_cork *cork, int fd);
+void igt_cork_unplug(struct igt_cork *cork);
+
#endif /* __IGT_DUMMYLOAD_H__ */
--
2.14.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [igt-dev] [PATCH i-g-t v4 02/11] lib/igt_gt: add intel_measure_ring_size
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
@ 2018-02-21 23:19 ` Antonio Argenziano
2018-02-23 9:29 ` Chris Wilson
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 03/11] tests/gem_exec_schedule: use new common functions Antonio Argenziano
` (18 subsequent siblings)
19 siblings, 1 reply; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-21 23:19 UTC (permalink / raw)
To: igt-dev
From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
The logic to measure the ring size is replicated almost identically in
several tests. Adding it as a common function will make the code
cleaner.
The tests are updated in follow up patches.
v2:
- Move into a new file: 'gem_ring'. (Chris)
v3:
- Rename ring measure function. (Chris)
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Antonio Argenziano <antonio.argenziano@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
lib/Makefile.sources | 2 +
lib/i915/gem_ring.c | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++
lib/i915/gem_ring.h | 36 ++++++++++++++++
lib/meson.build | 2 +
4 files changed, 157 insertions(+)
create mode 100644 lib/i915/gem_ring.c
create mode 100644 lib/i915/gem_ring.h
diff --git a/lib/Makefile.sources b/lib/Makefile.sources
index 86fbfeef..5b13ef88 100644
--- a/lib/Makefile.sources
+++ b/lib/Makefile.sources
@@ -9,6 +9,8 @@ lib_source_list = \
i915/gem_scheduler.h \
i915/gem_submission.c \
i915/gem_submission.h \
+ i915/gem_ring.h \
+ i915/gem_ring.c \
i915_3d.h \
i915_reg.h \
i915_pciids.h \
diff --git a/lib/i915/gem_ring.c b/lib/i915/gem_ring.c
new file mode 100644
index 00000000..7326673a
--- /dev/null
+++ b/lib/i915/gem_ring.c
@@ -0,0 +1,117 @@
+/*
+ * Copyright © 2014 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 "gem_ring.h"
+
+#include <signal.h>
+#include <sys/ioctl.h>
+
+#include "intel_reg.h"
+#include "drmtest.h"
+#include "ioctl_wrappers.h"
+#include "igt_dummyload.h"
+
+static void alarm_handler(int sig)
+{
+}
+
+/**
+ * gem_measure_ring_inflight:
+ * @fd: open i915 drm file descriptor
+ * @engine: execbuf engine flag
+ * @flags: flags to affect measurement:
+ * - MEASURE_RING_NEW_CTX: use a new context to account for the space
+ * used by the lrc init.
+ *
+ * This function calculates the maximum number of batches that can be inserted
+ * at the same time in the ring on the selected engine.
+ *
+ * Returns:
+ * Number of batches that fit in the ring
+ */
+unsigned int
+gem_measure_ring_inflight(int fd, unsigned int engine, enum measure_ring_flags flags)
+{
+ struct sigaction old_sa, sa = { .sa_handler = alarm_handler };
+ struct drm_i915_gem_exec_object2 obj[2];
+ struct drm_i915_gem_execbuffer2 execbuf;
+ const uint32_t bbe = MI_BATCH_BUFFER_END;
+ unsigned int count, last;
+ struct itimerval itv;
+ IGT_CORK_HANDLE(cork);
+
+ memset(obj, 0, sizeof(obj));
+ obj[1].handle = gem_create(fd, 4096);
+ gem_write(fd, obj[1].handle, 0, &bbe, sizeof(bbe));
+
+ memset(&execbuf, 0, sizeof(execbuf));
+ execbuf.buffers_ptr = to_user_pointer(&obj[1]);
+ execbuf.buffer_count = 1;
+ execbuf.flags = engine;
+ gem_execbuf(fd, &execbuf);
+ gem_sync(fd, obj[1].handle);
+
+ obj[0].handle = igt_cork_plug(&cork, fd);
+
+ execbuf.buffers_ptr = to_user_pointer(obj);
+ execbuf.buffer_count = 2;
+
+ if (flags & MEASURE_RING_NEW_CTX)
+ execbuf.rsvd1 = gem_context_create(fd);
+
+ sigaction(SIGALRM, &sa, &old_sa);
+ itv.it_interval.tv_sec = 0;
+ itv.it_interval.tv_usec = 100;
+ itv.it_value.tv_sec = 0;
+ itv.it_value.tv_usec = 1000;
+ setitimer(ITIMER_REAL, &itv, NULL);
+
+ last = -1;
+ count = 0;
+ do {
+ if (ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf) == 0) {
+ count++;
+ continue;
+ }
+
+ if (last == count)
+ break;
+
+ last = count;
+ } while (1);
+
+ memset(&itv, 0, sizeof(itv));
+ setitimer(ITIMER_REAL, &itv, NULL);
+ sigaction(SIGALRM, &old_sa, NULL);
+
+ igt_cork_unplug(&cork);
+ gem_close(fd, obj[0].handle);
+ gem_close(fd, obj[1].handle);
+
+ if (flags & MEASURE_RING_NEW_CTX)
+ gem_context_destroy(fd, execbuf.rsvd1);
+
+ gem_quiescent_gpu(fd);
+
+ return count;
+}
diff --git a/lib/i915/gem_ring.h b/lib/i915/gem_ring.h
new file mode 100644
index 00000000..c69adce0
--- /dev/null
+++ b/lib/i915/gem_ring.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright © 2014 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.
+ */
+
+#ifndef GEM_RING_H
+#define GEM_RING_H
+
+#include <stdbool.h>
+
+enum measure_ring_flags {
+ MEASURE_RING_NEW_CTX = 1
+};
+
+unsigned int
+gem_measure_ring_inflight(int fd, unsigned int engine, enum measure_ring_flags flags);
+
+#endif /* GEM_RING_H */
diff --git a/lib/meson.build b/lib/meson.build
index 94ea0799..6c77e407 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -5,6 +5,7 @@ lib_headers = [
'i915/gem_context.h',
'i915/gem_scheduler.h',
'i915/gem_submission.h',
+ 'i915/gem_ring.h',
'i915_3d.h',
'i915_reg.h',
'i915_pciids.h',
@@ -57,6 +58,7 @@ lib_sources = [
'i915/gem_context.c',
'i915/gem_scheduler.c',
'i915/gem_submission.c',
+ 'i915/gem_ring.c',
'igt_debugfs.c',
'igt_device.c',
'igt_aux.c',
--
2.14.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [igt-dev] [PATCH i-g-t v4 03/11] tests/gem_exec_schedule: use new common functions
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 02/11] lib/igt_gt: add intel_measure_ring_size Antonio Argenziano
@ 2018-02-21 23:19 ` Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 04/11] tests/gem_exec_fence: " Antonio Argenziano
` (17 subsequent siblings)
19 siblings, 0 replies; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-21 23:19 UTC (permalink / raw)
To: igt-dev
From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
With intel_measure_ring_size and igt_cork added as common utilities we
can use them instead of the local copy of those utilities
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
tests/gem_exec_schedule.c | 162 ++++++++++++----------------------------------
1 file changed, 41 insertions(+), 121 deletions(-)
diff --git a/tests/gem_exec_schedule.c b/tests/gem_exec_schedule.c
index 5f24df33..94a80ecd 100644
--- a/tests/gem_exec_schedule.c
+++ b/tests/gem_exec_schedule.c
@@ -32,6 +32,7 @@
#include "igt_vgem.h"
#include "igt_rand.h"
#include "igt_sysfs.h"
+#include "i915/gem_ring.h"
#define LO 0
#define HI 1
@@ -102,35 +103,6 @@ static void store_dword(int fd, uint32_t ctx, unsigned ring,
gem_close(fd, obj[2].handle);
}
-struct cork {
- int device;
- uint32_t handle;
- uint32_t fence;
-};
-
-static void plug(int fd, struct cork *c)
-{
- struct vgem_bo bo;
- int dmabuf;
-
- c->device = drm_open_driver(DRIVER_VGEM);
-
- bo.width = bo.height = 1;
- bo.bpp = 4;
- vgem_create(c->device, &bo);
- c->fence = vgem_fence_attach(c->device, &bo, VGEM_FENCE_WRITE);
-
- dmabuf = prime_handle_to_fd(c->device, bo.handle);
- c->handle = prime_fd_to_handle(fd, dmabuf);
- close(dmabuf);
-}
-
-static void unplug(struct cork *c)
-{
- vgem_fence_signal(c->device, c->fence);
- close(c->device);
-}
-
static uint32_t create_highest_priority(int fd)
{
uint32_t ctx = gem_context_create(fd);
@@ -145,7 +117,7 @@ static uint32_t create_highest_priority(int fd)
return ctx;
}
-static void unplug_show_queue(int fd, struct cork *c, unsigned int engine)
+static void unplug_show_queue(int fd, struct igt_cork *c, unsigned int engine)
{
igt_spin_t *spin[MAX_ELSP_QLEN];
@@ -155,7 +127,7 @@ static void unplug_show_queue(int fd, struct cork *c, unsigned int engine)
gem_context_destroy(fd, ctx);
}
- unplug(c); /* batches will now be queued on the engine */
+ igt_cork_unplug(c); /* batches will now be queued on the engine */
igt_debugfs_dump(fd, "i915_engine_info");
for (int n = 0; n < ARRAY_SIZE(spin); n++)
@@ -165,19 +137,20 @@ static void unplug_show_queue(int fd, struct cork *c, unsigned int engine)
static void fifo(int fd, unsigned ring)
{
- struct cork cork;
- uint32_t scratch;
+ IGT_CORK_HANDLE(cork);
+ uint32_t scratch, plug;
uint32_t *ptr;
scratch = gem_create(fd, 4096);
- plug(fd, &cork);
+ plug = igt_cork_plug(&cork, fd);
/* Same priority, same timeline, final result will be the second eb */
- store_dword(fd, 0, ring, scratch, 0, 1, cork.handle, 0);
- store_dword(fd, 0, ring, scratch, 0, 2, cork.handle, 0);
+ store_dword(fd, 0, ring, scratch, 0, 1, plug, 0);
+ store_dword(fd, 0, ring, scratch, 0, 2, plug, 0);
unplug_show_queue(fd, &cork, ring);
+ gem_close(fd, plug);
ptr = gem_mmap__gtt(fd, scratch, 4096, PROT_READ);
gem_set_domain(fd, scratch, /* no write hazard lies! */
@@ -269,8 +242,8 @@ static void smoketest(int fd, unsigned ring, unsigned timeout)
static void reorder(int fd, unsigned ring, unsigned flags)
#define EQUAL 1
{
- struct cork cork;
- uint32_t scratch;
+ IGT_CORK_HANDLE(cork);
+ uint32_t scratch, plug;
uint32_t *ptr;
uint32_t ctx[2];
@@ -281,15 +254,16 @@ static void reorder(int fd, unsigned ring, unsigned flags)
gem_context_set_priority(fd, ctx[HI], flags & EQUAL ? MIN_PRIO : 0);
scratch = gem_create(fd, 4096);
- plug(fd, &cork);
+ plug = igt_cork_plug(&cork, fd);
/* We expect the high priority context to be executed first, and
* so the final result will be value from the low priority context.
*/
- store_dword(fd, ctx[LO], ring, scratch, 0, ctx[LO], cork.handle, 0);
- store_dword(fd, ctx[HI], ring, scratch, 0, ctx[HI], cork.handle, 0);
+ store_dword(fd, ctx[LO], ring, scratch, 0, ctx[LO], plug, 0);
+ store_dword(fd, ctx[HI], ring, scratch, 0, ctx[HI], plug, 0);
unplug_show_queue(fd, &cork, ring);
+ gem_close(fd, plug);
gem_context_destroy(fd, ctx[LO]);
gem_context_destroy(fd, ctx[HI]);
@@ -308,10 +282,11 @@ static void reorder(int fd, unsigned ring, unsigned flags)
static void promotion(int fd, unsigned ring)
{
- struct cork cork;
+ IGT_CORK_HANDLE(cork);
uint32_t result, dep;
uint32_t *ptr;
uint32_t ctx[3];
+ uint32_t plug;
ctx[LO] = gem_context_create(fd);
gem_context_set_priority(fd, ctx[LO], MIN_PRIO);
@@ -325,15 +300,15 @@ static void promotion(int fd, unsigned ring)
result = gem_create(fd, 4096);
dep = gem_create(fd, 4096);
- plug(fd, &cork);
+ plug = igt_cork_plug(&cork, fd);
/* Expect that HI promotes LO, so the order will be LO, HI, NOISE.
*
* fifo would be NOISE, LO, HI.
* strict priority would be HI, NOISE, LO
*/
- store_dword(fd, ctx[NOISE], ring, result, 0, ctx[NOISE], cork.handle, 0);
- store_dword(fd, ctx[LO], ring, result, 0, ctx[LO], cork.handle, 0);
+ store_dword(fd, ctx[NOISE], ring, result, 0, ctx[NOISE], plug, 0);
+ store_dword(fd, ctx[LO], ring, result, 0, ctx[LO], plug, 0);
/* link LO <-> HI via a dependency on another buffer */
store_dword(fd, ctx[LO], ring, dep, 0, ctx[LO], 0, I915_GEM_DOMAIN_INSTRUCTION);
@@ -342,6 +317,7 @@ static void promotion(int fd, unsigned ring)
store_dword(fd, ctx[HI], ring, result, 0, ctx[HI], 0, 0);
unplug_show_queue(fd, &cork, ring);
+ gem_close(fd, plug);
gem_context_destroy(fd, ctx[NOISE]);
gem_context_destroy(fd, ctx[LO]);
@@ -565,7 +541,8 @@ static void deep(int fd, unsigned ring)
const unsigned int nreq = MAX_PRIO - MIN_PRIO;
const unsigned size = ALIGN(4*nreq, 4096);
struct timespec tv = {};
- struct cork cork;
+ IGT_CORK_HANDLE(cork);
+ uint32_t plug;
uint32_t result, dep[XS];
uint32_t expected = 0;
uint32_t *ptr;
@@ -605,7 +582,7 @@ static void deep(int fd, unsigned ring)
gem_sync(fd, result);
}
- plug(fd, &cork);
+ plug = igt_cork_plug(&cork, fd);
/* Create a deep dependency chain, with a few branches */
for (int n = 0; n < nreq && igt_seconds_elapsed(&tv) < 8; n++) {
@@ -613,7 +590,7 @@ static void deep(int fd, unsigned ring)
gem_context_set_priority(fd, context, MAX_PRIO - nreq + n);
for (int m = 0; m < XS; m++)
- store_dword(fd, context, ring, dep[m], 4*n, context, cork.handle, I915_GEM_DOMAIN_INSTRUCTION);
+ store_dword(fd, context, ring, dep[m], 4*n, context, plug, I915_GEM_DOMAIN_INSTRUCTION);
}
for (int n = 0; n < nreq && igt_seconds_elapsed(&tv) < 6; n++) {
@@ -628,6 +605,7 @@ static void deep(int fd, unsigned ring)
}
unplug_show_queue(fd, &cork, ring);
+ gem_close(fd, plug);
igt_require(expected); /* too slow */
for (int n = 0; n < MAX_CONTEXTS; n++)
@@ -670,71 +648,13 @@ static int __execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
return err;
}
-static unsigned int measure_ring_size(int fd, unsigned int ring)
-{
- struct sigaction sa = { .sa_handler = alarm_handler };
- struct drm_i915_gem_exec_object2 obj[2];
- struct drm_i915_gem_execbuffer2 execbuf;
- const uint32_t bbe = MI_BATCH_BUFFER_END;
- unsigned int count, last;
- struct itimerval itv;
- struct cork c;
-
- memset(obj, 0, sizeof(obj));
- obj[1].handle = gem_create(fd, 4096);
- gem_write(fd, obj[1].handle, 0, &bbe, sizeof(bbe));
-
- memset(&execbuf, 0, sizeof(execbuf));
- execbuf.buffers_ptr = to_user_pointer(obj + 1);
- execbuf.buffer_count = 1;
- execbuf.flags = ring;
- gem_execbuf(fd, &execbuf);
- gem_sync(fd, obj[1].handle);
-
- plug(fd, &c);
- obj[0].handle = c.handle;
-
- execbuf.buffers_ptr = to_user_pointer(obj);
- execbuf.buffer_count = 2;
- execbuf.rsvd1 = gem_context_create(fd);
-
- sigaction(SIGALRM, &sa, NULL);
- itv.it_interval.tv_sec = 0;
- itv.it_interval.tv_usec = 100;
- itv.it_value.tv_sec = 0;
- itv.it_value.tv_usec = 1000;
- setitimer(ITIMER_REAL, &itv, NULL);
-
- last = -1;
- count = 0;
- do {
- if (__execbuf(fd, &execbuf) == 0) {
- count++;
- continue;
- }
-
- if (last == count)
- break;
-
- last = count;
- } while (1);
-
- memset(&itv, 0, sizeof(itv));
- setitimer(ITIMER_REAL, &itv, NULL);
-
- unplug(&c);
- gem_close(fd, obj[1].handle);
- gem_context_destroy(fd, execbuf.rsvd1);
-
- return count;
-}
-
static void wide(int fd, unsigned ring)
{
struct timespec tv = {};
- unsigned int ring_size = measure_ring_size(fd, ring);
+ unsigned int ring_size = gem_measure_ring_inflight(fd, ring, MEASURE_RING_NEW_CTX);
- struct cork cork;
+ IGT_CORK_HANDLE(cork);
+ uint32_t plug;
uint32_t result;
uint32_t *ptr;
uint32_t *ctx;
@@ -746,20 +666,21 @@ static void wide(int fd, unsigned ring)
result = gem_create(fd, 4*MAX_CONTEXTS);
- plug(fd, &cork);
+ plug = igt_cork_plug(&cork, fd);
/* Lots of in-order requests, plugged and submitted simultaneously */
for (count = 0;
igt_seconds_elapsed(&tv) < 5 && count < ring_size;
count++) {
for (int n = 0; n < MAX_CONTEXTS; n++) {
- store_dword(fd, ctx[n], ring, result, 4*n, ctx[n], cork.handle, I915_GEM_DOMAIN_INSTRUCTION);
+ store_dword(fd, ctx[n], ring, result, 4*n, ctx[n], plug, I915_GEM_DOMAIN_INSTRUCTION);
}
}
igt_info("Submitted %d requests over %d contexts in %.1fms\n",
count, MAX_CONTEXTS, igt_nsec_elapsed(&tv) * 1e-6);
unplug_show_queue(fd, &cork, ring);
+ gem_close(fd, plug);
for (int n = 0; n < MAX_CONTEXTS; n++)
gem_context_destroy(fd, ctx[n]);
@@ -782,21 +703,20 @@ static void reorder_wide(int fd, unsigned ring)
struct drm_i915_gem_exec_object2 obj[3];
struct drm_i915_gem_execbuffer2 execbuf;
struct timespec tv = {};
- unsigned int ring_size = measure_ring_size(fd, ring);
- struct cork cork;
- uint32_t result, target;
+ unsigned int ring_size = gem_measure_ring_inflight(fd, ring, MEASURE_RING_NEW_CTX);
+ IGT_CORK_HANDLE(cork);
+ uint32_t result, target, plug;
uint32_t *found, *expected;
result = gem_create(fd, 4096);
target = gem_create(fd, 4096);
-
- plug(fd, &cork);
+ plug = igt_cork_plug(&cork, fd);
expected = gem_mmap__cpu(fd, target, 0, 4096, PROT_WRITE);
gem_set_domain(fd, target, I915_GEM_DOMAIN_CPU, I915_GEM_DOMAIN_CPU);
memset(obj, 0, sizeof(obj));
- obj[0].handle = cork.handle;
+ obj[0].handle = plug;
obj[1].handle = result;
obj[2].relocs_ptr = to_user_pointer(&reloc);
obj[2].relocation_count = 1;
@@ -864,6 +784,7 @@ static void reorder_wide(int fd, unsigned ring)
}
unplug_show_queue(fd, &cork, ring);
+ gem_close(fd, plug);
found = gem_mmap__gtt(fd, result, 4096, PROT_READ);
gem_set_domain(fd, result, /* no write hazard lies! */
@@ -898,7 +819,7 @@ static void test_pi_ringfull(int fd, unsigned int engine)
struct drm_i915_gem_exec_object2 obj[2];
unsigned int last, count;
struct itimerval itv;
- struct cork c;
+ IGT_CORK_HANDLE(c);
bool *result;
result = mmap(NULL, 4096, PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
@@ -920,8 +841,7 @@ static void test_pi_ringfull(int fd, unsigned int engine)
gem_sync(fd, obj[1].handle);
/* Fill the low-priority ring */
- plug(fd, &c);
- obj[0].handle = c.handle;
+ obj[0].handle = igt_cork_plug(&c, fd);
execbuf.buffers_ptr = to_user_pointer(obj);
execbuf.buffer_count = 2;
@@ -995,7 +915,7 @@ static void test_pi_ringfull(int fd, unsigned int engine)
igt_assert_f(result[2],
"High priority child unable to submit within 10ms\n");
- unplug(&c);
+ igt_cork_unplug(&c);
igt_waitchildren();
gem_context_destroy(fd, execbuf.rsvd1);
--
2.14.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [igt-dev] [PATCH i-g-t v4 04/11] tests/gem_exec_fence: use new common functions
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 02/11] lib/igt_gt: add intel_measure_ring_size Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 03/11] tests/gem_exec_schedule: use new common functions Antonio Argenziano
@ 2018-02-21 23:19 ` Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 05/11] tests/gem_exec_latency: " Antonio Argenziano
` (16 subsequent siblings)
19 siblings, 0 replies; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-21 23:19 UTC (permalink / raw)
To: igt-dev
From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
With intel_measure_ring_size and igt_cork added as common utilities we
can use them instead of the local copy of those utilities
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
tests/gem_exec_fence.c | 107 ++++++-------------------------------------------
1 file changed, 12 insertions(+), 95 deletions(-)
diff --git a/tests/gem_exec_fence.c b/tests/gem_exec_fence.c
index 312505d6..b415199f 100644
--- a/tests/gem_exec_fence.c
+++ b/tests/gem_exec_fence.c
@@ -25,6 +25,7 @@
#include "igt_sysfs.h"
#include "igt_vgem.h"
#include "sw_sync.h"
+#include "i915/gem_ring.h"
#include <sys/ioctl.h>
#include <sys/poll.h>
@@ -321,36 +322,6 @@ static void resubmit(int fd, uint32_t handle, unsigned int ring, int count)
gem_execbuf(fd, &execbuf);
}
-struct cork {
- int device;
- uint32_t handle;
- uint32_t fence;
-};
-
-static void plug(int fd, struct cork *c)
-{
- struct vgem_bo bo;
- int dmabuf;
-
- c->device = drm_open_driver(DRIVER_VGEM);
-
- bo.width = bo.height = 1;
- bo.bpp = 4;
- vgem_create(c->device, &bo);
- c->fence = vgem_fence_attach(c->device, &bo, VGEM_FENCE_WRITE);
-
- dmabuf = prime_handle_to_fd(c->device, bo.handle);
- c->handle = prime_fd_to_handle(fd, dmabuf);
- close(dmabuf);
-}
-
-static void unplug(int fd, struct cork *c)
-{
- vgem_fence_signal(c->device, c->fence);
- gem_close(fd, c->handle);
- close(c->device);
-}
-
static void alarm_handler(int sig)
{
}
@@ -367,62 +338,6 @@ static int __execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
return err;
}
-static unsigned int measure_ring_size(int fd)
-{
- struct sigaction sa = { .sa_handler = alarm_handler };
- struct drm_i915_gem_exec_object2 obj[2];
- struct drm_i915_gem_execbuffer2 execbuf;
- const uint32_t bbe = MI_BATCH_BUFFER_END;
- unsigned int count, last;
- struct itimerval itv;
- struct cork c;
-
- memset(obj, 0, sizeof(obj));
- obj[1].handle = gem_create(fd, 4096);
- gem_write(fd, obj[1].handle, 0, &bbe, sizeof(bbe));
-
- memset(&execbuf, 0, sizeof(execbuf));
- execbuf.buffers_ptr = to_user_pointer(&obj[1]);
- execbuf.buffer_count = 1;
- gem_execbuf(fd, &execbuf);
- gem_sync(fd, obj[1].handle);
-
- plug(fd, &c);
- obj[0].handle = c.handle;
-
- execbuf.buffers_ptr = to_user_pointer(obj);
- execbuf.buffer_count = 2;
-
- sigaction(SIGALRM, &sa, NULL);
- itv.it_interval.tv_sec = 0;
- itv.it_interval.tv_usec = 100;
- itv.it_value.tv_sec = 0;
- itv.it_value.tv_usec = 1000;
- setitimer(ITIMER_REAL, &itv, NULL);
-
- last = -1;
- count = 0;
- do {
- if (__execbuf(fd, &execbuf) == 0) {
- count++;
- continue;
- }
-
- if (last == count)
- break;
-
- last = count;
- } while (1);
-
- memset(&itv, 0, sizeof(itv));
- setitimer(ITIMER_REAL, &itv, NULL);
-
- unplug(fd, &c);
- gem_close(fd, obj[1].handle);
-
- return count;
-}
-
static void test_parallel(int fd, unsigned int master)
{
const int SCRATCH = 0;
@@ -437,15 +352,16 @@ static void test_parallel(int fd, unsigned int master)
uint32_t batch[16];
igt_spin_t *spin;
unsigned engine;
- struct cork c;
+ IGT_CORK_HANDLE(c);
+ uint32_t plug;
int i, x = 0;
- plug(fd, &c);
+ plug = igt_cork_plug(&c, fd);
/* Fill the queue with many requests so that the next one has to
* wait before it can be executed by the hardware.
*/
- spin = igt_spin_batch_new(fd, 0, master, c.handle);
+ spin = igt_spin_batch_new(fd, 0, master, plug);
resubmit(fd, spin->handle, master, 16);
/* Now queue the master request and its secondaries */
@@ -566,7 +482,8 @@ static void test_parallel(int fd, unsigned int master)
}
/* Unblock the master */
- unplug(fd, &c);
+ igt_cork_unplug(&c);
+ gem_close(fd, plug);
igt_spin_batch_end(spin);
/* Wait for all secondaries to complete. If we used a regular fence
@@ -692,7 +609,7 @@ static void test_long_history(int fd, long ring_size, unsigned flags)
unsigned int nengine, n, s;
unsigned long limit;
int all_fences;
- struct cork c;
+ IGT_CORK_HANDLE(c);
limit = -1;
if (!gem_uses_full_ppgtt(fd))
@@ -727,8 +644,7 @@ static void test_long_history(int fd, long ring_size, unsigned flags)
execbuf.buffers_ptr = to_user_pointer(obj);
execbuf.buffer_count = 2;
- plug(fd, &c);
- obj[0].handle = c.handle;
+ obj[0].handle = igt_cork_plug(&c, fd);
igt_until_timeout(5) {
execbuf.rsvd1 = gem_context_create(fd);
@@ -756,7 +672,7 @@ static void test_long_history(int fd, long ring_size, unsigned flags)
if (!--limit)
break;
}
- unplug(fd, &c);
+ igt_cork_unplug(&c);
igt_info("History depth = %d\n", sync_fence_count(all_fences));
@@ -780,6 +696,7 @@ static void test_long_history(int fd, long ring_size, unsigned flags)
gem_sync(fd, obj[1].handle);
gem_close(fd, obj[1].handle);
+ gem_close(fd, obj[0].handle);
}
static void test_fence_flip(int i915)
@@ -1630,7 +1547,7 @@ igt_main
long ring_size = 0;
igt_fixture {
- ring_size = measure_ring_size(i915) - 1;
+ ring_size = gem_measure_ring_inflight(i915, 0, 0) - 1;
igt_info("Ring size: %ld batches\n", ring_size);
igt_require(ring_size);
--
2.14.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [igt-dev] [PATCH i-g-t v4 05/11] tests/gem_exec_latency: use new common functions
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (2 preceding siblings ...)
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 04/11] tests/gem_exec_fence: " Antonio Argenziano
@ 2018-02-21 23:19 ` Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 06/11] tests/gem_wait: use igt_cork Antonio Argenziano
` (15 subsequent siblings)
19 siblings, 0 replies; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-21 23:19 UTC (permalink / raw)
To: igt-dev
From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
With intel_measure_ring_size and igt_cork added as common utilities we
can use them instead of the local copy of those utilities
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
tests/gem_exec_latency.c | 99 +++++++-----------------------------------------
1 file changed, 13 insertions(+), 86 deletions(-)
diff --git a/tests/gem_exec_latency.c b/tests/gem_exec_latency.c
index 74044bf4..909dbbe6 100644
--- a/tests/gem_exec_latency.c
+++ b/tests/gem_exec_latency.c
@@ -41,6 +41,7 @@
#include "igt_sysfs.h"
#include "igt_vgem.h"
+#include "i915/gem_ring.h"
#define LOCAL_I915_EXEC_NO_RELOC (1<<11)
#define LOCAL_I915_EXEC_HANDLE_LUT (1<<12)
@@ -55,83 +56,6 @@
static unsigned int ring_size;
-struct cork {
- int device;
- uint32_t handle;
- uint32_t fence;
-};
-
-static void plug(int fd, struct cork *c)
-{
- struct vgem_bo bo;
- int dmabuf;
-
- c->device = drm_open_driver(DRIVER_VGEM);
-
- bo.width = bo.height = 1;
- bo.bpp = 4;
- vgem_create(c->device, &bo);
- c->fence = vgem_fence_attach(c->device, &bo, VGEM_FENCE_WRITE);
-
- dmabuf = prime_handle_to_fd(c->device, bo.handle);
- c->handle = prime_fd_to_handle(fd, dmabuf);
- close(dmabuf);
-}
-
-static void unplug(struct cork *c)
-{
- vgem_fence_signal(c->device, c->fence);
- close(c->device);
-}
-
-static void alarm_handler(int sig)
-{
-}
-
-static void set_timeout(int seconds)
-{
- struct sigaction sa = { .sa_handler = alarm_handler };
-
- sigaction(SIGALRM, seconds ? &sa : NULL, NULL);
- alarm(seconds);
-}
-
-static int __execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- return ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf);
-}
-
-static unsigned int measure_ring_size(int fd)
-{
- struct drm_i915_gem_exec_object2 obj[2];
- struct drm_i915_gem_execbuffer2 execbuf;
- const uint32_t bbe = MI_BATCH_BUFFER_END;
- unsigned int count;
- struct cork c;
-
- memset(obj, 0, sizeof(obj));
- obj[1].handle = gem_create(fd, 4096);
- gem_write(fd, obj[1].handle, 0, &bbe, sizeof(bbe));
-
- plug(fd, &c);
- obj[0].handle = c.handle;
-
- memset(&execbuf, 0, sizeof(execbuf));
- execbuf.buffers_ptr = to_user_pointer(obj);
- execbuf.buffer_count = 2;
-
- count = 0;
- set_timeout(1);
- while (__execbuf(fd, &execbuf) == 0)
- count++;
- set_timeout(0);
-
- unplug(&c);
- gem_close(fd, obj[1].handle);
-
- return count;
-}
-
#define RCS_TIMESTAMP (0x2000 + 0x358)
static void latency_on_ring(int fd,
unsigned ring, const char *name,
@@ -142,7 +66,7 @@ static void latency_on_ring(int fd,
struct drm_i915_gem_exec_object2 obj[3];
struct drm_i915_gem_relocation_entry reloc;
struct drm_i915_gem_execbuffer2 execbuf;
- struct cork c;
+ IGT_CORK_HANDLE(c);
volatile uint32_t *reg;
unsigned repeats = ring_size;
uint32_t start, end, *map, *results;
@@ -206,8 +130,7 @@ static void latency_on_ring(int fd,
}
if (flags & CORK) {
- plug(fd, &c);
- obj[0].handle = c.handle;
+ obj[0].handle = igt_cork_plug(&c, fd);
execbuf.buffers_ptr = to_user_pointer(&obj[0]);
execbuf.buffer_count = 3;
}
@@ -228,7 +151,7 @@ static void latency_on_ring(int fd,
igt_assert(reloc.presumed_offset == obj[1].offset);
if (flags & CORK)
- unplug(&c);
+ igt_cork_unplug(&c);
gem_set_domain(fd, obj[1].handle, I915_GEM_DOMAIN_GTT, 0);
gpu_latency = (results[repeats-1] - results[0]) / (double)(repeats-1);
@@ -269,6 +192,8 @@ static void latency_on_ring(int fd,
munmap(map, 64*1024);
munmap(results, 4096);
+ if (flags & CORK)
+ gem_close(fd, obj[0].handle);
gem_close(fd, obj[1].handle);
gem_close(fd, obj[2].handle);
}
@@ -331,7 +256,7 @@ static void latency_from_ring(int fd,
for (e = intel_execution_engines; e->name; e++) {
igt_spin_t *spin = NULL;
- struct cork c;
+ IGT_CORK_HANDLE(c);
if (e->exec_id == 0)
continue;
@@ -347,8 +272,7 @@ static void latency_from_ring(int fd,
spin = igt_spin_batch_new(fd, ctx[0], ring, 0);
if (flags & CORK) {
- plug(fd, &c);
- obj[0].handle = c.handle;
+ obj[0].handle = igt_cork_plug(&c, fd);
execbuf.buffers_ptr = to_user_pointer(&obj[0]);
execbuf.buffer_count = 3;
}
@@ -408,7 +332,7 @@ static void latency_from_ring(int fd,
}
if (flags & CORK)
- unplug(&c);
+ igt_cork_unplug(&c);
gem_set_domain(fd, obj[1].handle,
I915_GEM_DOMAIN_GTT,
I915_GEM_DOMAIN_GTT);
@@ -420,6 +344,9 @@ static void latency_from_ring(int fd,
munmap(map, 64*1024);
munmap(results, 4096);
+
+ if (flags & CORK)
+ gem_close(fd, obj[0].handle);
gem_close(fd, obj[1].handle);
gem_close(fd, obj[2].handle);
@@ -441,7 +368,7 @@ igt_main
gem_submission_print_method(device);
- ring_size = measure_ring_size(device);
+ ring_size = gem_measure_ring_inflight(device, 0, 0);
igt_info("Ring size: %d batches\n", ring_size);
igt_require(ring_size > 8);
ring_size -= 8; /* leave some spare */
--
2.14.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [igt-dev] [PATCH i-g-t v4 06/11] tests/gem_wait: use igt_cork
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (3 preceding siblings ...)
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 05/11] tests/gem_exec_latency: " Antonio Argenziano
@ 2018-02-21 23:19 ` Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 07/11] tests/gem_eio: " Antonio Argenziano
` (14 subsequent siblings)
19 siblings, 0 replies; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-21 23:19 UTC (permalink / raw)
To: igt-dev
From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
With igt_cork added as common utility we can use it instead of the
local copy
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Antonio Argenziano <antonio.argenziano@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
tests/gem_wait.c | 58 ++++++++++++++------------------------------------------
1 file changed, 14 insertions(+), 44 deletions(-)
diff --git a/tests/gem_wait.c b/tests/gem_wait.c
index cf8c8154..34388d26 100644
--- a/tests/gem_wait.c
+++ b/tests/gem_wait.c
@@ -69,51 +69,15 @@ static void invalid_buf(int fd)
#define AWAIT 4
#define WRITE 8
-struct cork {
- int device;
- uint32_t handle;
- uint32_t fence;
-};
-
-static struct cork plug(int fd, unsigned flags)
-{
- struct cork c;
- struct vgem_bo bo;
- int dmabuf;
-
- if ((flags & (WRITE | AWAIT)) == 0)
- return (struct cork){0};
-
- c.device = drm_open_driver(DRIVER_VGEM);
-
- bo.width = bo.height = 1;
- bo.bpp = 4;
- vgem_create(c.device, &bo);
- c.fence = vgem_fence_attach(c.device, &bo, VGEM_FENCE_WRITE);
-
- dmabuf = prime_handle_to_fd(c.device, bo.handle);
- c.handle = prime_fd_to_handle(fd, dmabuf);
- close(dmabuf);
-
- return c;
-}
-
-static void unplug(struct cork *c)
-{
- if (!c->device)
- return;
-
- vgem_fence_signal(c->device, c->fence);
- close(c->device);
-}
-
static void basic(int fd, unsigned engine, unsigned flags)
{
- struct cork cork = plug(fd, flags);
- igt_spin_t *spin = igt_spin_batch_new(fd, 0, engine, cork.handle);
+ IGT_CORK_HANDLE(cork);
+ uint32_t plug =
+ flags & (WRITE | AWAIT) ? igt_cork_plug(&cork, fd) : 0;
+ igt_spin_t *spin = igt_spin_batch_new(fd, 0, engine, plug);
struct drm_i915_gem_wait wait = {
- flags & WRITE ? cork.handle : spin->handle
- };
+ flags & WRITE ? plug : spin->handle
+ };
igt_assert_eq(__gem_wait(fd, &wait), -ETIME);
@@ -127,7 +91,9 @@ static void basic(int fd, unsigned engine, unsigned flags)
timeout = 1;
}
- unplug(&cork);
+ if (flags & (WRITE | AWAIT))
+ igt_cork_unplug(&cork);
+
igt_assert_eq(__gem_wait(fd, &wait), -ETIME);
while (__gem_wait(fd, &wait) == -ETIME)
@@ -137,7 +103,9 @@ static void basic(int fd, unsigned engine, unsigned flags)
igt_assert_eq(__gem_wait(fd, &wait), -ETIME);
igt_assert_eq_s64(wait.timeout_ns, 0);
- unplug(&cork);
+ if (flags & (WRITE | AWAIT))
+ igt_cork_unplug(&cork);
+
wait.timeout_ns = 0;
igt_assert_eq(__gem_wait(fd, &wait), -ETIME);
@@ -157,6 +125,8 @@ static void basic(int fd, unsigned engine, unsigned flags)
igt_assert(wait.timeout_ns == 0);
}
+ if (plug)
+ gem_close(fd, plug);
igt_spin_batch_free(fd, spin);
}
--
2.14.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [igt-dev] [PATCH i-g-t v4 07/11] tests/gem_eio: use igt_cork
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (4 preceding siblings ...)
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 06/11] tests/gem_wait: use igt_cork Antonio Argenziano
@ 2018-02-21 23:19 ` Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 08/11] tests/gem_exec_await: use intel_measure_ring_size Antonio Argenziano
` (13 subsequent siblings)
19 siblings, 0 replies; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-21 23:19 UTC (permalink / raw)
To: igt-dev
With igt_cork added as common utility we can use it instead of the
local copy
Signed-off-by: Antonio Argenziano <antonio.argenziano@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
tests/gem_eio.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/tests/gem_eio.c b/tests/gem_eio.c
index 5efcc461..249f5bff 100644
--- a/tests/gem_eio.c
+++ b/tests/gem_eio.c
@@ -365,15 +365,14 @@ static void test_inflight_external(int fd)
const uint32_t bbe = MI_BATCH_BUFFER_END;
struct drm_i915_gem_execbuffer2 execbuf;
struct drm_i915_gem_exec_object2 obj;
- int timeline, fence;
igt_spin_t *hang;
+ uint32_t fence;
+ IGT_CORK_FENCE(cork);
- igt_require_gem(fd);
igt_require_sw_sync();
igt_require(gem_has_exec_fence(fd));
- timeline = sw_sync_timeline_create();
- fence = sw_sync_timeline_create_fence(timeline, 1);
+ fence = igt_cork_plug(&cork, fd);
igt_require(i915_reset_control(false));
hang = __igt_spin_batch_new(fd, 0, 0, 0);
@@ -397,7 +396,7 @@ static void test_inflight_external(int fd)
gem_sync(fd, hang->handle); /* wedged, with an unready batch */
igt_assert(!gem_bo_busy(fd, hang->handle));
igt_assert(gem_bo_busy(fd, obj.handle));
- sw_sync_timeline_inc(timeline, 1); /* only now submit our batches */
+ igt_cork_unplug(&cork); /* only now submit our batches */
igt_assert_eq(__gem_wait(fd, obj.handle, -1), 0);
igt_assert_eq(sync_fence_status(fence), -EIO);
@@ -406,7 +405,6 @@ static void test_inflight_external(int fd)
igt_spin_batch_free(fd, hang);
igt_assert(i915_reset_control(true));
trigger_reset(fd);
- close(timeline);
}
static void test_inflight_internal(int fd)
--
2.14.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [igt-dev] [PATCH i-g-t v4 08/11] tests/gem_exec_await: use intel_measure_ring_size
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (5 preceding siblings ...)
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 07/11] tests/gem_eio: " Antonio Argenziano
@ 2018-02-21 23:19 ` Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 09/11] tests/gem_ringfill: " Antonio Argenziano
` (12 subsequent siblings)
19 siblings, 0 replies; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-21 23:19 UTC (permalink / raw)
To: igt-dev
From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
With intel_measure_ring_size added as common function we can use it
instead of the local copy
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
tests/gem_exec_await.c | 91 ++------------------------------------------------
1 file changed, 2 insertions(+), 89 deletions(-)
diff --git a/tests/gem_exec_await.c b/tests/gem_exec_await.c
index e19363c4..1c1640de 100644
--- a/tests/gem_exec_await.c
+++ b/tests/gem_exec_await.c
@@ -26,6 +26,7 @@
#include "igt_rand.h"
#include "igt_sysfs.h"
#include "igt_vgem.h"
+#include "i915/gem_ring.h"
#include <sys/ioctl.h>
#include <sys/signal.h>
@@ -237,94 +238,6 @@ static void wide(int fd, int ring_size, int timeout, unsigned int flags)
free(exec);
}
-struct cork {
- int device;
- uint32_t handle;
- uint32_t fence;
-};
-
-static void plug(int fd, struct cork *c)
-{
- struct vgem_bo bo;
- int dmabuf;
-
- c->device = drm_open_driver(DRIVER_VGEM);
-
- bo.width = bo.height = 1;
- bo.bpp = 4;
- vgem_create(c->device, &bo);
- c->fence = vgem_fence_attach(c->device, &bo, VGEM_FENCE_WRITE);
-
- dmabuf = prime_handle_to_fd(c->device, bo.handle);
- c->handle = prime_fd_to_handle(fd, dmabuf);
- close(dmabuf);
-}
-
-static void unplug(struct cork *c)
-{
- vgem_fence_signal(c->device, c->fence);
- close(c->device);
-}
-
-static void alarm_handler(int sig)
-{
-}
-
-static int __execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- return ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf);
-}
-
-static unsigned int measure_ring_size(int fd)
-{
- struct sigaction sa = { .sa_handler = alarm_handler };
- struct drm_i915_gem_exec_object2 obj[2];
- struct drm_i915_gem_execbuffer2 execbuf;
- const uint32_t bbe = MI_BATCH_BUFFER_END;
- unsigned int count, last;
- struct itimerval itv;
- struct cork c;
-
- memset(obj, 0, sizeof(obj));
- obj[1].handle = gem_create(fd, 4096);
- gem_write(fd, obj[1].handle, 0, &bbe, sizeof(bbe));
-
- plug(fd, &c);
- obj[0].handle = c.handle;
-
- memset(&execbuf, 0, sizeof(execbuf));
- execbuf.buffers_ptr = to_user_pointer(obj);
- execbuf.buffer_count = 2;
-
- sigaction(SIGALRM, &sa, NULL);
- itv.it_interval.tv_sec = 0;
- itv.it_interval.tv_usec = 100;
- itv.it_value.tv_sec = 0;
- itv.it_value.tv_usec = 1000;
- setitimer(ITIMER_REAL, &itv, NULL);
-
- last = count = 0;
- do {
- if (__execbuf(fd, &execbuf) == 0) {
- count++;
- continue;
- }
-
- if (last == count)
- break;
-
- last = count;
- } while (1);
-
- memset(&itv, 0, sizeof(itv));
- setitimer(ITIMER_REAL, &itv, NULL);
-
- unplug(&c);
- gem_close(fd, obj[1].handle);
-
- return count;
-}
-
igt_main
{
int ring_size = 0;
@@ -336,7 +249,7 @@ igt_main
igt_require_gem(device);
gem_submission_print_method(device);
- ring_size = measure_ring_size(device) - 10;
+ ring_size = gem_measure_ring_inflight(device, 0, 0) - 10;
if (!gem_has_execlists(device))
ring_size /= 2;
igt_info("Ring size: %d batches\n", ring_size);
--
2.14.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [igt-dev] [PATCH i-g-t v4 09/11] tests/gem_ringfill: use intel_measure_ring_size
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (6 preceding siblings ...)
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 08/11] tests/gem_exec_await: use intel_measure_ring_size Antonio Argenziano
@ 2018-02-21 23:19 ` Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 10/11] tests/gem_busy: Use intel_measure_ring_size Antonio Argenziano
` (11 subsequent siblings)
19 siblings, 0 replies; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-21 23:19 UTC (permalink / raw)
To: igt-dev
From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
With intel_measure_ring_size added as common function we can use it
instead of the local copy
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
tests/gem_ringfill.c | 97 ++--------------------------------------------------
1 file changed, 2 insertions(+), 95 deletions(-)
diff --git a/tests/gem_ringfill.c b/tests/gem_ringfill.c
index c3376a67..eea1d403 100644
--- a/tests/gem_ringfill.c
+++ b/tests/gem_ringfill.c
@@ -35,6 +35,7 @@
#include "igt_device.h"
#include "igt_gt.h"
#include "igt_vgem.h"
+#include "i915/gem_ring.h"
#include <signal.h>
#include <sys/ioctl.h>
@@ -237,100 +238,6 @@ static void run_test(int fd, unsigned ring, unsigned flags, unsigned timeout)
run_test(fd, ring, 0, 0);
}
-struct cork {
- int device;
- uint32_t handle;
- uint32_t fence;
-};
-
-static void plug(int fd, struct cork *c)
-{
- struct vgem_bo bo;
- int dmabuf;
-
- c->device = drm_open_driver(DRIVER_VGEM);
-
- bo.width = bo.height = 1;
- bo.bpp = 4;
- vgem_create(c->device, &bo);
- c->fence = vgem_fence_attach(c->device, &bo, VGEM_FENCE_WRITE);
-
- dmabuf = prime_handle_to_fd(c->device, bo.handle);
- c->handle = prime_fd_to_handle(fd, dmabuf);
- close(dmabuf);
-}
-
-static void unplug(struct cork *c)
-{
- vgem_fence_signal(c->device, c->fence);
- close(c->device);
-}
-
-static void alarm_handler(int sig)
-{
-}
-
-static int __execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- return ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf);
-}
-
-static unsigned int measure_ring_size(int fd)
-{
- struct sigaction sa = { .sa_handler = alarm_handler };
- struct drm_i915_gem_exec_object2 obj[2];
- struct drm_i915_gem_execbuffer2 execbuf;
- const uint32_t bbe = MI_BATCH_BUFFER_END;
- unsigned int count, last;
- struct itimerval itv;
- struct cork c;
-
- memset(obj, 0, sizeof(obj));
- obj[1].handle = gem_create(fd, 4096);
- gem_write(fd, obj[1].handle, 0, &bbe, sizeof(bbe));
-
- memset(&execbuf, 0, sizeof(execbuf));
- execbuf.buffers_ptr = to_user_pointer(obj + 1);
- execbuf.buffer_count = 1;
- gem_execbuf(fd, &execbuf);
- gem_sync(fd, obj[1].handle);
-
- plug(fd, &c);
- obj[0].handle = c.handle;
-
- execbuf.buffers_ptr = to_user_pointer(obj);
- execbuf.buffer_count = 2;
-
- sigaction(SIGALRM, &sa, NULL);
- itv.it_interval.tv_sec = 0;
- itv.it_interval.tv_usec = 100;
- itv.it_value.tv_sec = 0;
- itv.it_value.tv_usec = 1000;
- setitimer(ITIMER_REAL, &itv, NULL);
-
- last = -1;
- count = 0;
- do {
- if (__execbuf(fd, &execbuf) == 0) {
- count++;
- continue;
- }
-
- if (last == count)
- break;
-
- last = count;
- } while (1);
-
- memset(&itv, 0, sizeof(itv));
- setitimer(ITIMER_REAL, &itv, NULL);
-
- unplug(&c);
- gem_close(fd, obj[1].handle);
-
- return count;
-}
-
igt_main
{
const struct {
@@ -365,7 +272,7 @@ igt_main
master = true;
}
- ring_size = measure_ring_size(fd);
+ ring_size = gem_measure_ring_inflight(fd, 0, 0);
igt_info("Ring size: %d batches\n", ring_size);
igt_require(ring_size);
}
--
2.14.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [igt-dev] [PATCH i-g-t v4 10/11] tests/gem_busy: Use intel_measure_ring_size
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (7 preceding siblings ...)
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 09/11] tests/gem_ringfill: " Antonio Argenziano
@ 2018-02-21 23:19 ` Antonio Argenziano
2018-02-21 23:39 ` Chris Wilson
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 11/11] igt: Use lib gem_execbuf where possible Antonio Argenziano
` (10 subsequent siblings)
19 siblings, 1 reply; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-21 23:19 UTC (permalink / raw)
To: igt-dev
With intel_measure_ring_size added as common function we can use it
instead of the local copy
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Antonio Argenziano <antonio.argenziano@intel.com>
---
tests/gem_busy.c | 98 ++------------------------------------------------------
1 file changed, 2 insertions(+), 96 deletions(-)
diff --git a/tests/gem_busy.c b/tests/gem_busy.c
index c349c291..8af8065a 100644
--- a/tests/gem_busy.c
+++ b/tests/gem_busy.c
@@ -28,6 +28,7 @@
#include "igt.h"
#include "igt_rand.h"
#include "igt_vgem.h"
+#include "i915/gem_ring.h"
#define LOCAL_EXEC_NO_RELOC (1<<11)
#define PAGE_ALIGN(x) ALIGN(x, 4096)
@@ -299,105 +300,10 @@ static void xchg_u32(void *array, unsigned i, unsigned j)
u32[j] = tmp;
}
-struct cork {
- int device;
- uint32_t handle;
- uint32_t fence;
-};
-
-static void plug(int fd, struct cork *c)
-{
- struct vgem_bo bo;
- int dmabuf;
-
- c->device = drm_open_driver(DRIVER_VGEM);
-
- bo.width = bo.height = 1;
- bo.bpp = 4;
- vgem_create(c->device, &bo);
- c->fence = vgem_fence_attach(c->device, &bo, VGEM_FENCE_WRITE);
-
- dmabuf = prime_handle_to_fd(c->device, bo.handle);
- c->handle = prime_fd_to_handle(fd, dmabuf);
- close(dmabuf);
-}
-
-static void unplug(struct cork *c)
-{
- vgem_fence_signal(c->device, c->fence);
- close(c->device);
-}
-
-static void alarm_handler(int sig)
-{
-}
-
-static int __execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- return ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf);
-}
-
-static unsigned int measure_ring_size(int fd)
-{
- struct sigaction sa = { .sa_handler = alarm_handler };
- struct drm_i915_gem_exec_object2 obj[2];
- struct drm_i915_gem_execbuffer2 execbuf;
- const uint32_t bbe = MI_BATCH_BUFFER_END;
- unsigned int count, last;
- struct itimerval itv;
- struct cork c;
-
- memset(obj, 0, sizeof(obj));
- obj[1].handle = gem_create(fd, 4096);
- gem_write(fd, obj[1].handle, 0, &bbe, sizeof(bbe));
-
- memset(&execbuf, 0, sizeof(execbuf));
- execbuf.buffers_ptr = to_user_pointer(obj + 1);
- execbuf.buffer_count = 1;
- gem_execbuf(fd, &execbuf);
- gem_sync(fd, obj[1].handle);
-
- plug(fd, &c);
- obj[0].handle = c.handle;
-
- execbuf.buffers_ptr = to_user_pointer(obj);
- execbuf.buffer_count = 2;
-
- sigaction(SIGALRM, &sa, NULL);
- itv.it_interval.tv_sec = 0;
- itv.it_interval.tv_usec = 100;
- itv.it_value.tv_sec = 0;
- itv.it_value.tv_usec = 1000;
- setitimer(ITIMER_REAL, &itv, NULL);
-
- last = -1;
- count = 0;
- do {
- if (__execbuf(fd, &execbuf) == 0) {
- count++;
- continue;
- }
-
- if (last == count)
- break;
-
- last = count;
- } while (1);
-
- memset(&itv, 0, sizeof(itv));
- setitimer(ITIMER_REAL, &itv, NULL);
-
- unplug(&c);
- gem_close(fd, obj[1].handle);
- gem_quiescent_gpu(fd);
-
- return count;
-}
-
static void close_race(int fd)
{
const unsigned int ncpus = sysconf(_SC_NPROCESSORS_ONLN);
- const unsigned int nhandles = measure_ring_size(fd) / 2;
+ const unsigned int nhandles = gem_measure_ring_inflight(fd, 0, 0) / 2;
unsigned int engines[16], nengine;
unsigned long *control;
uint32_t *handles;
--
2.14.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [igt-dev] [PATCH i-g-t v4 11/11] igt: Use lib gem_execbuf where possible
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (8 preceding siblings ...)
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 10/11] tests/gem_busy: Use intel_measure_ring_size Antonio Argenziano
@ 2018-02-21 23:19 ` Antonio Argenziano
2018-02-21 23:42 ` Chris Wilson
2018-02-23 0:54 ` [igt-dev] [PATCH i-g-t v3] " Antonio Argenziano
2018-02-21 23:26 ` [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Chris Wilson
` (9 subsequent siblings)
19 siblings, 2 replies; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-21 23:19 UTC (permalink / raw)
To: igt-dev
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@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Petri Latvala <petri.latvala@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_fence.c | 14 +-------------
tests/gem_exec_lut_handle.c | 2 +-
tests/gem_exec_params.c | 9 ++-------
tests/gem_gtt_hog.c | 2 +-
tests/gem_lut_handle.c | 13 ++-----------
tests/gem_pwrite_pread.c | 12 ++++++------
tests/gen3_mixed_blits.c | 16 ++--------------
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 +++---
17 files changed, 40 insertions(+), 91 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..140d5583 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_fence.c b/tests/gem_exec_fence.c
index b415199f..e29a345f 100644
--- a/tests/gem_exec_fence.c
+++ b/tests/gem_exec_fence.c
@@ -326,18 +326,6 @@ static void alarm_handler(int sig)
{
}
-static int __execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- int err;
-
- err = 0;
- if (ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2_WR, execbuf))
- err = -errno;
-
- errno = 0;
- return err;
-}
-
static void test_parallel(int fd, unsigned int master)
{
const int SCRATCH = 0;
@@ -565,7 +553,7 @@ static void test_keep_in_fence(int fd, unsigned int engine, unsigned int flags)
last = -1;
count = 0;
do {
- int err = __execbuf(fd, &execbuf);
+ int err = __gem_execbuf(fd, &execbuf);
igt_assert_eq(lower_32_bits(execbuf.rsvd2), fence);
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..04c21c05 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(__gem_execbuf(fd, &execbuf), -expected_errno); \
} 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..fec65dd8 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,11 +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);
- if (ret < 0)
- ret = -errno;
+ ret = __gem_execbuf(fd, &execbuf);
for (n = 0; n < num_exec; n++)
gem_close(fd, gem_exec[n].handle);
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..fa64598a 100644
--- a/tests/gen3_mixed_blits.c
+++ b/tests/gen3_mixed_blits.c
@@ -88,7 +88,6 @@ render_copy(int fd,
struct drm_i915_gem_execbuffer2 exec;
uint32_t handle;
uint32_t tiling_bits;
- int ret;
/* invariant state */
*b++ = (_3DSTATE_AA_CMD |
@@ -310,12 +309,7 @@ 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) {
- drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
- ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
- }
- igt_assert_eq(ret, 0);
+ gem_execbuf(fd, &exec);
gem_close(fd, handle);
}
@@ -327,7 +321,6 @@ static void blt_copy(int fd, uint32_t dst, uint32_t src)
struct drm_i915_gem_exec_object2 obj[3];
struct drm_i915_gem_execbuffer2 exec;
uint32_t handle;
- int ret;
*b++ = (XY_SRC_COPY_BLT_CMD |
XY_SRC_COPY_BLT_WRITE_ALPHA |
@@ -388,12 +381,7 @@ 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);
- while (ret && errno == EBUSY) {
- drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
- ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
- }
- igt_assert_eq(ret, 0);
+ gem_execbuf(fd, &exec);
gem_close(fd, handle);
}
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
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (9 preceding siblings ...)
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 11/11] igt: Use lib gem_execbuf where possible Antonio Argenziano
@ 2018-02-21 23:26 ` Chris Wilson
2018-02-22 0:17 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v4,01/11] " Patchwork
` (8 subsequent siblings)
19 siblings, 0 replies; 31+ messages in thread
From: Chris Wilson @ 2018-02-21 23:26 UTC (permalink / raw)
To: Antonio Argenziano, igt-dev
Quoting Antonio Argenziano (2018-02-21 23:19:37)
> +struct igt_cork {
> + enum igt_cork_type type;
> +
> + union __cork {
> + int fd;
> +
> + struct igt_cork_vgem vgem;
> + struct igt_cork_sw_sync sw_sync;
> + } cork;
Anonymous unions ftw.
Then instead of needing vgem_cork->device, you can just write
cork->vgem.device.
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v4 10/11] tests/gem_busy: Use intel_measure_ring_size
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 10/11] tests/gem_busy: Use intel_measure_ring_size Antonio Argenziano
@ 2018-02-21 23:39 ` Chris Wilson
0 siblings, 0 replies; 31+ messages in thread
From: Chris Wilson @ 2018-02-21 23:39 UTC (permalink / raw)
To: Antonio Argenziano, igt-dev
Quoting Antonio Argenziano (2018-02-21 23:19:46)
> With intel_measure_ring_size added as common function we can use it
> instead of the local copy
>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Signed-off-by: Antonio Argenziano <antonio.argenziano@intel.com>
Didn't spot anything of note in the conversions, so 2?-10
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v4 11/11] igt: Use lib gem_execbuf where possible
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 11/11] igt: Use lib gem_execbuf where possible Antonio Argenziano
@ 2018-02-21 23:42 ` Chris Wilson
2018-02-23 0:54 ` [igt-dev] [PATCH i-g-t v3] " Antonio Argenziano
1 sibling, 0 replies; 31+ messages in thread
From: Chris Wilson @ 2018-02-21 23:42 UTC (permalink / raw)
To: Antonio Argenziano, igt-dev
Quoting Antonio Argenziano (2018-02-21 23:19:47)
> -static int __execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
> -{
> - int err;
> -
> - err = 0;
> - if (ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2_WR, execbuf))
> - err = -errno;
Another gotcha, EXECBUFFER2_WR != gem_execbuf()
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v4,01/11] lib/igt_dummyload: add igt_cork
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (10 preceding siblings ...)
2018-02-21 23:26 ` [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Chris Wilson
@ 2018-02-22 0:17 ` Patchwork
2018-02-22 0:31 ` [igt-dev] [PATCH i-g-t v5] " Antonio Argenziano
` (7 subsequent siblings)
19 siblings, 0 replies; 31+ messages in thread
From: Patchwork @ 2018-02-22 0:17 UTC (permalink / raw)
To: Antonio Argenziano; +Cc: igt-dev
== Series Details ==
Series: series starting with [i-g-t,v4,01/11] lib/igt_dummyload: add igt_cork
URL : https://patchwork.freedesktop.org/series/38730/
State : success
== Summary ==
IGT patchset tested on top of latest successful build
1ecc978a69a531858ba799425770062ebeb13888 igt/perf_pmu: Use a self-correcting busy pwm
with latest DRM-Tip kernel build CI_DRM_3819
42016703e66b drm-tip: 2018y-02m-21d-21h-26m-53s UTC integration manifest
No testlist changes.
Test kms_pipe_crc_basic:
Subgroup suspend-read-crc-pipe-c:
incomplete -> PASS (fi-bxt-dsi) fdo#103927
fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
fi-bdw-5557u total:288 pass:267 dwarn:0 dfail:0 fail:0 skip:21 time:415s
fi-bdw-gvtdvm total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:427s
fi-blb-e6850 total:288 pass:223 dwarn:1 dfail:0 fail:0 skip:64 time:375s
fi-bsw-n3050 total:288 pass:242 dwarn:0 dfail:0 fail:0 skip:46 time:491s
fi-bwr-2160 total:288 pass:183 dwarn:0 dfail:0 fail:0 skip:105 time:285s
fi-bxt-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:479s
fi-bxt-j4205 total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:483s
fi-byt-j1900 total:288 pass:253 dwarn:0 dfail:0 fail:0 skip:35 time:468s
fi-byt-n2820 total:288 pass:249 dwarn:0 dfail:0 fail:0 skip:39 time:460s
fi-cfl-s2 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:562s
fi-elk-e7500 total:288 pass:229 dwarn:0 dfail:0 fail:0 skip:59 time:415s
fi-gdg-551 total:288 pass:179 dwarn:0 dfail:0 fail:1 skip:108 time:285s
fi-glk-1 total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:510s
fi-hsw-4770 total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:384s
fi-ilk-650 total:288 pass:228 dwarn:0 dfail:0 fail:0 skip:60 time:412s
fi-ivb-3520m total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:453s
fi-ivb-3770 total:288 pass:255 dwarn:0 dfail:0 fail:0 skip:33 time:413s
fi-kbl-7500u total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:451s
fi-kbl-7560u total:288 pass:269 dwarn:0 dfail:0 fail:0 skip:19 time:492s
fi-kbl-7567u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:453s
fi-kbl-r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:494s
fi-pnv-d510 total:288 pass:222 dwarn:1 dfail:0 fail:0 skip:65 time:588s
fi-skl-6260u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:429s
fi-skl-6600u total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:500s
fi-skl-6700hq total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:520s
fi-skl-6700k2 total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:488s
fi-skl-6770hq total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:477s
fi-skl-guc total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:409s
fi-skl-gvtdvm total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:428s
fi-snb-2520m total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:515s
fi-snb-2600 total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:395s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_979/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* [igt-dev] [PATCH i-g-t v5] lib/igt_dummyload: add igt_cork
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (11 preceding siblings ...)
2018-02-22 0:17 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v4,01/11] " Patchwork
@ 2018-02-22 0:31 ` Antonio Argenziano
2018-02-22 0:46 ` Chris Wilson
2018-02-22 17:35 ` [igt-dev] [PATCH i-g-t v6] " Antonio Argenziano
2018-02-22 0:52 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v5] lib/igt_dummyload: add igt_cork (rev2) Patchwork
` (6 subsequent siblings)
19 siblings, 2 replies; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-22 0:31 UTC (permalink / raw)
To: igt-dev
From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
The "cork" bo (imported bo with attached fence) and fence is used in several
tests to stall execution. Moving it to a common place makes the codebase
cleaner.
Note that the actual test updates is done in follow up patches as it is
simpler to do in one go after one more common function is added in the
next patch.
v2: don't use new/free naming, don't use dynamic alloc (Chris)
v3: add sw_sync common functions. (Chris)
v4: squash sw_sync and vgem cork structs into one. (Chris)
v5: use anonymous enum in cork struct. (Chris)
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Antonio Argenziano <antonio.argenziano@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
---
lib/igt_dummyload.c | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++
lib/igt_dummyload.h | 32 +++++++++++++++
2 files changed, 147 insertions(+)
diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c
index 27eb402b..d14e5ad3 100644
--- a/lib/igt_dummyload.c
+++ b/lib/igt_dummyload.c
@@ -29,12 +29,14 @@
#include <i915_drm.h>
#include "igt_core.h"
+#include "drmtest.h"
#include "igt_dummyload.h"
#include "igt_gt.h"
#include "intel_chipset.h"
#include "intel_reg.h"
#include "ioctl_wrappers.h"
#include "sw_sync.h"
+#include "igt_vgem.h"
/**
* SECTION:igt_dummyload
@@ -371,3 +373,116 @@ void igt_terminate_spin_batches(void)
igt_spin_batch_end(iter);
pthread_mutex_unlock(&list_lock);
}
+
+static uint32_t plug_vgem_handle(struct igt_cork *cork, int fd)
+{
+ struct vgem_bo bo;
+ int dmabuf;
+ uint32_t handle;
+
+ cork->vgem.device = drm_open_driver(DRIVER_VGEM);
+ igt_require(vgem_has_fences(cork->vgem.device));
+
+ bo.width = bo.height = 1;
+ bo.bpp = 4;
+ vgem_create(cork->vgem.device, &bo);
+ cork->vgem.fence = vgem_fence_attach(cork->vgem.device, &bo, VGEM_FENCE_WRITE);
+
+ dmabuf = prime_handle_to_fd(cork->vgem.device, bo.handle);
+ handle = prime_fd_to_handle(fd, dmabuf);
+ close(dmabuf);
+
+ return handle;
+}
+
+static void unplug_vgem_handle(struct igt_cork *cork)
+{
+ vgem_fence_signal(cork->vgem.device, cork->vgem.fence);
+ close(cork->vgem.device);
+ cork->vgem.device = -1;
+}
+
+static uint32_t plug_sync_fd(struct igt_cork *cork)
+{
+ int fence;
+
+ igt_require_sw_sync();
+
+ cork->sw_sync.timeline = sw_sync_timeline_create();
+ fence = sw_sync_timeline_create_fence(cork->sw_sync.timeline, 1);
+
+ return fence;
+}
+
+static void unplug_sync_fd(struct igt_cork *cork)
+{
+ sw_sync_timeline_inc(cork->sw_sync.timeline, 1);
+ close(cork->sw_sync.timeline);
+}
+
+/**
+ * igt_cork_plug:
+ * @fd: open drm file descriptor
+ * @method: method to utilize for corking.
+ * @cork: structure that will be filled with the state of the cork bo.
+ * Note: this has to match the corking method.
+ *
+ * This function provides a mechanism to stall submission. It provides two
+ * blocking methods:
+ *
+ * VGEM_BO.
+ * Imports a vgem bo with a fence attached to it. This bo can be used as a
+ * dependency during submission to stall execution until the fence is signaled.
+ *
+ * SW_SYNC:
+ * Creates a timeline and then a fence on that timeline. The fence can be used
+ * as an input fence to a request, the request will be stalled until the fence
+ * is signaled.
+ *
+ * The parameters required to unblock the execution and to cleanup are stored in
+ * the provided cork structure.
+ *
+ * Returns:
+ * Handle of the imported BO / Sw sync fence FD.
+ */
+uint32_t igt_cork_plug(struct igt_cork *cork, int fd)
+{
+ igt_assert(cork->fd == -1);
+
+ switch (cork->type) {
+ case CORK_SYNC_FD:
+ return plug_sync_fd(cork);
+
+ case CORK_VGEM_HANDLE:
+ return plug_vgem_handle(cork, fd);
+
+ default:
+ igt_assert_f(0, "Invalid cork type!\n");
+ return 0;
+ }
+}
+
+/**
+ * igt_cork_unplug:
+ * @method: method to utilize for corking.
+ * @cork: cork state from igt_cork_plug()
+ *
+ * This function unblocks the execution by signaling the fence attached to the
+ * imported bo and does the necessary post-processing.
+ *
+ * NOTE: the handle returned by igt_cork_plug is not closed during this phase.
+ */
+void igt_cork_unplug(struct igt_cork *cork)
+{
+ igt_assert(cork->fd != -1);
+
+ switch (cork->type) {
+ case CORK_SYNC_FD:
+ unplug_sync_fd(cork);
+ return;
+
+ case CORK_VGEM_HANDLE:
+ unplug_vgem_handle(cork);
+ return;
+ }
+}
diff --git a/lib/igt_dummyload.h b/lib/igt_dummyload.h
index ffa7e351..4103e4ab 100644
--- a/lib/igt_dummyload.h
+++ b/lib/igt_dummyload.h
@@ -61,4 +61,36 @@ void igt_spin_batch_free(int fd, igt_spin_t *spin);
void igt_terminate_spin_batches(void);
+enum igt_cork_type {
+ CORK_SYNC_FD = 1,
+ CORK_VGEM_HANDLE
+};
+
+struct igt_cork_vgem {
+ int device;
+ uint32_t fence;
+};
+
+struct igt_cork_sw_sync {
+ int timeline;
+};
+
+struct igt_cork {
+ enum igt_cork_type type;
+
+ union {
+ int fd;
+
+ struct igt_cork_vgem vgem;
+ struct igt_cork_sw_sync sw_sync;
+ };
+};
+
+#define IGT_CORK(name, cork_type) struct igt_cork name = { .type = cork_type, .fd = -1}
+#define IGT_CORK_HANDLE(name) IGT_CORK(name, CORK_VGEM_HANDLE)
+#define IGT_CORK_FENCE(name) IGT_CORK(name, CORK_SYNC_FD)
+
+uint32_t igt_cork_plug(struct igt_cork *cork, int fd);
+void igt_cork_unplug(struct igt_cork *cork);
+
#endif /* __IGT_DUMMYLOAD_H__ */
--
2.14.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v5] lib/igt_dummyload: add igt_cork
2018-02-22 0:31 ` [igt-dev] [PATCH i-g-t v5] " Antonio Argenziano
@ 2018-02-22 0:46 ` Chris Wilson
2018-02-22 17:35 ` [igt-dev] [PATCH i-g-t v6] " Antonio Argenziano
1 sibling, 0 replies; 31+ messages in thread
From: Chris Wilson @ 2018-02-22 0:46 UTC (permalink / raw)
To: Antonio Argenziano, igt-dev
Quoting Antonio Argenziano (2018-02-22 00:31:44)
> From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
>
> The "cork" bo (imported bo with attached fence) and fence is used in several
> tests to stall execution. Moving it to a common place makes the codebase
> cleaner.
>
> Note that the actual test updates is done in follow up patches as it is
> simpler to do in one go after one more common function is added in the
> next patch.
>
> v2: don't use new/free naming, don't use dynamic alloc (Chris)
> v3: add sw_sync common functions. (Chris)
> v4: squash sw_sync and vgem cork structs into one. (Chris)
> v5: use anonymous enum in cork struct. (Chris)
>
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Signed-off-by: Antonio Argenziano <antonio.argenziano@intel.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> ---
> +static void unplug_vgem_handle(struct igt_cork *cork)
> +{
> + vgem_fence_signal(cork->vgem.device, cork->vgem.fence);
> + close(cork->vgem.device);
> + cork->vgem.device = -1;
> +}
> +
> +static uint32_t plug_sync_fd(struct igt_cork *cork)
> +{
> + int fence;
> +
> + igt_require_sw_sync();
> +
> + cork->sw_sync.timeline = sw_sync_timeline_create();
> + fence = sw_sync_timeline_create_fence(cork->sw_sync.timeline, 1);
> +
> + return fence;
> +}
> +
> +static void unplug_sync_fd(struct igt_cork *cork)
> +{
> + sw_sync_timeline_inc(cork->sw_sync.timeline, 1);
> + close(cork->sw_sync.timeline);
Either reset fd to -1 here, or don't for vgem. Resetting is handy if we
want to reuse the cork (or we may then just move it to init but would
need a fini to complete) and ties into the asserts.
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v5] lib/igt_dummyload: add igt_cork (rev2)
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (12 preceding siblings ...)
2018-02-22 0:31 ` [igt-dev] [PATCH i-g-t v5] " Antonio Argenziano
@ 2018-02-22 0:52 ` Patchwork
2018-02-22 4:47 ` [igt-dev] ✓ Fi.CI.IGT: success for series starting with [i-g-t,v4,01/11] lib/igt_dummyload: add igt_cork Patchwork
` (5 subsequent siblings)
19 siblings, 0 replies; 31+ messages in thread
From: Patchwork @ 2018-02-22 0:52 UTC (permalink / raw)
To: Antonio Argenziano; +Cc: igt-dev
== Series Details ==
Series: series starting with [i-g-t,v5] lib/igt_dummyload: add igt_cork (rev2)
URL : https://patchwork.freedesktop.org/series/38730/
State : success
== Summary ==
IGT patchset tested on top of latest successful build
1ecc978a69a531858ba799425770062ebeb13888 igt/perf_pmu: Use a self-correcting busy pwm
with latest DRM-Tip kernel build CI_DRM_3819
42016703e66b drm-tip: 2018y-02m-21d-21h-26m-53s UTC integration manifest
No testlist changes.
Test kms_pipe_crc_basic:
Subgroup suspend-read-crc-pipe-b:
pass -> INCOMPLETE (fi-snb-2520m) fdo#103713
Subgroup suspend-read-crc-pipe-c:
incomplete -> PASS (fi-bxt-dsi) fdo#103927
Test prime_vgem:
Subgroup basic-fence-flip:
pass -> FAIL (fi-ilk-650) fdo#104008
fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
fdo#104008 https://bugs.freedesktop.org/show_bug.cgi?id=104008
fi-bdw-5557u total:288 pass:267 dwarn:0 dfail:0 fail:0 skip:21 time:421s
fi-bdw-gvtdvm total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:425s
fi-blb-e6850 total:288 pass:223 dwarn:1 dfail:0 fail:0 skip:64 time:379s
fi-bsw-n3050 total:288 pass:242 dwarn:0 dfail:0 fail:0 skip:46 time:489s
fi-bwr-2160 total:288 pass:183 dwarn:0 dfail:0 fail:0 skip:105 time:286s
fi-bxt-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:481s
fi-bxt-j4205 total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:480s
fi-byt-j1900 total:288 pass:253 dwarn:0 dfail:0 fail:0 skip:35 time:468s
fi-byt-n2820 total:288 pass:249 dwarn:0 dfail:0 fail:0 skip:39 time:460s
fi-cfl-s2 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:570s
fi-elk-e7500 total:288 pass:229 dwarn:0 dfail:0 fail:0 skip:59 time:414s
fi-gdg-551 total:288 pass:179 dwarn:0 dfail:0 fail:1 skip:108 time:283s
fi-glk-1 total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:508s
fi-hsw-4770 total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:395s
fi-ilk-650 total:288 pass:227 dwarn:0 dfail:0 fail:1 skip:60 time:409s
fi-ivb-3520m total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:451s
fi-ivb-3770 total:288 pass:255 dwarn:0 dfail:0 fail:0 skip:33 time:413s
fi-kbl-7500u total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:452s
fi-kbl-7560u total:288 pass:269 dwarn:0 dfail:0 fail:0 skip:19 time:492s
fi-kbl-7567u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:448s
fi-kbl-r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:495s
fi-pnv-d510 total:288 pass:222 dwarn:1 dfail:0 fail:0 skip:65 time:585s
fi-skl-6260u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:427s
fi-skl-6600u total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:505s
fi-skl-6700hq total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:520s
fi-skl-6700k2 total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:482s
fi-skl-6770hq total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:495s
fi-skl-guc total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:405s
fi-skl-gvtdvm total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:431s
fi-snb-2520m total:245 pass:211 dwarn:0 dfail:0 fail:0 skip:33
fi-snb-2600 total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:393s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_981/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for series starting with [i-g-t,v4,01/11] lib/igt_dummyload: add igt_cork
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (13 preceding siblings ...)
2018-02-22 0:52 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v5] lib/igt_dummyload: add igt_cork (rev2) Patchwork
@ 2018-02-22 4:47 ` Patchwork
2018-02-22 5:57 ` [igt-dev] ✗ Fi.CI.IGT: failure for series starting with [i-g-t,v5] lib/igt_dummyload: add igt_cork (rev2) Patchwork
` (4 subsequent siblings)
19 siblings, 0 replies; 31+ messages in thread
From: Patchwork @ 2018-02-22 4:47 UTC (permalink / raw)
To: Antonio Argenziano; +Cc: igt-dev
== Series Details ==
Series: series starting with [i-g-t,v4,01/11] lib/igt_dummyload: add igt_cork
URL : https://patchwork.freedesktop.org/series/38730/
State : success
== Summary ==
Test kms_flip:
Subgroup modeset-vs-vblank-race:
fail -> PASS (shard-hsw) fdo#103060 +3
Subgroup wf_vblank-ts-check-interruptible:
pass -> FAIL (shard-hsw) fdo#100368
Test gem_eio:
Subgroup in-flight-contexts:
pass -> INCOMPLETE (shard-apl) fdo#104945
Test kms_rotation_crc:
Subgroup sprite-rotation-180:
fail -> PASS (shard-snb) fdo#103925
Test kms_plane:
Subgroup plane-panning-bottom-right-suspend-pipe-a-planes:
pass -> INCOMPLETE (shard-hsw) fdo#103540
Test perf:
Subgroup enable-disable:
pass -> FAIL (shard-apl) fdo#103715
Subgroup oa-exponents:
incomplete -> PASS (shard-apl) fdo#102254
Test kms_chv_cursor_fail:
Subgroup pipe-b-128x128-top-edge:
dmesg-warn -> PASS (shard-snb)
fdo#103060 https://bugs.freedesktop.org/show_bug.cgi?id=103060
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#104945 https://bugs.freedesktop.org/show_bug.cgi?id=104945
fdo#103925 https://bugs.freedesktop.org/show_bug.cgi?id=103925
fdo#103540 https://bugs.freedesktop.org/show_bug.cgi?id=103540
fdo#103715 https://bugs.freedesktop.org/show_bug.cgi?id=103715
fdo#102254 https://bugs.freedesktop.org/show_bug.cgi?id=102254
shard-apl total:3307 pass:1739 dwarn:1 dfail:0 fail:12 skip:1553 time:11827s
shard-hsw total:3432 pass:1747 dwarn:1 dfail:0 fail:5 skip:1677 time:11005s
shard-snb total:3465 pass:1358 dwarn:1 dfail:0 fail:2 skip:2104 time:6696s
Blacklisted hosts:
shard-kbl total:3465 pass:1962 dwarn:1 dfail:0 fail:14 skip:1488 time:9718s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_979/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* [igt-dev] ✗ Fi.CI.IGT: failure for series starting with [i-g-t,v5] lib/igt_dummyload: add igt_cork (rev2)
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (14 preceding siblings ...)
2018-02-22 4:47 ` [igt-dev] ✓ Fi.CI.IGT: success for series starting with [i-g-t,v4,01/11] lib/igt_dummyload: add igt_cork Patchwork
@ 2018-02-22 5:57 ` Patchwork
2018-02-22 21:40 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev3) Patchwork
` (3 subsequent siblings)
19 siblings, 0 replies; 31+ messages in thread
From: Patchwork @ 2018-02-22 5:57 UTC (permalink / raw)
To: Antonio Argenziano; +Cc: igt-dev
== Series Details ==
Series: series starting with [i-g-t,v5] lib/igt_dummyload: add igt_cork (rev2)
URL : https://patchwork.freedesktop.org/series/38730/
State : failure
== Summary ==
Test kms_flip:
Subgroup wf_vblank-ts-check-interruptible:
pass -> FAIL (shard-apl) fdo#100368 +1
Subgroup modeset-vs-vblank-race-interruptible:
fail -> PASS (shard-apl) fdo#103060 +2
Test kms_atomic_transition:
Subgroup 1x-modeset-transitions-fencing:
pass -> FAIL (shard-apl) fdo#103207
Test kms_chv_cursor_fail:
Subgroup pipe-b-128x128-top-edge:
dmesg-warn -> PASS (shard-snb)
Subgroup pipe-c-128x128-bottom-edge:
pass -> FAIL (shard-apl)
Test gem_tiled_swapping:
Subgroup non-threaded:
pass -> DMESG-FAIL (shard-hsw)
Test gem_eio:
Subgroup in-flight-contexts:
pass -> INCOMPLETE (shard-apl) fdo#104945
Test perf:
Subgroup oa-exponents:
incomplete -> PASS (shard-apl) fdo#102254
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#103060 https://bugs.freedesktop.org/show_bug.cgi?id=103060
fdo#103207 https://bugs.freedesktop.org/show_bug.cgi?id=103207
fdo#104945 https://bugs.freedesktop.org/show_bug.cgi?id=104945
fdo#102254 https://bugs.freedesktop.org/show_bug.cgi?id=102254
shard-apl total:3344 pass:1755 dwarn:1 dfail:0 fail:15 skip:1571 time:11611s
shard-hsw total:3465 pass:1765 dwarn:1 dfail:1 fail:4 skip:1693 time:11591s
shard-snb total:3465 pass:1357 dwarn:1 dfail:0 fail:3 skip:2104 time:6692s
Blacklisted hosts:
shard-kbl total:3278 pass:1838 dwarn:19 dfail:1 fail:12 skip:1405 time:8644s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_981/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* [igt-dev] [PATCH i-g-t v6] lib/igt_dummyload: add igt_cork
2018-02-22 0:31 ` [igt-dev] [PATCH i-g-t v5] " Antonio Argenziano
2018-02-22 0:46 ` Chris Wilson
@ 2018-02-22 17:35 ` Antonio Argenziano
1 sibling, 0 replies; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-22 17:35 UTC (permalink / raw)
To: igt-dev
From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
The "cork" bo (imported bo with attached fence) and fence is used in several
tests to stall execution. Moving it to a common place makes the codebase
cleaner.
Note that the actual test updates is done in follow up patches as it is
simpler to do in one go after one more common function is added in the
next patch.
v2: don't use new/free naming, don't use dynamic alloc (Chris)
v3: add sw_sync common functions. (Chris)
v4: squash sw_sync and vgem cork structs into one. (Chris)
v5: use anonymous enum in cork struct. (Chris)
v6: reset cork after unplugging. (Chris)
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Antonio Argenziano <antonio.argenziano@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
---
lib/igt_dummyload.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++
lib/igt_dummyload.h | 32 ++++++++++++++
2 files changed, 151 insertions(+)
diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c
index 27eb402b..ddd43451 100644
--- a/lib/igt_dummyload.c
+++ b/lib/igt_dummyload.c
@@ -29,12 +29,14 @@
#include <i915_drm.h>
#include "igt_core.h"
+#include "drmtest.h"
#include "igt_dummyload.h"
#include "igt_gt.h"
#include "intel_chipset.h"
#include "intel_reg.h"
#include "ioctl_wrappers.h"
#include "sw_sync.h"
+#include "igt_vgem.h"
/**
* SECTION:igt_dummyload
@@ -371,3 +373,120 @@ void igt_terminate_spin_batches(void)
igt_spin_batch_end(iter);
pthread_mutex_unlock(&list_lock);
}
+
+static uint32_t plug_vgem_handle(struct igt_cork *cork, int fd)
+{
+ struct vgem_bo bo;
+ int dmabuf;
+ uint32_t handle;
+
+ cork->vgem.device = drm_open_driver(DRIVER_VGEM);
+ igt_require(vgem_has_fences(cork->vgem.device));
+
+ bo.width = bo.height = 1;
+ bo.bpp = 4;
+ vgem_create(cork->vgem.device, &bo);
+ cork->vgem.fence = vgem_fence_attach(cork->vgem.device, &bo, VGEM_FENCE_WRITE);
+
+ dmabuf = prime_handle_to_fd(cork->vgem.device, bo.handle);
+ handle = prime_fd_to_handle(fd, dmabuf);
+ close(dmabuf);
+
+ return handle;
+}
+
+static void unplug_vgem_handle(struct igt_cork *cork)
+{
+ vgem_fence_signal(cork->vgem.device, cork->vgem.fence);
+ close(cork->vgem.device);
+}
+
+static uint32_t plug_sync_fd(struct igt_cork *cork)
+{
+ int fence;
+
+ igt_require_sw_sync();
+
+ cork->sw_sync.timeline = sw_sync_timeline_create();
+ fence = sw_sync_timeline_create_fence(cork->sw_sync.timeline, 1);
+
+ return fence;
+}
+
+static void unplug_sync_fd(struct igt_cork *cork)
+{
+ sw_sync_timeline_inc(cork->sw_sync.timeline, 1);
+ close(cork->sw_sync.timeline);
+}
+
+/**
+ * igt_cork_plug:
+ * @fd: open drm file descriptor
+ * @method: method to utilize for corking.
+ * @cork: structure that will be filled with the state of the cork bo.
+ * Note: this has to match the corking method.
+ *
+ * This function provides a mechanism to stall submission. It provides two
+ * blocking methods:
+ *
+ * VGEM_BO.
+ * Imports a vgem bo with a fence attached to it. This bo can be used as a
+ * dependency during submission to stall execution until the fence is signaled.
+ *
+ * SW_SYNC:
+ * Creates a timeline and then a fence on that timeline. The fence can be used
+ * as an input fence to a request, the request will be stalled until the fence
+ * is signaled.
+ *
+ * The parameters required to unblock the execution and to cleanup are stored in
+ * the provided cork structure.
+ *
+ * Returns:
+ * Handle of the imported BO / Sw sync fence FD.
+ */
+uint32_t igt_cork_plug(struct igt_cork *cork, int fd)
+{
+ igt_assert(cork->fd == -1);
+
+ switch (cork->type) {
+ case CORK_SYNC_FD:
+ return plug_sync_fd(cork);
+
+ case CORK_VGEM_HANDLE:
+ return plug_vgem_handle(cork, fd);
+
+ default:
+ igt_assert_f(0, "Invalid cork type!\n");
+ return 0;
+ }
+}
+
+/**
+ * igt_cork_unplug:
+ * @method: method to utilize for corking.
+ * @cork: cork state from igt_cork_plug()
+ *
+ * This function unblocks the execution by signaling the fence attached to the
+ * imported bo and does the necessary post-processing.
+ *
+ * NOTE: the handle returned by igt_cork_plug is not closed during this phase.
+ */
+void igt_cork_unplug(struct igt_cork *cork)
+{
+ igt_assert(cork->fd != -1);
+
+ switch (cork->type) {
+ case CORK_SYNC_FD:
+ unplug_sync_fd(cork);
+ break;
+
+ case CORK_VGEM_HANDLE:
+ unplug_vgem_handle(cork);
+ break;
+
+ default:
+ igt_assert_f(0, "Invalid cork type!\n");
+ }
+
+ cork->fd = -1; /* Reset cork */
+}
diff --git a/lib/igt_dummyload.h b/lib/igt_dummyload.h
index ffa7e351..4103e4ab 100644
--- a/lib/igt_dummyload.h
+++ b/lib/igt_dummyload.h
@@ -61,4 +61,36 @@ void igt_spin_batch_free(int fd, igt_spin_t *spin);
void igt_terminate_spin_batches(void);
+enum igt_cork_type {
+ CORK_SYNC_FD = 1,
+ CORK_VGEM_HANDLE
+};
+
+struct igt_cork_vgem {
+ int device;
+ uint32_t fence;
+};
+
+struct igt_cork_sw_sync {
+ int timeline;
+};
+
+struct igt_cork {
+ enum igt_cork_type type;
+
+ union {
+ int fd;
+
+ struct igt_cork_vgem vgem;
+ struct igt_cork_sw_sync sw_sync;
+ };
+};
+
+#define IGT_CORK(name, cork_type) struct igt_cork name = { .type = cork_type, .fd = -1}
+#define IGT_CORK_HANDLE(name) IGT_CORK(name, CORK_VGEM_HANDLE)
+#define IGT_CORK_FENCE(name) IGT_CORK(name, CORK_SYNC_FD)
+
+uint32_t igt_cork_plug(struct igt_cork *cork, int fd);
+void igt_cork_unplug(struct igt_cork *cork);
+
#endif /* __IGT_DUMMYLOAD_H__ */
--
2.14.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev3)
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (15 preceding siblings ...)
2018-02-22 5:57 ` [igt-dev] ✗ Fi.CI.IGT: failure for series starting with [i-g-t,v5] lib/igt_dummyload: add igt_cork (rev2) Patchwork
@ 2018-02-22 21:40 ` Patchwork
2018-02-23 1:45 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev4) Patchwork
` (2 subsequent siblings)
19 siblings, 0 replies; 31+ messages in thread
From: Patchwork @ 2018-02-22 21:40 UTC (permalink / raw)
To: Antonio Argenziano; +Cc: igt-dev
== Series Details ==
Series: series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev3)
URL : https://patchwork.freedesktop.org/series/38730/
State : success
== Summary ==
IGT patchset tested on top of latest successful build
fe4cdd9e734d348be2d518fd0e663bddb886b7f0 tools/aubdump: Signal drm sync objects when device override is used
with latest DRM-Tip kernel build CI_DRM_3826
b9f1df86d437 drm-tip: 2018y-02m-22d-18h-25m-51s UTC integration manifest
No testlist changes.
Test gem_mmap_gtt:
Subgroup basic-small-bo-tiledx:
fail -> PASS (fi-gdg-551) fdo#102575
Test kms_pipe_crc_basic:
Subgroup read-crc-pipe-a:
fail -> PASS (fi-skl-6700k2)
fdo#102575 https://bugs.freedesktop.org/show_bug.cgi?id=102575
fi-bdw-5557u total:288 pass:267 dwarn:0 dfail:0 fail:0 skip:21 time:415s
fi-bdw-gvtdvm total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:427s
fi-blb-e6850 total:288 pass:223 dwarn:1 dfail:0 fail:0 skip:64 time:375s
fi-bsw-n3050 total:288 pass:242 dwarn:0 dfail:0 fail:0 skip:46 time:485s
fi-bwr-2160 total:288 pass:183 dwarn:0 dfail:0 fail:0 skip:105 time:285s
fi-bxt-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:479s
fi-bxt-j4205 total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:483s
fi-byt-j1900 total:288 pass:253 dwarn:0 dfail:0 fail:0 skip:35 time:472s
fi-byt-n2820 total:288 pass:249 dwarn:0 dfail:0 fail:0 skip:39 time:462s
fi-cfl-s2 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:564s
fi-elk-e7500 total:288 pass:229 dwarn:0 dfail:0 fail:0 skip:59 time:415s
fi-gdg-551 total:288 pass:180 dwarn:0 dfail:0 fail:0 skip:108 time:286s
fi-glk-1 total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:507s
fi-hsw-4770 total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:386s
fi-ilk-650 total:288 pass:228 dwarn:0 dfail:0 fail:0 skip:60 time:414s
fi-ivb-3520m total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:460s
fi-ivb-3770 total:288 pass:255 dwarn:0 dfail:0 fail:0 skip:33 time:411s
fi-kbl-7500u total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:454s
fi-kbl-7560u total:288 pass:269 dwarn:0 dfail:0 fail:0 skip:19 time:491s
fi-kbl-7567u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:450s
fi-kbl-r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:496s
fi-pnv-d510 total:288 pass:222 dwarn:1 dfail:0 fail:0 skip:65 time:593s
fi-skl-6260u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:428s
fi-skl-6600u total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:503s
fi-skl-6700hq total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:518s
fi-skl-6700k2 total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:494s
fi-skl-6770hq total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:475s
fi-skl-guc total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:408s
fi-skl-gvtdvm total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:429s
fi-snb-2520m total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:522s
fi-snb-2600 total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:392s
Blacklisted hosts:
fi-cfl-8700k total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:390s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_991/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* [igt-dev] [PATCH i-g-t v3] igt: Use lib gem_execbuf where possible
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 11/11] igt: Use lib gem_execbuf where possible Antonio Argenziano
2018-02-21 23:42 ` Chris Wilson
@ 2018-02-23 0:54 ` Antonio Argenziano
2018-02-23 9:21 ` Chris Wilson
1 sibling, 1 reply; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-23 0:54 UTC (permalink / raw)
To: igt-dev
Replace custom execbuf ioctl wrapper with the ones in lib.
v2:
- Lib execbuf wrapper is not signal handling friendly. (Chris)
v3:
- EXECBUFFER2_WR != EXECBUFFER2. (Chris)
Signed-off-by: Antonio Argenziano <antonio.argenziano@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Petri Latvala <petri.latvala@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_fence.c | 14 +-------------
tests/gem_exec_lut_handle.c | 2 +-
tests/gem_exec_params.c | 9 ++-------
tests/gem_gtt_hog.c | 2 +-
tests/gem_lut_handle.c | 13 ++-----------
tests/gem_pwrite_pread.c | 12 ++++++------
tests/gen3_mixed_blits.c | 16 ++--------------
tests/gen3_render_linear_blits.c | 8 +-------
tests/gen3_render_mixed_blits.c | 8 +-------
tests/gen3_render_tiledx_blits.c | 8 +-------
tests/gen3_render_tiledy_blits.c | 8 +-------
tests/pm_rpm.c | 6 +++---
17 files changed, 33 insertions(+), 108 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..140d5583 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_fence.c b/tests/gem_exec_fence.c
index b415199f..9d95c982 100644
--- a/tests/gem_exec_fence.c
+++ b/tests/gem_exec_fence.c
@@ -326,18 +326,6 @@ static void alarm_handler(int sig)
{
}
-static int __execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
-{
- int err;
-
- err = 0;
- if (ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2_WR, execbuf))
- err = -errno;
-
- errno = 0;
- return err;
-}
-
static void test_parallel(int fd, unsigned int master)
{
const int SCRATCH = 0;
@@ -565,7 +553,7 @@ static void test_keep_in_fence(int fd, unsigned int engine, unsigned int flags)
last = -1;
count = 0;
do {
- int err = __execbuf(fd, &execbuf);
+ int err = __gem_execbuf_wr(fd, &execbuf);
igt_assert_eq(lower_32_bits(execbuf.rsvd2), fence);
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..04c21c05 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(__gem_execbuf(fd, &execbuf), -expected_errno); \
} 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..fec65dd8 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,11 +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);
- if (ret < 0)
- ret = -errno;
+ ret = __gem_execbuf(fd, &execbuf);
for (n = 0; n < num_exec; n++)
gem_close(fd, gem_exec[n].handle);
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..fa64598a 100644
--- a/tests/gen3_mixed_blits.c
+++ b/tests/gen3_mixed_blits.c
@@ -88,7 +88,6 @@ render_copy(int fd,
struct drm_i915_gem_execbuffer2 exec;
uint32_t handle;
uint32_t tiling_bits;
- int ret;
/* invariant state */
*b++ = (_3DSTATE_AA_CMD |
@@ -310,12 +309,7 @@ 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) {
- drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
- ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
- }
- igt_assert_eq(ret, 0);
+ gem_execbuf(fd, &exec);
gem_close(fd, handle);
}
@@ -327,7 +321,6 @@ static void blt_copy(int fd, uint32_t dst, uint32_t src)
struct drm_i915_gem_exec_object2 obj[3];
struct drm_i915_gem_execbuffer2 exec;
uint32_t handle;
- int ret;
*b++ = (XY_SRC_COPY_BLT_CMD |
XY_SRC_COPY_BLT_WRITE_ALPHA |
@@ -388,12 +381,7 @@ 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);
- while (ret && errno == EBUSY) {
- drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
- ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
- }
- igt_assert_eq(ret, 0);
+ gem_execbuf(fd, &exec);
gem_close(fd, handle);
}
diff --git a/tests/gen3_render_linear_blits.c b/tests/gen3_render_linear_blits.c
index e56bff93..a03d7fc0 100644
--- a/tests/gen3_render_linear_blits.c
+++ b/tests/gen3_render_linear_blits.c
@@ -85,7 +85,6 @@ copy(int fd, uint32_t dst, uint32_t src)
struct drm_i915_gem_exec_object2 obj[3];
struct drm_i915_gem_execbuffer2 exec;
uint32_t handle;
- int ret;
/* invariant state */
*b++ = (_3DSTATE_AA_CMD |
@@ -280,12 +279,7 @@ 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) {
- drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
- ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
- }
- igt_assert_eq(ret, 0);
+ gem_execbuf(fd, &exec);
gem_close(fd, handle);
}
diff --git a/tests/gen3_render_mixed_blits.c b/tests/gen3_render_mixed_blits.c
index 6cc8d056..2f127d99 100644
--- a/tests/gen3_render_mixed_blits.c
+++ b/tests/gen3_render_mixed_blits.c
@@ -87,7 +87,6 @@ copy(int fd,
struct drm_i915_gem_execbuffer2 exec;
uint32_t handle;
uint32_t tiling_bits;
- int ret;
/* invariant state */
*b++ = (_3DSTATE_AA_CMD |
@@ -293,12 +292,7 @@ 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) {
- drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
- ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
- }
- igt_assert_eq(ret, 0);
+ gem_execbuf(fd, &exec);
gem_close(fd, handle);
}
diff --git a/tests/gen3_render_tiledx_blits.c b/tests/gen3_render_tiledx_blits.c
index 6706d3a3..06cdda38 100644
--- a/tests/gen3_render_tiledx_blits.c
+++ b/tests/gen3_render_tiledx_blits.c
@@ -84,7 +84,6 @@ copy(int fd, uint32_t dst, uint32_t src)
struct drm_i915_gem_exec_object2 obj[3];
struct drm_i915_gem_execbuffer2 exec;
uint32_t handle;
- int ret;
/* invariant state */
*b++ = (_3DSTATE_AA_CMD |
@@ -280,12 +279,7 @@ 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) {
- drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
- ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
- }
- igt_assert_eq(ret, 0);
+ gem_execbuf(fd, &exec);
gem_close(fd, handle);
}
diff --git a/tests/gen3_render_tiledy_blits.c b/tests/gen3_render_tiledy_blits.c
index 44e88d4d..9e4f4b77 100644
--- a/tests/gen3_render_tiledy_blits.c
+++ b/tests/gen3_render_tiledy_blits.c
@@ -84,7 +84,6 @@ copy(int fd, uint32_t dst, uint32_t src)
struct drm_i915_gem_exec_object2 obj[3];
struct drm_i915_gem_execbuffer2 exec;
uint32_t handle;
- int ret;
/* invariant state */
*b++ = (_3DSTATE_AA_CMD |
@@ -280,12 +279,7 @@ 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) {
- drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
- ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
- }
- igt_assert_eq(ret, 0);
+ gem_execbuf(fd, &exec);
gem_close(fd, handle);
}
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
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev4)
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (16 preceding siblings ...)
2018-02-22 21:40 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev3) Patchwork
@ 2018-02-23 1:45 ` Patchwork
2018-02-23 4:47 ` [igt-dev] ✓ Fi.CI.IGT: success for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev3) Patchwork
2018-02-23 8:19 ` [igt-dev] ✗ Fi.CI.IGT: warning for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev4) Patchwork
19 siblings, 0 replies; 31+ messages in thread
From: Patchwork @ 2018-02-23 1:45 UTC (permalink / raw)
To: Antonio Argenziano; +Cc: igt-dev
== Series Details ==
Series: series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev4)
URL : https://patchwork.freedesktop.org/series/38730/
State : success
== Summary ==
IGT patchset tested on top of latest successful build
e2e2b4c4d11a1aed2af1079c914e76df4eddbe76 igt: Add VC4 purgeable BO tests
with latest DRM-Tip kernel build CI_DRM_3827
f57b51c21b83 drm-tip: 2018y-02m-22d-23h-14m-05s UTC integration manifest
No testlist changes.
Test kms_pipe_crc_basic:
Subgroup suspend-read-crc-pipe-b:
pass -> INCOMPLETE (fi-snb-2520m) fdo#103713
fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
fi-bdw-5557u total:288 pass:267 dwarn:0 dfail:0 fail:0 skip:21 time:421s
fi-bdw-gvtdvm total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:426s
fi-blb-e6850 total:288 pass:223 dwarn:1 dfail:0 fail:0 skip:64 time:375s
fi-bsw-n3050 total:288 pass:242 dwarn:0 dfail:0 fail:0 skip:46 time:489s
fi-bwr-2160 total:288 pass:183 dwarn:0 dfail:0 fail:0 skip:105 time:285s
fi-bxt-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:478s
fi-bxt-j4205 total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:487s
fi-byt-j1900 total:288 pass:253 dwarn:0 dfail:0 fail:0 skip:35 time:470s
fi-byt-n2820 total:288 pass:249 dwarn:0 dfail:0 fail:0 skip:39 time:458s
fi-cfl-s2 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:565s
fi-elk-e7500 total:288 pass:229 dwarn:0 dfail:0 fail:0 skip:59 time:415s
fi-gdg-551 total:288 pass:179 dwarn:0 dfail:0 fail:1 skip:108 time:288s
fi-glk-1 total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:506s
fi-hsw-4770 total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:385s
fi-ilk-650 total:288 pass:228 dwarn:0 dfail:0 fail:0 skip:60 time:412s
fi-ivb-3520m total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:442s
fi-ivb-3770 total:288 pass:255 dwarn:0 dfail:0 fail:0 skip:33 time:410s
fi-kbl-7500u total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:455s
fi-kbl-7560u total:288 pass:269 dwarn:0 dfail:0 fail:0 skip:19 time:494s
fi-kbl-7567u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:448s
fi-kbl-r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:497s
fi-pnv-d510 total:288 pass:222 dwarn:1 dfail:0 fail:0 skip:65 time:591s
fi-skl-6260u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:430s
fi-skl-6600u total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:502s
fi-skl-6700hq total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:518s
fi-skl-6700k2 total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:489s
fi-skl-6770hq total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:474s
fi-skl-guc total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:404s
fi-skl-gvtdvm total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:430s
fi-snb-2520m total:245 pass:211 dwarn:0 dfail:0 fail:0 skip:33
fi-snb-2600 total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:395s
Blacklisted hosts:
fi-cfl-8700k total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:393s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_992/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev3)
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (17 preceding siblings ...)
2018-02-23 1:45 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev4) Patchwork
@ 2018-02-23 4:47 ` Patchwork
2018-02-23 8:19 ` [igt-dev] ✗ Fi.CI.IGT: warning for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev4) Patchwork
19 siblings, 0 replies; 31+ messages in thread
From: Patchwork @ 2018-02-23 4:47 UTC (permalink / raw)
To: Antonio Argenziano; +Cc: igt-dev
== Series Details ==
Series: series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev3)
URL : https://patchwork.freedesktop.org/series/38730/
State : success
== Summary ==
Test kms_rotation_crc:
Subgroup sprite-rotation-180:
pass -> FAIL (shard-snb) fdo#103925 +1
Test kms_flip:
Subgroup 2x-wf_vblank-ts-check:
fail -> PASS (shard-hsw) fdo#100368 +2
Test kms_sysfs_edid_timing:
pass -> WARN (shard-apl) fdo#100047
Test kms_cursor_crc:
Subgroup cursor-64x64-suspend:
pass -> INCOMPLETE (shard-hsw) fdo#103540
Subgroup cursor-256x256-suspend:
pass -> SKIP (shard-snb) fdo#103375
Test kms_frontbuffer_tracking:
Subgroup fbc-1p-primscrn-indfb-msflip-blt:
fail -> PASS (shard-apl) fdo#103167
Test kms_flip_tiling:
Subgroup flip-to-yf-tiled:
fail -> PASS (shard-apl) fdo#103822
fdo#103925 https://bugs.freedesktop.org/show_bug.cgi?id=103925
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#100047 https://bugs.freedesktop.org/show_bug.cgi?id=100047
fdo#103540 https://bugs.freedesktop.org/show_bug.cgi?id=103540
fdo#103375 https://bugs.freedesktop.org/show_bug.cgi?id=103375
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#103822 https://bugs.freedesktop.org/show_bug.cgi?id=103822
shard-apl total:3465 pass:1820 dwarn:1 dfail:0 fail:12 skip:1631 time:12412s
shard-hsw total:3391 pass:1735 dwarn:1 dfail:0 fail:3 skip:1650 time:11309s
shard-snb total:3465 pass:1355 dwarn:1 dfail:0 fail:4 skip:2105 time:6514s
Blacklisted hosts:
shard-kbl total:3465 pass:1925 dwarn:38 dfail:1 fail:13 skip:1488 time:9497s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_991/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* [igt-dev] ✗ Fi.CI.IGT: warning for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev4)
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
` (18 preceding siblings ...)
2018-02-23 4:47 ` [igt-dev] ✓ Fi.CI.IGT: success for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev3) Patchwork
@ 2018-02-23 8:19 ` Patchwork
19 siblings, 0 replies; 31+ messages in thread
From: Patchwork @ 2018-02-23 8:19 UTC (permalink / raw)
To: Antonio Argenziano; +Cc: igt-dev
== Series Details ==
Series: series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev4)
URL : https://patchwork.freedesktop.org/series/38730/
State : warning
== Summary ==
Test kms_flip:
Subgroup 2x-plain-flip-fb-recreate-interruptible:
fail -> PASS (shard-hsw) fdo#100368 +1
Subgroup dpms-vs-vblank-race:
pass -> FAIL (shard-hsw) fdo#103060 +1
Test gem_eio:
Subgroup in-flight-contexts:
incomplete -> PASS (shard-apl) fdo#104945
Test kms_plane:
Subgroup plane-panning-bottom-right-pipe-b-planes:
pass -> SKIP (shard-snb)
Test kms_plane_lowres:
Subgroup pipe-a-tiling-none:
pass -> SKIP (shard-snb)
Test kms_rotation_crc:
Subgroup sprite-rotation-180:
pass -> FAIL (shard-hsw) fdo#103925
Test kms_cursor_crc:
Subgroup cursor-64x64-suspend:
pass -> SKIP (shard-snb) fdo#102365 +1
Test gem_pwrite:
Subgroup big-cpu-backwards:
pass -> SKIP (shard-apl)
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#103060 https://bugs.freedesktop.org/show_bug.cgi?id=103060
fdo#104945 https://bugs.freedesktop.org/show_bug.cgi?id=104945
fdo#103925 https://bugs.freedesktop.org/show_bug.cgi?id=103925
fdo#102365 https://bugs.freedesktop.org/show_bug.cgi?id=102365
shard-apl total:3465 pass:1819 dwarn:1 dfail:0 fail:13 skip:1632 time:12483s
shard-hsw total:3465 pass:1766 dwarn:1 dfail:0 fail:4 skip:1693 time:11534s
shard-snb total:3465 pass:1354 dwarn:1 dfail:0 fail:2 skip:2108 time:6571s
Blacklisted hosts:
shard-kbl total:3423 pass:1942 dwarn:1 dfail:0 fail:14 skip:1465 time:9304s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_992/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v3] igt: Use lib gem_execbuf where possible
2018-02-23 0:54 ` [igt-dev] [PATCH i-g-t v3] " Antonio Argenziano
@ 2018-02-23 9:21 ` Chris Wilson
2018-02-23 10:01 ` Chris Wilson
0 siblings, 1 reply; 31+ messages in thread
From: Chris Wilson @ 2018-02-23 9:21 UTC (permalink / raw)
To: Antonio Argenziano, igt-dev
Quoting Antonio Argenziano (2018-02-23 00:54:38)
> diff --git a/tests/gem_exec_fence.c b/tests/gem_exec_fence.c
> index b415199f..9d95c982 100644
> --- a/tests/gem_exec_fence.c
> +++ b/tests/gem_exec_fence.c
> @@ -565,7 +553,7 @@ static void test_keep_in_fence(int fd, unsigned int engine, unsigned int flags)
> last = -1;
> count = 0;
> do {
> - int err = __execbuf(fd, &execbuf);
> + int err = __gem_execbuf_wr(fd, &execbuf);
Darn. But this still calls drmIoctl() and we need the EINTR escape.
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v4 02/11] lib/igt_gt: add intel_measure_ring_size
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 02/11] lib/igt_gt: add intel_measure_ring_size Antonio Argenziano
@ 2018-02-23 9:29 ` Chris Wilson
2018-02-23 23:16 ` Antonio Argenziano
0 siblings, 1 reply; 31+ messages in thread
From: Chris Wilson @ 2018-02-23 9:29 UTC (permalink / raw)
To: Antonio Argenziano, igt-dev
Quoting Antonio Argenziano (2018-02-21 23:19:38)
> +unsigned int
> +gem_measure_ring_inflight(int fd, unsigned int engine, enum measure_ring_flags flags)
> +{
> + struct sigaction old_sa, sa = { .sa_handler = alarm_handler };
> + struct drm_i915_gem_exec_object2 obj[2];
> + struct drm_i915_gem_execbuffer2 execbuf;
> + const uint32_t bbe = MI_BATCH_BUFFER_END;
> + unsigned int count, last;
> + struct itimerval itv;
> + IGT_CORK_HANDLE(cork);
An improvement we can make here is to iterate over all engines and
report the minimum ring size (for engine==-1). Something like,
if (engine == ~0u) {
unsigned int min = ~0u;
for_each_physical_engine(fd, engine) {
unsigned int this = gem_measure_ring_inflight(fd, engine, flags);
if (this < min)
min = this;
}
return min;
}
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v3] igt: Use lib gem_execbuf where possible
2018-02-23 9:21 ` Chris Wilson
@ 2018-02-23 10:01 ` Chris Wilson
2018-02-23 16:17 ` Antonio Argenziano
0 siblings, 1 reply; 31+ messages in thread
From: Chris Wilson @ 2018-02-23 10:01 UTC (permalink / raw)
To: Antonio Argenziano, igt-dev
Quoting Chris Wilson (2018-02-23 09:21:11)
> Quoting Antonio Argenziano (2018-02-23 00:54:38)
> > diff --git a/tests/gem_exec_fence.c b/tests/gem_exec_fence.c
> > index b415199f..9d95c982 100644
> > --- a/tests/gem_exec_fence.c
> > +++ b/tests/gem_exec_fence.c
> > @@ -565,7 +553,7 @@ static void test_keep_in_fence(int fd, unsigned int engine, unsigned int flags)
> > last = -1;
> > count = 0;
> > do {
> > - int err = __execbuf(fd, &execbuf);
> > + int err = __gem_execbuf_wr(fd, &execbuf);
>
> Darn. But this still calls drmIoctl() and we need the EINTR escape.
Dropped the hunks to gem_exec_fence and pushed. Thanks!
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v3] igt: Use lib gem_execbuf where possible
2018-02-23 10:01 ` Chris Wilson
@ 2018-02-23 16:17 ` Antonio Argenziano
0 siblings, 0 replies; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-23 16:17 UTC (permalink / raw)
To: Chris Wilson, igt-dev
On 23/02/18 02:01, Chris Wilson wrote:
> Quoting Chris Wilson (2018-02-23 09:21:11)
>> Quoting Antonio Argenziano (2018-02-23 00:54:38)
>>> diff --git a/tests/gem_exec_fence.c b/tests/gem_exec_fence.c
>>> index b415199f..9d95c982 100644
>>> --- a/tests/gem_exec_fence.c
>>> +++ b/tests/gem_exec_fence.c
>>> @@ -565,7 +553,7 @@ static void test_keep_in_fence(int fd, unsigned int engine, unsigned int flags)
>>> last = -1;
>>> count = 0;
>>> do {
>>> - int err = __execbuf(fd, &execbuf);
>>> + int err = __gem_execbuf_wr(fd, &execbuf);
>>
>> Darn. But this still calls drmIoctl() and we need the EINTR escape.
>
> Dropped the hunks to gem_exec_fence and pushed. Thanks!
Thanks for the reviews :).
Antonio
> -Chris
>
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v4 02/11] lib/igt_gt: add intel_measure_ring_size
2018-02-23 9:29 ` Chris Wilson
@ 2018-02-23 23:16 ` Antonio Argenziano
0 siblings, 0 replies; 31+ messages in thread
From: Antonio Argenziano @ 2018-02-23 23:16 UTC (permalink / raw)
To: Chris Wilson, igt-dev
On 23/02/18 01:29, Chris Wilson wrote:
> Quoting Antonio Argenziano (2018-02-21 23:19:38)
>> +unsigned int
>> +gem_measure_ring_inflight(int fd, unsigned int engine, enum measure_ring_flags flags)
>> +{
>> + struct sigaction old_sa, sa = { .sa_handler = alarm_handler };
>> + struct drm_i915_gem_exec_object2 obj[2];
>> + struct drm_i915_gem_execbuffer2 execbuf;
>> + const uint32_t bbe = MI_BATCH_BUFFER_END;
>> + unsigned int count, last;
>> + struct itimerval itv;
>> + IGT_CORK_HANDLE(cork);
>
> An improvement we can make here is to iterate over all engines and
> report the minimum ring size (for engine==-1). Something like,
Which would make the usage in some tests more correct. I'll add it to my
TODO list.
Thanks,
Antonio
>
> if (engine == ~0u) {
> unsigned int min = ~0u;
>
> for_each_physical_engine(fd, engine) {
> unsigned int this = gem_measure_ring_inflight(fd, engine, flags);
> if (this < min)
> min = this;
> }
>
> return min;
> }
> -Chris
>
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 31+ messages in thread
end of thread, other threads:[~2018-02-23 23:16 UTC | newest]
Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-21 23:19 [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 02/11] lib/igt_gt: add intel_measure_ring_size Antonio Argenziano
2018-02-23 9:29 ` Chris Wilson
2018-02-23 23:16 ` Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 03/11] tests/gem_exec_schedule: use new common functions Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 04/11] tests/gem_exec_fence: " Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 05/11] tests/gem_exec_latency: " Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 06/11] tests/gem_wait: use igt_cork Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 07/11] tests/gem_eio: " Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 08/11] tests/gem_exec_await: use intel_measure_ring_size Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 09/11] tests/gem_ringfill: " Antonio Argenziano
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 10/11] tests/gem_busy: Use intel_measure_ring_size Antonio Argenziano
2018-02-21 23:39 ` Chris Wilson
2018-02-21 23:19 ` [igt-dev] [PATCH i-g-t v4 11/11] igt: Use lib gem_execbuf where possible Antonio Argenziano
2018-02-21 23:42 ` Chris Wilson
2018-02-23 0:54 ` [igt-dev] [PATCH i-g-t v3] " Antonio Argenziano
2018-02-23 9:21 ` Chris Wilson
2018-02-23 10:01 ` Chris Wilson
2018-02-23 16:17 ` Antonio Argenziano
2018-02-21 23:26 ` [igt-dev] [PATCH i-g-t v4 01/11] lib/igt_dummyload: add igt_cork Chris Wilson
2018-02-22 0:17 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v4,01/11] " Patchwork
2018-02-22 0:31 ` [igt-dev] [PATCH i-g-t v5] " Antonio Argenziano
2018-02-22 0:46 ` Chris Wilson
2018-02-22 17:35 ` [igt-dev] [PATCH i-g-t v6] " Antonio Argenziano
2018-02-22 0:52 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v5] lib/igt_dummyload: add igt_cork (rev2) Patchwork
2018-02-22 4:47 ` [igt-dev] ✓ Fi.CI.IGT: success for series starting with [i-g-t,v4,01/11] lib/igt_dummyload: add igt_cork Patchwork
2018-02-22 5:57 ` [igt-dev] ✗ Fi.CI.IGT: failure for series starting with [i-g-t,v5] lib/igt_dummyload: add igt_cork (rev2) Patchwork
2018-02-22 21:40 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev3) Patchwork
2018-02-23 1:45 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev4) Patchwork
2018-02-23 4:47 ` [igt-dev] ✓ Fi.CI.IGT: success for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev3) Patchwork
2018-02-23 8:19 ` [igt-dev] ✗ Fi.CI.IGT: warning for series starting with [i-g-t,v6] lib/igt_dummyload: add igt_cork (rev4) 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.