* [igt-dev] [RFC 0/2] new engine discovery interface
@ 2018-11-19 15:55 Andi Shyti
2018-11-19 15:55 ` [igt-dev] [RFC 1/2] include/drm-uapi: import i915_drm.h header file Andi Shyti
` (3 more replies)
0 siblings, 4 replies; 18+ messages in thread
From: Andi Shyti @ 2018-11-19 15:55 UTC (permalink / raw)
To: IGT dev; +Cc: Tvrtko Ursulin, Andi Shyti
Hi,
this is a request for comments for the new engine discovery
interface developed by Tvrtko and Chris[*].
I would like to receive some feedback about its implementation
and whether the libraries are implemented following the igt
style.
Perhaps Tvrtko and Chris could check if I'm making a proper use
of their new ioctls.
Thanks,
Andi
Andi Shyti (2):
include/drm-uapi: import i915_drm.h header file
lib: implement new engine discovery interface
include/drm-uapi/i915_drm.h | 239 +++++++++++++++++++++++++++++++++++-
lib/igt_gt.c | 89 ++++++++++++++
lib/igt_gt.h | 6 +
lib/ioctl_wrappers.c | 25 ++++
lib/ioctl_wrappers.h | 1 +
5 files changed, 358 insertions(+), 2 deletions(-)
--
2.19.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread* [igt-dev] [RFC 1/2] include/drm-uapi: import i915_drm.h header file
2018-11-19 15:55 [igt-dev] [RFC 0/2] new engine discovery interface Andi Shyti
@ 2018-11-19 15:55 ` Andi Shyti
2018-11-19 15:55 ` [igt-dev] [RFC 2/2] lib: implement new engine discovery interface Andi Shyti
` (2 subsequent siblings)
3 siblings, 0 replies; 18+ messages in thread
From: Andi Shyti @ 2018-11-19 15:55 UTC (permalink / raw)
To: IGT dev; +Cc: Tvrtko Ursulin, Andi Shyti
This header file is imported in order to include the two new
ioctls DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM and
DRM_IOCTL_I915_QUERY. They are not based on a latest version of
the branch, but based on the
git://people.freedesktop.org/~tursulin/drm-intel
tree, "media" branch. In this RFC it's just to give a meaning to
the next patch.
Signed-off-by: Andi Shyti <andi.shyti@intel.com>
---
include/drm-uapi/i915_drm.h | 239 +++++++++++++++++++++++++++++++++++-
1 file changed, 237 insertions(+), 2 deletions(-)
diff --git a/include/drm-uapi/i915_drm.h b/include/drm-uapi/i915_drm.h
index 16e452aa..b14ca969 100644
--- a/include/drm-uapi/i915_drm.h
+++ b/include/drm-uapi/i915_drm.h
@@ -62,6 +62,26 @@ extern "C" {
#define I915_ERROR_UEVENT "ERROR"
#define I915_RESET_UEVENT "RESET"
+/*
+ * i915_user_extension: Base class for defining a chain of extensions
+ *
+ * Many interfaces need to grow over time. In most cases we can simply
+ * extend the struct and have userspace pass in more data. Another option,
+ * as demonstrated by Vulkan's approach to providing extensions for forward
+ * and backward compatibility, is to use a list of optional structs to
+ * provide those extra details.
+ *
+ * The key advantage to using an extension chain is that it allows us to
+ * redefine the interface more easily than an ever growing struct of
+ * increasing complexity, and for large parts of that interface to be
+ * entirely optional. The downside is more pointer chasing; chasing across
+ * the boundary with pointers encapsulated inside u64.
+ */
+struct i915_user_extension {
+ __u64 next_extension;
+ __u64 name;
+};
+
/*
* MOCS indexes used for GPU surfaces, defining the cacheability of the
* surface data and the coherency for this data wrt. CPU vs. GPU accesses.
@@ -367,6 +387,7 @@ typedef struct _drm_i915_sarea {
#define DRM_IOCTL_I915_GET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey)
#define DRM_IOCTL_I915_GEM_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_WAIT, struct drm_i915_gem_wait)
#define DRM_IOCTL_I915_GEM_CONTEXT_CREATE DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_CREATE, struct drm_i915_gem_context_create)
+#define DRM_IOCTL_I915_GEM_CONTEXT_CREATE_v2 DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_CREATE, struct drm_i915_gem_context_create_v2)
#define DRM_IOCTL_I915_GEM_CONTEXT_DESTROY DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_DESTROY, struct drm_i915_gem_context_destroy)
#define DRM_IOCTL_I915_REG_READ DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_REG_READ, struct drm_i915_reg_read)
#define DRM_IOCTL_I915_GET_RESET_STATS DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GET_RESET_STATS, struct drm_i915_reset_stats)
@@ -412,6 +433,14 @@ typedef struct drm_i915_irq_wait {
int irq_seq;
} drm_i915_irq_wait_t;
+/*
+ * Different modes of per-process Graphics Translation Table,
+ * see I915_PARAM_HAS_ALIASING_PPGTT
+ */
+#define I915_GEM_PPGTT_NONE 0
+#define I915_GEM_PPGTT_ALIASING 1
+#define I915_GEM_PPGTT_FULL 2
+
/* Ioctl to query kernel params:
*/
#define I915_PARAM_IRQ_ACTIVE 1
@@ -529,6 +558,35 @@ typedef struct drm_i915_irq_wait {
*/
#define I915_PARAM_CS_TIMESTAMP_FREQUENCY 51
+/*
+ * Once upon a time we supposed that writes through the GGTT would be
+ * immediately in physical memory (once flushed out of the CPU path). However,
+ * on a few different processors and chipsets, this is not necessarily the case
+ * as the writes appear to be buffered internally. Thus a read of the backing
+ * storage (physical memory) via a different path (with different physical tags
+ * to the indirect write via the GGTT) will see stale values from before
+ * the GGTT write. Inside the kernel, we can for the most part keep track of
+ * the different read/write domains in use (e.g. set-domain), but the assumption
+ * of coherency is baked into the ABI, hence reporting its true state in this
+ * parameter.
+ *
+ * Reports true when writes via mmap_gtt are immediately visible following an
+ * lfence to flush the WCB.
+ *
+ * Reports false when writes via mmap_gtt are indeterminately delayed in an in
+ * internal buffer and are _not_ immediately visible to third parties accessing
+ * directly via mmap_cpu/mmap_wc. Use of mmap_gtt as part of an IPC
+ * communications channel when reporting false is strongly disadvised.
+ */
+#define I915_PARAM_MMAP_GTT_COHERENT 52
+
+/*
+ * Query whether DRM_I915_GEM_EXECBUFFER2 supports coordination of parallel
+ * execution through use of explicit fence support.
+ * See I915_EXEC_FENCE_OUT and I915_EXEC_FENCE_SUBMIT.
+ */
+#define I915_PARAM_HAS_EXEC_SUBMIT_FENCE 53
+
typedef struct drm_i915_getparam {
__s32 param;
/*
@@ -942,7 +1000,7 @@ struct drm_i915_gem_execbuffer2 {
* struct drm_i915_gem_exec_fence *fences.
*/
__u64 cliprects_ptr;
-#define I915_EXEC_RING_MASK (7<<0)
+#define I915_EXEC_RING_MASK (0x3f)
#define I915_EXEC_DEFAULT (0<<0)
#define I915_EXEC_RENDER (1<<0)
#define I915_EXEC_BSD (2<<0)
@@ -1048,7 +1106,16 @@ struct drm_i915_gem_execbuffer2 {
*/
#define I915_EXEC_FENCE_ARRAY (1<<19)
-#define __I915_EXEC_UNKNOWN_FLAGS (-(I915_EXEC_FENCE_ARRAY<<1))
+/*
+ * Setting I915_EXEC_FENCE_SUBMIT implies that lower_32_bits(rsvd2) represent
+ * a sync_file fd to wait upon (in a nonblocking manner) prior to executing
+ * the batch.
+ *
+ * Returns -EINVAL if the sync_file fd cannot be found.
+ */
+#define I915_EXEC_FENCE_SUBMIT (1<<20)
+
+#define __I915_EXEC_UNKNOWN_FLAGS (-(I915_EXEC_FENCE_SUBMIT<<1))
#define I915_EXEC_CONTEXT_ID_MASK (0xffffffff)
#define i915_execbuffer2_set_context_id(eb2, context) \
@@ -1387,6 +1454,16 @@ struct drm_i915_gem_context_create {
__u32 pad;
};
+struct drm_i915_gem_context_create_v2 {
+ /* output: id of new context*/
+ __u32 ctx_id;
+ __u32 flags;
+#define I915_GEM_CONTEXT_SHARE_GTT 0x1
+#define I915_GEM_CONTEXT_SINGLE_TIMELINE 0x2
+ __u32 share_ctx;
+ __u32 pad;
+};
+
struct drm_i915_gem_context_destroy {
__u32 ctx_id;
__u32 pad;
@@ -1456,9 +1533,122 @@ struct drm_i915_gem_context_param {
#define I915_CONTEXT_MAX_USER_PRIORITY 1023 /* inclusive */
#define I915_CONTEXT_DEFAULT_PRIORITY 0
#define I915_CONTEXT_MIN_USER_PRIORITY -1023 /* inclusive */
+
+/*
+ * I915_CONTEXT_PARAM_ENGINES:
+ *
+ * Bind this context to operate on this subset of available engines. Henceforth,
+ * the I915_EXEC_RING selector for DRM_IOCTL_I915_GEM_EXECBUFFER2 operates as
+ * an index into this array of engines; I915_EXEC_DEFAULT selecting engine[0]
+ * and upwards. The array created is offset by 1, such that by default
+ * I915_EXEC_DEFAULT is left empty, to be filled in as directed. Slots 1...N
+ * are then filled in using the specified (class, instance).
+ *
+ * Setting the number of engines bound to the context will revert back to
+ * default settings.
+ *
+ * See struct i915_context_param_engines.
+ *
+ * Extensions:
+ * i915_context_engines_load_balance (I915_CONTEXT_ENGINES_EXT_LOAD_BALANCE)
+ * i915_context_engines_bond (I915_CONTEXT_ENGINES_EXT_BOND)
+ */
+#define I915_CONTEXT_PARAM_ENGINES 0x7
+
+/*
+ * When using the following param, value should be a pointer to
+ * drm_i915_gem_context_param_sseu.
+ */
+#define I915_CONTEXT_PARAM_SSEU 0x8
+
__u64 value;
};
+/*
+ * i915_context_engines_load_balance:
+ *
+ * Enable load balancing across this set of engines.
+ *
+ * Into the I915_EXEC_DEFAULT slot, a virtual engine is created that when
+ * used will proxy the execbuffer request onto one of the set of engines
+ * in such a way as to distribute the load evenly across the set.
+ *
+ * The set of engines must be compatible (e.g. the same HW class) as they
+ * will share the same logical GPU context and ring.
+ *
+ * The context must be defined to use a single timeline for all engines.
+ */
+struct i915_context_engines_load_balance {
+ struct i915_user_extension base;
+
+ __u64 flags; /* all undefined flags must be zero */
+ __u64 engines_mask;
+
+ __u64 mbz[4]; /* reserved for future use; must be zero */
+};
+
+/*
+ * i915_context_engines_bond:
+ *
+ */
+struct i915_context_engines_bond {
+ struct i915_user_extension base;
+
+ __u16 master_class;
+ __u16 master_instance;
+ __u32 flags; /* all undefined flags must be zero */
+ __u64 sibling_mask;
+};
+
+struct i915_context_param_engines {
+ __u64 extensions;
+#define I915_CONTEXT_ENGINES_EXT_LOAD_BALANCE 0
+#define I915_CONTEXT_ENGINES_EXT_BOND 1
+
+ struct {
+ __u16 class; /* see enum drm_i915_gem_engine_class */
+ __u16 instance;
+ } class_instance[0];
+};
+
+struct drm_i915_gem_context_param_sseu {
+ /*
+ * Engine class & instance to be configured or queried.
+ */
+ __u16 class;
+ __u16 instance;
+
+ /*
+ * Unused for now. Must be cleared to zero.
+ */
+ __u32 rsvd1;
+
+ /*
+ * Mask of slices to enable for the context. Valid values are a subset
+ * of the bitmask value returned for I915_PARAM_SLICE_MASK.
+ */
+ __u64 slice_mask;
+
+ /*
+ * Mask of subslices to enable for the context. Valid values are a
+ * subset of the bitmask value return by I915_PARAM_SUBSLICE_MASK.
+ */
+ __u64 subslice_mask;
+
+ /*
+ * Minimum/Maximum number of EUs to enable per subslice for the
+ * context. min_eus_per_subslice must be inferior or equal to
+ * max_eus_per_subslice.
+ */
+ __u16 min_eus_per_subslice;
+ __u16 max_eus_per_subslice;
+
+ /*
+ * Unused for now. Must be cleared to zero.
+ */
+ __u32 rsvd2;
+};
+
enum drm_i915_oa_format {
I915_OA_FORMAT_A13 = 1, /* HSW only */
I915_OA_FORMAT_A29, /* HSW only */
@@ -1620,6 +1810,7 @@ struct drm_i915_perf_oa_config {
struct drm_i915_query_item {
__u64 query_id;
#define DRM_I915_QUERY_TOPOLOGY_INFO 1
+#define DRM_I915_QUERY_ENGINE_INFO 2
/*
* When set to zero by userspace, this is filled with the size of the
@@ -1717,6 +1908,50 @@ struct drm_i915_query_topology_info {
__u8 data[];
};
+/**
+ * struct drm_i915_engine_info
+ *
+ * Describes one engine and it's capabilities as known to the driver.
+ */
+struct drm_i915_engine_info {
+ /** Engine class as in enum drm_i915_gem_engine_class. */
+ __u16 class;
+
+ /** Engine instance number. */
+ __u16 instance;
+
+ /** Reserved field. */
+ __u32 rsvd0;
+
+ /** Engine flags. */
+ __u64 flags;
+
+ /** Capabilities of this engine. */
+ __u64 capabilities;
+#define I915_VIDEO_CLASS_CAPABILITY_HEVC (1 << 0)
+#define I915_VIDEO_AND_ENHANCE_CLASS_CAPABILITY_SFC (1 << 1)
+
+ /** Reserved fields. */
+ __u64 rsvd1[4];
+};
+
+/**
+ * struct drm_i915_query_engine_info
+ *
+ * Engine info query enumerates all engines known to the driver by filling in
+ * an array of struct drm_i915_engine_info structures.
+ */
+struct drm_i915_query_engine_info {
+ /** Number of struct drm_i915_engine_info structs following. */
+ __u32 num_engines;
+
+ /** MBZ */
+ __u32 rsvd[3];
+
+ /** Marker for drm_i915_engine_info structures. */
+ struct drm_i915_engine_info engines[];
+};
+
#if defined(__cplusplus)
}
#endif
--
2.19.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 18+ messages in thread* [igt-dev] [RFC 2/2] lib: implement new engine discovery interface
2018-11-19 15:55 [igt-dev] [RFC 0/2] new engine discovery interface Andi Shyti
2018-11-19 15:55 ` [igt-dev] [RFC 1/2] include/drm-uapi: import i915_drm.h header file Andi Shyti
@ 2018-11-19 15:55 ` Andi Shyti
2018-11-19 19:59 ` Tvrtko Ursulin
2018-11-19 17:22 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2018-11-19 22:31 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
3 siblings, 1 reply; 18+ messages in thread
From: Andi Shyti @ 2018-11-19 15:55 UTC (permalink / raw)
To: IGT dev; +Cc: Tvrtko Ursulin, Andi Shyti
Kernel commits:
[1] ae8f4544dd8f ("drm/i915: Engine discovery query")
[2] 31e7d35667a0 ("drm/i915: Allow a context to define its set of engines")
from [*] repository, implement a new way uapi for engine
discovery that consist in first coupling context with engine [2]
and then query the engines through a specific structure [1].
In igt the classic way for discovering engines is done trhough
the for_each_physical_engine() macro, that is replaced by the
new for_each_engine_ctx().
The new engine discovery macro requires, though, to first bind a
context to the engines and the unbind it:
Here's an example of usage:
int main(void)
{
int fd;
uint32_t n, ctx_id, e;
fd = drm_open_driver(DRIVER_INTEL);
if(bind_ctx_to_engine(fd, &n, &ctx_id))
goto out;
for_each_engine_ctx(fd, n, ctx_id, e)
printf("%d OK:\n", e+1);
unbind_ctx_from_engine(fd, ctx_id);
out:
close(fd);
return 0;
}
[*] git://people.freedesktop.org/~tursulin/drm-intel
Signed-off-by: Andi Shyti <andi.shyti@intel.com>
---
lib/igt_gt.c | 89 ++++++++++++++++++++++++++++++++++++++++++++
lib/igt_gt.h | 6 +++
lib/ioctl_wrappers.c | 25 +++++++++++++
lib/ioctl_wrappers.h | 1 +
4 files changed, 121 insertions(+)
diff --git a/lib/igt_gt.c b/lib/igt_gt.c
index a2061924..bafe1f86 100644
--- a/lib/igt_gt.c
+++ b/lib/igt_gt.c
@@ -650,3 +650,92 @@ bool gem_ring_has_physical_engine(int fd, unsigned ring)
return gem_has_ring(fd, ring);
}
+
+static struct drm_i915_query_engine_info *__query_engines(int fd)
+{
+ struct drm_i915_query query;
+ struct drm_i915_query_item item;
+ struct drm_i915_query_engine_info *query_engines;
+ ssize_t size = sizeof(*query_engines) + 10 * sizeof(*query_engines->engines);
+ int err;
+
+ query_engines = malloc(size);
+ if (!query_engines)
+ return NULL;
+
+ memset(&query, 0, sizeof(query));
+ memset(&item, 0, sizeof(item));
+ memset(query_engines, 0, sizeof(*query_engines));
+
+ item.query_id = DRM_I915_QUERY_ENGINE_INFO;
+ item.length = size;
+ item.flags = 0;
+ item.data_ptr = to_user_pointer(query_engines);
+
+ query.items_ptr = to_user_pointer(&item);
+ query.num_items = 1;
+
+ err = igt_ioctl(fd, DRM_IOCTL_I915_QUERY, &query);
+ if (err) {
+ free(query_engines);
+ return NULL;
+ }
+
+ return query_engines;
+}
+
+static int __bind_ctx_to_engine(int fd, unsigned ctx_id,
+ struct drm_i915_query_engine_info *query_engine)
+{
+ int i, ret;
+ struct drm_i915_gem_context_param ctx_param;
+ struct i915_context_param_engines *ctx_engine;
+ size_t size = sizeof(struct i915_context_param_engines) +
+ query_engine->num_engines *
+ sizeof(*ctx_engine->class_instance);
+
+ ctx_engine = malloc(size);
+ if (!ctx_engine)
+ return errno;
+
+ ctx_engine->extensions = 0;
+ for (i = 0; i < query_engine->num_engines; i++) {
+ ctx_engine->class_instance[i].class = query_engine->engines[i].class;
+ ctx_engine->class_instance[i].instance = query_engine->engines[i].instance;
+ }
+
+ ctx_param.ctx_id = ctx_id;
+ ctx_param.size = size;
+ ctx_param.param = I915_CONTEXT_PARAM_ENGINES;
+ ctx_param.value = to_user_pointer(ctx_engine);
+
+ ret = igt_ioctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM, &ctx_param);
+ free(ctx_engine);
+
+ return ret;
+}
+
+int bind_ctx_to_engine(int fd, uint32_t *n, uint32_t *ctx_id)
+{
+ struct drm_i915_query_engine_info *query_engine;
+ int ret;
+
+ query_engine = __query_engines(fd);
+ if (!query_engine)
+ return -1;
+
+ *ctx_id = gem_context_create(fd);
+ ret = __bind_ctx_to_engine(fd, *ctx_id, query_engine);
+ if (ret)
+ return ret;
+
+ *n = query_engine->num_engines;
+ free(query_engine);
+
+ return 0;
+}
+
+void unbind_ctx_from_engine(int fd, uint32_t ctx_id)
+{
+ gem_context_destroy(fd, ctx_id);
+}
diff --git a/lib/igt_gt.h b/lib/igt_gt.h
index 54e95da9..d8937318 100644
--- a/lib/igt_gt.h
+++ b/lib/igt_gt.h
@@ -86,8 +86,14 @@ extern const struct intel_execution_engine {
e__++) \
for_if (gem_ring_has_physical_engine(fd__, flags__ = e__->exec_id | e__->flags))
+#define for_each_engine_ctx(fd, n, id, e) \
+ for (e = 0; e < n; e++) \
+ for_if(gem_has_ring_ctx(fd, e + 1, id))
+
bool gem_ring_is_physical_engine(int fd, unsigned int ring);
bool gem_ring_has_physical_engine(int fd, unsigned int ring);
+int bind_ctx_to_engine(int fd, uint32_t *n, uint32_t *ctx_id);
+void unbind_ctx_from_engine(int fd, uint32_t ctx_id);
bool gem_can_store_dword(int fd, unsigned int engine);
diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
index 9f255508..2115bad1 100644
--- a/lib/ioctl_wrappers.c
+++ b/lib/ioctl_wrappers.c
@@ -1472,6 +1472,31 @@ bool gem_has_ring(int fd, unsigned ring)
return __gem_execbuf(fd, &execbuf) == -ENOENT;
}
+bool gem_has_ring_ctx(int fd, unsigned ring, unsigned ctx_id)
+{
+ struct drm_i915_gem_execbuffer2 execbuf;
+ struct drm_i915_gem_exec_object2 exec;
+ uint32_t bbend = MI_BATCH_BUFFER_END;
+ int ret;
+
+ memset(&execbuf, 0, sizeof(execbuf));
+ memset(&exec, 0, sizeof(exec));
+
+ exec.handle = gem_create(fd, 4096);
+ gem_write(fd, exec.handle, 0, &bbend, sizeof(bbend));
+
+ execbuf.buffers_ptr = to_user_pointer(&exec);
+ execbuf.buffer_count = 1;
+ execbuf.flags = ring;
+ i915_execbuffer2_set_context_id(execbuf, ctx_id);
+
+ ret = __gem_execbuf(fd, &execbuf);
+
+ gem_close(fd, exec.handle);
+
+ return !ret;
+}
+
/**
* gem_require_ring:
* @fd: open i915 drm file descriptor
diff --git a/lib/ioctl_wrappers.h b/lib/ioctl_wrappers.h
index b22b36b0..d4adf912 100644
--- a/lib/ioctl_wrappers.h
+++ b/lib/ioctl_wrappers.h
@@ -165,6 +165,7 @@ bool gem_has_exec_fence(int fd);
/* check functions which auto-skip tests by calling igt_skip() */
void gem_require_caching(int fd);
bool gem_has_ring(int fd, unsigned ring);
+bool gem_has_ring_ctx(int fd, unsigned ring, unsigned ctx_id);
void gem_require_ring(int fd, unsigned ring);
bool gem_has_mocs_registers(int fd);
void gem_require_mocs_registers(int fd);
--
2.19.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [igt-dev] [RFC 2/2] lib: implement new engine discovery interface
2018-11-19 15:55 ` [igt-dev] [RFC 2/2] lib: implement new engine discovery interface Andi Shyti
@ 2018-11-19 19:59 ` Tvrtko Ursulin
2018-11-19 20:38 ` Chris Wilson
2018-11-19 23:33 ` Andi Shyti
0 siblings, 2 replies; 18+ messages in thread
From: Tvrtko Ursulin @ 2018-11-19 19:59 UTC (permalink / raw)
To: Andi Shyti, IGT dev; +Cc: Andi Shyti, Tvrtko Ursulin
On 19/11/2018 15:55, Andi Shyti wrote:
> Kernel commits:
>
> [1] ae8f4544dd8f ("drm/i915: Engine discovery query")
> [2] 31e7d35667a0 ("drm/i915: Allow a context to define its set of engines")
>
> from [*] repository, implement a new way uapi for engine
> discovery that consist in first coupling context with engine [2]
> and then query the engines through a specific structure [1].
>
> In igt the classic way for discovering engines is done trhough
> the for_each_physical_engine() macro, that is replaced by the
> new for_each_engine_ctx().
My idea was that we migrate for_each_physical_engine to this new scheme.
As an easy starting point I was thinking to keep the current
for_each_physical_engine as is, and just add new
for_each_physical_engine_new and migrate one test to it as a demo.
Then when this part is reviewed, as a second step we convert the rest
and rename the macro stripping the _new suffix and nuking the old one.
With regards to implementation details I was thinking along these lines:
On first invocation for_each_physical_engine_new initializes some hidden
data stored in one or more globals (which will live in igt_gt.c).
This would query the engines and create a context with all engines mapped.
We also add a helper to get this internal ctx id to use within
for_each_physical_engine_new loops.
That should make it easy to convert simple tests over like:
igt_subtest {
for_each_physical_engine_new(fd, engine) {
...
execbuf.rsvd1 = gem_physical_engine_ctx();
execbuf.flags = gem_physical_engine_idx(engine);
gem_execbuf(fd, execbuf);
}
}
We also need to think about what kind of helpers would be needed for
tests which use for_each_physical_engine and their own contexts. If such
exist, and I haven't checked, a helper like
gem_setup_context_for_each_physical_engine or something?
eg:
igt_subtest {
unit32_t test_ctx;
...
gem_init_context_for_each_physical_engine(fd, test_ctx);
for_each_physical_engine_new(fd, engine) {
...
execbuf.rsvd1 = test_ctx;
execbuf.flags = gem_physical_engine_idx(engine);
gem_execbuf(fd, execbuf);
}
}
Regards,
Tvrtko
> The new engine discovery macro requires, though, to first bind a
> context to the engines and the unbind it:
>
> Here's an example of usage:
>
> int main(void)
> {
> int fd;
> uint32_t n, ctx_id, e;
>
> fd = drm_open_driver(DRIVER_INTEL);
>
> if(bind_ctx_to_engine(fd, &n, &ctx_id))
> goto out;
>
> for_each_engine_ctx(fd, n, ctx_id, e)
> printf("%d OK:\n", e+1);
>
> unbind_ctx_from_engine(fd, ctx_id);
>
> out:
> close(fd);
>
> return 0;
> }
>
> [*] git://people.freedesktop.org/~tursulin/drm-intel
>
> Signed-off-by: Andi Shyti <andi.shyti@intel.com>
> ---
> lib/igt_gt.c | 89 ++++++++++++++++++++++++++++++++++++++++++++
> lib/igt_gt.h | 6 +++
> lib/ioctl_wrappers.c | 25 +++++++++++++
> lib/ioctl_wrappers.h | 1 +
> 4 files changed, 121 insertions(+)
>
> diff --git a/lib/igt_gt.c b/lib/igt_gt.c
> index a2061924..bafe1f86 100644
> --- a/lib/igt_gt.c
> +++ b/lib/igt_gt.c
> @@ -650,3 +650,92 @@ bool gem_ring_has_physical_engine(int fd, unsigned ring)
>
> return gem_has_ring(fd, ring);
> }
> +
> +static struct drm_i915_query_engine_info *__query_engines(int fd)
> +{
> + struct drm_i915_query query;
> + struct drm_i915_query_item item;
> + struct drm_i915_query_engine_info *query_engines;
> + ssize_t size = sizeof(*query_engines) + 10 * sizeof(*query_engines->engines);
> + int err;
> +
> + query_engines = malloc(size);
> + if (!query_engines)
> + return NULL;
> +
> + memset(&query, 0, sizeof(query));
> + memset(&item, 0, sizeof(item));
> + memset(query_engines, 0, sizeof(*query_engines));
> +
> + item.query_id = DRM_I915_QUERY_ENGINE_INFO;
> + item.length = size;
> + item.flags = 0;
> + item.data_ptr = to_user_pointer(query_engines);
> +
> + query.items_ptr = to_user_pointer(&item);
> + query.num_items = 1;
> +
> + err = igt_ioctl(fd, DRM_IOCTL_I915_QUERY, &query);
> + if (err) {
> + free(query_engines);
> + return NULL;
> + }
> +
> + return query_engines;
> +}
> +
> +static int __bind_ctx_to_engine(int fd, unsigned ctx_id,
> + struct drm_i915_query_engine_info *query_engine)
> +{
> + int i, ret;
> + struct drm_i915_gem_context_param ctx_param;
> + struct i915_context_param_engines *ctx_engine;
> + size_t size = sizeof(struct i915_context_param_engines) +
> + query_engine->num_engines *
> + sizeof(*ctx_engine->class_instance);
> +
> + ctx_engine = malloc(size);
> + if (!ctx_engine)
> + return errno;
> +
> + ctx_engine->extensions = 0;
> + for (i = 0; i < query_engine->num_engines; i++) {
> + ctx_engine->class_instance[i].class = query_engine->engines[i].class;
> + ctx_engine->class_instance[i].instance = query_engine->engines[i].instance;
> + }
> +
> + ctx_param.ctx_id = ctx_id;
> + ctx_param.size = size;
> + ctx_param.param = I915_CONTEXT_PARAM_ENGINES;
> + ctx_param.value = to_user_pointer(ctx_engine);
> +
> + ret = igt_ioctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM, &ctx_param);
> + free(ctx_engine);
> +
> + return ret;
> +}
> +
> +int bind_ctx_to_engine(int fd, uint32_t *n, uint32_t *ctx_id)
> +{
> + struct drm_i915_query_engine_info *query_engine;
> + int ret;
> +
> + query_engine = __query_engines(fd);
> + if (!query_engine)
> + return -1;
> +
> + *ctx_id = gem_context_create(fd);
> + ret = __bind_ctx_to_engine(fd, *ctx_id, query_engine);
> + if (ret)
> + return ret;
> +
> + *n = query_engine->num_engines;
> + free(query_engine);
> +
> + return 0;
> +}
> +
> +void unbind_ctx_from_engine(int fd, uint32_t ctx_id)
> +{
> + gem_context_destroy(fd, ctx_id);
> +}
> diff --git a/lib/igt_gt.h b/lib/igt_gt.h
> index 54e95da9..d8937318 100644
> --- a/lib/igt_gt.h
> +++ b/lib/igt_gt.h
> @@ -86,8 +86,14 @@ extern const struct intel_execution_engine {
> e__++) \
> for_if (gem_ring_has_physical_engine(fd__, flags__ = e__->exec_id | e__->flags))
>
> +#define for_each_engine_ctx(fd, n, id, e) \
> + for (e = 0; e < n; e++) \
> + for_if(gem_has_ring_ctx(fd, e + 1, id))
> +
> bool gem_ring_is_physical_engine(int fd, unsigned int ring);
> bool gem_ring_has_physical_engine(int fd, unsigned int ring);
> +int bind_ctx_to_engine(int fd, uint32_t *n, uint32_t *ctx_id);
> +void unbind_ctx_from_engine(int fd, uint32_t ctx_id);
>
> bool gem_can_store_dword(int fd, unsigned int engine);
>
> diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
> index 9f255508..2115bad1 100644
> --- a/lib/ioctl_wrappers.c
> +++ b/lib/ioctl_wrappers.c
> @@ -1472,6 +1472,31 @@ bool gem_has_ring(int fd, unsigned ring)
> return __gem_execbuf(fd, &execbuf) == -ENOENT;
> }
>
> +bool gem_has_ring_ctx(int fd, unsigned ring, unsigned ctx_id)
> +{
> + struct drm_i915_gem_execbuffer2 execbuf;
> + struct drm_i915_gem_exec_object2 exec;
> + uint32_t bbend = MI_BATCH_BUFFER_END;
> + int ret;
> +
> + memset(&execbuf, 0, sizeof(execbuf));
> + memset(&exec, 0, sizeof(exec));
> +
> + exec.handle = gem_create(fd, 4096);
> + gem_write(fd, exec.handle, 0, &bbend, sizeof(bbend));
> +
> + execbuf.buffers_ptr = to_user_pointer(&exec);
> + execbuf.buffer_count = 1;
> + execbuf.flags = ring;
> + i915_execbuffer2_set_context_id(execbuf, ctx_id);
> +
> + ret = __gem_execbuf(fd, &execbuf);
> +
> + gem_close(fd, exec.handle);
> +
> + return !ret;
> +}
> +
> /**
> * gem_require_ring:
> * @fd: open i915 drm file descriptor
> diff --git a/lib/ioctl_wrappers.h b/lib/ioctl_wrappers.h
> index b22b36b0..d4adf912 100644
> --- a/lib/ioctl_wrappers.h
> +++ b/lib/ioctl_wrappers.h
> @@ -165,6 +165,7 @@ bool gem_has_exec_fence(int fd);
> /* check functions which auto-skip tests by calling igt_skip() */
> void gem_require_caching(int fd);
> bool gem_has_ring(int fd, unsigned ring);
> +bool gem_has_ring_ctx(int fd, unsigned ring, unsigned ctx_id);
> void gem_require_ring(int fd, unsigned ring);
> bool gem_has_mocs_registers(int fd);
> void gem_require_mocs_registers(int fd);
>
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [igt-dev] [RFC 2/2] lib: implement new engine discovery interface
2018-11-19 19:59 ` Tvrtko Ursulin
@ 2018-11-19 20:38 ` Chris Wilson
2018-11-20 10:00 ` Tvrtko Ursulin
2018-11-19 23:33 ` Andi Shyti
1 sibling, 1 reply; 18+ messages in thread
From: Chris Wilson @ 2018-11-19 20:38 UTC (permalink / raw)
To: Andi Shyti, IGT dev, Tvrtko Ursulin; +Cc: Andi Shyti, Tvrtko Ursulin
Quoting Tvrtko Ursulin (2018-11-19 19:59:19)
>
> On 19/11/2018 15:55, Andi Shyti wrote:
> > Kernel commits:
> >
> > [1] ae8f4544dd8f ("drm/i915: Engine discovery query")
> > [2] 31e7d35667a0 ("drm/i915: Allow a context to define its set of engines")
> >
> > from [*] repository, implement a new way uapi for engine
> > discovery that consist in first coupling context with engine [2]
> > and then query the engines through a specific structure [1].
> >
> > In igt the classic way for discovering engines is done trhough
> > the for_each_physical_engine() macro, that is replaced by the
> > new for_each_engine_ctx().
>
> My idea was that we migrate for_each_physical_engine to this new scheme.
>
> As an easy starting point I was thinking to keep the current
> for_each_physical_engine as is, and just add new
> for_each_physical_engine_new and migrate one test to it as a demo.
>
> Then when this part is reviewed, as a second step we convert the rest
> and rename the macro stripping the _new suffix and nuking the old one.
>
> With regards to implementation details I was thinking along these lines:
>
> On first invocation for_each_physical_engine_new initializes some hidden
> data stored in one or more globals (which will live in igt_gt.c).
>
> This would query the engines and create a context with all engines mapped.
>
> We also add a helper to get this internal ctx id to use within
> for_each_physical_engine_new loops.
>
> That should make it easy to convert simple tests over like:
>
> igt_subtest {
> for_each_physical_engine_new(fd, engine) {
> ...
> execbuf.rsvd1 = gem_physical_engine_ctx();
> execbuf.flags = gem_physical_engine_idx(engine);
> gem_execbuf(fd, execbuf);
> }
> }
Granted that we have a lot of tests that just use the default ctx, I
don't think the iterator interface we create should enforce that.
for_each_physical_engine_new(fd, ctx, engine) {
execbuf.rsvd1 = ctx;
execbuf.flags = engine;
gem_execbuf(fd, execbuf);
}
where ctx is provided, and engine the iterator. Off the top of my head,
I have a silly idea like
for (int __max_engine__; (__max_engine__ = igt_physical_engine_iter_init(fd, ctx)); )
for (engine = 1; engine <= __max_engine__; engine++)
where igt_physical_engine_iter_init(int fd, uint32_t ctx) {
if (ctx_getparam(fd, ctx, ENGINES).count > 0) {
ctx_setparam(fd, ctx, ENGINES, NULL);
return 0;
}
// query and set engine array
return count;
}
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [igt-dev] [RFC 2/2] lib: implement new engine discovery interface
2018-11-19 20:38 ` Chris Wilson
@ 2018-11-20 10:00 ` Tvrtko Ursulin
2018-11-20 10:09 ` Chris Wilson
0 siblings, 1 reply; 18+ messages in thread
From: Tvrtko Ursulin @ 2018-11-20 10:00 UTC (permalink / raw)
To: Chris Wilson, Andi Shyti, IGT dev; +Cc: Andi Shyti, Tvrtko Ursulin
On 19/11/2018 20:38, Chris Wilson wrote:
> Quoting Tvrtko Ursulin (2018-11-19 19:59:19)
>>
>> On 19/11/2018 15:55, Andi Shyti wrote:
>>> Kernel commits:
>>>
>>> [1] ae8f4544dd8f ("drm/i915: Engine discovery query")
>>> [2] 31e7d35667a0 ("drm/i915: Allow a context to define its set of engines")
>>>
>>> from [*] repository, implement a new way uapi for engine
>>> discovery that consist in first coupling context with engine [2]
>>> and then query the engines through a specific structure [1].
>>>
>>> In igt the classic way for discovering engines is done trhough
>>> the for_each_physical_engine() macro, that is replaced by the
>>> new for_each_engine_ctx().
>>
>> My idea was that we migrate for_each_physical_engine to this new scheme.
>>
>> As an easy starting point I was thinking to keep the current
>> for_each_physical_engine as is, and just add new
>> for_each_physical_engine_new and migrate one test to it as a demo.
>>
>> Then when this part is reviewed, as a second step we convert the rest
>> and rename the macro stripping the _new suffix and nuking the old one.
>>
>> With regards to implementation details I was thinking along these lines:
>>
>> On first invocation for_each_physical_engine_new initializes some hidden
>> data stored in one or more globals (which will live in igt_gt.c).
>>
>> This would query the engines and create a context with all engines mapped.
>>
>> We also add a helper to get this internal ctx id to use within
>> for_each_physical_engine_new loops.
>>
>> That should make it easy to convert simple tests over like:
>>
>> igt_subtest {
>> for_each_physical_engine_new(fd, engine) {
>> ...
>> execbuf.rsvd1 = gem_physical_engine_ctx();
>> execbuf.flags = gem_physical_engine_idx(engine);
>> gem_execbuf(fd, execbuf);
>> }
>> }
>
> Granted that we have a lot of tests that just use the default ctx, I
> don't think the iterator interface we create should enforce that.
>
> for_each_physical_engine_new(fd, ctx, engine) {
> execbuf.rsvd1 = ctx;
> execbuf.flags = engine;
> gem_execbuf(fd, execbuf);
> }
To be clear, you think we should convert all such tests to use a
non-default context? My idea was to minimize the churn, but I am also
okay with this plan.
> where ctx is provided, and engine the iterator. Off the top of my head,
> I have a silly idea like
>
> for (int __max_engine__; (__max_engine__ = igt_physical_engine_iter_init(fd, ctx)); )
> for (engine = 1; engine <= __max_engine__; engine++)
>
> where igt_physical_engine_iter_init(int fd, uint32_t ctx) {
> if (ctx_getparam(fd, ctx, ENGINES).count > 0) {
> ctx_setparam(fd, ctx, ENGINES, NULL);
> return 0;
> }
>
> // query and set engine array
> return count;
> }
That works and avoids the global on the face of it. However with engine
iterator a simple int, we will probably still need some to enable
querying iterated engine properties like class, instance and name for
subtest enumeration and similar.
Regards,
Tvrtko
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [igt-dev] [RFC 2/2] lib: implement new engine discovery interface
2018-11-20 10:00 ` Tvrtko Ursulin
@ 2018-11-20 10:09 ` Chris Wilson
0 siblings, 0 replies; 18+ messages in thread
From: Chris Wilson @ 2018-11-20 10:09 UTC (permalink / raw)
To: Andi Shyti, IGT dev, Tvrtko Ursulin; +Cc: Andi Shyti, Tvrtko Ursulin
Quoting Tvrtko Ursulin (2018-11-20 10:00:25)
>
> On 19/11/2018 20:38, Chris Wilson wrote:
> > Quoting Tvrtko Ursulin (2018-11-19 19:59:19)
> >>
> >> On 19/11/2018 15:55, Andi Shyti wrote:
> >>> Kernel commits:
> >>>
> >>> [1] ae8f4544dd8f ("drm/i915: Engine discovery query")
> >>> [2] 31e7d35667a0 ("drm/i915: Allow a context to define its set of engines")
> >>>
> >>> from [*] repository, implement a new way uapi for engine
> >>> discovery that consist in first coupling context with engine [2]
> >>> and then query the engines through a specific structure [1].
> >>>
> >>> In igt the classic way for discovering engines is done trhough
> >>> the for_each_physical_engine() macro, that is replaced by the
> >>> new for_each_engine_ctx().
> >>
> >> My idea was that we migrate for_each_physical_engine to this new scheme.
> >>
> >> As an easy starting point I was thinking to keep the current
> >> for_each_physical_engine as is, and just add new
> >> for_each_physical_engine_new and migrate one test to it as a demo.
> >>
> >> Then when this part is reviewed, as a second step we convert the rest
> >> and rename the macro stripping the _new suffix and nuking the old one.
> >>
> >> With regards to implementation details I was thinking along these lines:
> >>
> >> On first invocation for_each_physical_engine_new initializes some hidden
> >> data stored in one or more globals (which will live in igt_gt.c).
> >>
> >> This would query the engines and create a context with all engines mapped.
> >>
> >> We also add a helper to get this internal ctx id to use within
> >> for_each_physical_engine_new loops.
> >>
> >> That should make it easy to convert simple tests over like:
> >>
> >> igt_subtest {
> >> for_each_physical_engine_new(fd, engine) {
> >> ...
> >> execbuf.rsvd1 = gem_physical_engine_ctx();
> >> execbuf.flags = gem_physical_engine_idx(engine);
> >> gem_execbuf(fd, execbuf);
> >> }
> >> }
> >
> > Granted that we have a lot of tests that just use the default ctx, I
> > don't think the iterator interface we create should enforce that.
> >
> > for_each_physical_engine_new(fd, ctx, engine) {
> > execbuf.rsvd1 = ctx;
> > execbuf.flags = engine;
> > gem_execbuf(fd, execbuf);
> > }
>
> To be clear, you think we should convert all such tests to use a
> non-default context? My idea was to minimize the churn, but I am also
> okay with this plan.
No, perfectly fine to use ctx=0 and even to have the common iterator
default to ctx=0. My opinion is that we don't restrict the iterator to
only work on a pre-defined context, but accept that using the iterator
will adjust the ctx->engines[] to suit (and so allow the iterator to
work on any context).
> > where ctx is provided, and engine the iterator. Off the top of my head,
> > I have a silly idea like
> >
> > for (int __max_engine__; (__max_engine__ = igt_physical_engine_iter_init(fd, ctx)); )
> > for (engine = 1; engine <= __max_engine__; engine++)
> >
> > where igt_physical_engine_iter_init(int fd, uint32_t ctx) {
> > if (ctx_getparam(fd, ctx, ENGINES).count > 0) {
> > ctx_setparam(fd, ctx, ENGINES, NULL);
> > return 0;
> > }
> >
> > // query and set engine array
> > return count;
> > }
>
> That works and avoids the global on the face of it. However with engine
> iterator a simple int, we will probably still need some to enable
> querying iterated engine properties like class, instance and name for
> subtest enumeration and similar.
True worst case would be
class_instance_get_name(magic_ctx_getparam(fd, ctx, ENGINES)[idx]);
Passable for the one-off uses, but I guess we want
ctx_get_engine_names(fd, ctx, name_array, name_count);
Or a
struct engine_attribute {
u16 class, instance;
const char *name;
... other common details ...
};
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [igt-dev] [RFC 2/2] lib: implement new engine discovery interface
2018-11-19 19:59 ` Tvrtko Ursulin
2018-11-19 20:38 ` Chris Wilson
@ 2018-11-19 23:33 ` Andi Shyti
1 sibling, 0 replies; 18+ messages in thread
From: Andi Shyti @ 2018-11-19 23:33 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: IGT dev, Andi Shyti, Tvrtko Ursulin
Hi Tvrtko,
thanks for your inputs!
> > Kernel commits:
> >
> > [1] ae8f4544dd8f ("drm/i915: Engine discovery query")
> > [2] 31e7d35667a0 ("drm/i915: Allow a context to define its set of engines")
> >
> > from [*] repository, implement a new way uapi for engine
> > discovery that consist in first coupling context with engine [2]
> > and then query the engines through a specific structure [1].
> >
> > In igt the classic way for discovering engines is done trhough
> > the for_each_physical_engine() macro, that is replaced by the
> > new for_each_engine_ctx().
>
> My idea was that we migrate for_each_physical_engine to this new scheme.
>
> As an easy starting point I was thinking to keep the current
> for_each_physical_engine as is, and just add new
> for_each_physical_engine_new and migrate one test to it as a demo.
>
> Then when this part is reviewed, as a second step we convert the rest and
> rename the macro stripping the _new suffix and nuking the old one.
The for_each_physical_engine is left as it is.
I have indeed posted only the changes in the libraries, I can
send a demo test as well.
> With regards to implementation details I was thinking along these lines:
>
> On first invocation for_each_physical_engine_new initializes some hidden
> data stored in one or more globals (which will live in igt_gt.c).
>
> This would query the engines and create a context with all engines mapped.
>
> We also add a helper to get this internal ctx id to use within
> for_each_physical_engine_new loops.
>
> That should make it easy to convert simple tests over like:
>
> igt_subtest {
> for_each_physical_engine_new(fd, engine) {
> ...
> execbuf.rsvd1 = gem_physical_engine_ctx();
> execbuf.flags = gem_physical_engine_idx(engine);
> gem_execbuf(fd, execbuf);
> }
> }
>
> We also need to think about what kind of helpers would be needed for tests
> which use for_each_physical_engine and their own contexts. If such exist,
> and I haven't checked, a helper like
> gem_setup_context_for_each_physical_engine or something?
>
> eg:
>
> igt_subtest {
> unit32_t test_ctx;
>
> ...
> gem_init_context_for_each_physical_engine(fd, test_ctx);
>
> for_each_physical_engine_new(fd, engine) {
> ...
> execbuf.rsvd1 = test_ctx;
> execbuf.flags = gem_physical_engine_idx(engine);
> gem_execbuf(fd, execbuf);
> }
> }
I tried to keep the "for_each_physical_engine_new" (which I
called "for_each_engine_ctx" because it looks more meaningful)
similar to what it was by adding a few arguments more and a
"bind" and an "unbind" functions before and after in order to
create and remove the structures and contexts I am creating.
I think it's not that different from what you are suggesting and
what we discussed offline. But perhaps a demo test would make
it more clear.
Thanks again,
Andi
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for new engine discovery interface
2018-11-19 15:55 [igt-dev] [RFC 0/2] new engine discovery interface Andi Shyti
2018-11-19 15:55 ` [igt-dev] [RFC 1/2] include/drm-uapi: import i915_drm.h header file Andi Shyti
2018-11-19 15:55 ` [igt-dev] [RFC 2/2] lib: implement new engine discovery interface Andi Shyti
@ 2018-11-19 17:22 ` Patchwork
2018-11-19 22:31 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
3 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2018-11-19 17:22 UTC (permalink / raw)
To: Andi Shyti; +Cc: igt-dev
== Series Details ==
Series: new engine discovery interface
URL : https://patchwork.freedesktop.org/series/52699/
State : success
== Summary ==
= CI Bug Log - changes from IGT_4720 -> IGTPW_2078 =
== Summary - SUCCESS ==
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/52699/revisions/1/mbox/
== Known issues ==
Here are the changes found in IGTPW_2078 that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@kms_pipe_crc_basic@hang-read-crc-pipe-b:
fi-byt-clapper: PASS -> FAIL (fdo#107362, fdo#103191) +1
igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
fi-icl-u: PASS -> INCOMPLETE (fdo#107713)
==== Possible fixes ====
igt@gem_exec_suspend@basic-s3:
fi-icl-u2: DMESG-WARN (fdo#107724) -> PASS
igt@i915_selftest@live_sanitycheck:
fi-gdg-551: INCOMPLETE (fdo#108789) -> PASS
igt@kms_frontbuffer_tracking@basic:
fi-byt-clapper: FAIL (fdo#103167) -> PASS
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362
fdo#107713 https://bugs.freedesktop.org/show_bug.cgi?id=107713
fdo#107724 https://bugs.freedesktop.org/show_bug.cgi?id=107724
fdo#108789 https://bugs.freedesktop.org/show_bug.cgi?id=108789
== Participating hosts (53 -> 47) ==
Missing (6): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600
== Build changes ==
* IGT: IGT_4720 -> IGTPW_2078
CI_DRM_5159: af98442486c4eeed23ed036dfa2b556def4203bd @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2078: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2078/
IGT_4720: c27aaca295d3ca2a38521e571c012449371e4bb5 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2078/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread* [igt-dev] ✓ Fi.CI.IGT: success for new engine discovery interface
2018-11-19 15:55 [igt-dev] [RFC 0/2] new engine discovery interface Andi Shyti
` (2 preceding siblings ...)
2018-11-19 17:22 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
@ 2018-11-19 22:31 ` Patchwork
3 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2018-11-19 22:31 UTC (permalink / raw)
To: Andi Shyti; +Cc: igt-dev
== Series Details ==
Series: new engine discovery interface
URL : https://patchwork.freedesktop.org/series/52699/
State : success
== Summary ==
= CI Bug Log - changes from IGT_4720_full -> IGTPW_2078_full =
== Summary - WARNING ==
Minor unknown changes coming with IGTPW_2078_full need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_2078_full, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/52699/revisions/1/mbox/
== Possible new issues ==
Here are the unknown changes that may have been introduced in IGTPW_2078_full:
=== IGT changes ===
==== Warnings ====
igt@pm_rc6_residency@rc6-accuracy:
shard-kbl: SKIP -> PASS
== Known issues ==
Here are the changes found in IGTPW_2078_full that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@kms_ccs@pipe-a-crc-sprite-planes-basic:
shard-glk: PASS -> FAIL (fdo#108145)
igt@kms_cursor_crc@cursor-128x42-onscreen:
shard-glk: PASS -> FAIL (fdo#103232) +9
igt@kms_cursor_crc@cursor-256x256-dpms:
shard-kbl: PASS -> FAIL (fdo#103232) +1
igt@kms_cursor_crc@cursor-256x85-random:
shard-apl: PASS -> FAIL (fdo#103232) +6
igt@kms_cursor_crc@cursor-64x64-suspend:
shard-apl: PASS -> FAIL (fdo#103232, fdo#103191) +1
igt@kms_cursor_legacy@cursora-vs-flipa-toggle:
shard-glk: PASS -> DMESG-WARN (fdo#105763, fdo#106538)
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-wc:
shard-apl: PASS -> FAIL (fdo#103167)
igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move:
shard-glk: PASS -> FAIL (fdo#103167) +6
igt@kms_plane_alpha_blend@pipe-b-alpha-7efc:
shard-kbl: NOTRUN -> FAIL (fdo#108145, fdo#108590)
igt@kms_plane_alpha_blend@pipe-c-alpha-transparant-fb:
shard-kbl: NOTRUN -> FAIL (fdo#108145)
igt@kms_plane_multiple@atomic-pipe-a-tiling-y:
shard-glk: PASS -> FAIL (fdo#103166) +6
igt@kms_plane_multiple@atomic-pipe-c-tiling-x:
shard-kbl: PASS -> FAIL (fdo#103166)
igt@kms_sysfs_edid_timing:
shard-kbl: NOTRUN -> FAIL (fdo#100047)
igt@kms_universal_plane@universal-plane-pipe-b-functional:
shard-apl: PASS -> FAIL (fdo#103166) +1
==== Possible fixes ====
igt@gem_eio@in-flight-1us:
shard-glk: FAIL (fdo#107799) -> PASS +1
igt@gem_eio@unwedge-stress:
shard-glk: FAIL -> PASS
igt@gem_ppgtt@blt-vs-render-ctx0:
shard-kbl: INCOMPLETE (fdo#106023, fdo#103665, fdo#106887) -> PASS
igt@kms_available_modes_crc@available_mode_test_crc:
shard-apl: FAIL (fdo#106641) -> PASS
igt@kms_chv_cursor_fail@pipe-c-128x128-bottom-edge:
shard-glk: DMESG-WARN (fdo#105763, fdo#106538) -> PASS +1
igt@kms_cursor_crc@cursor-64x21-onscreen:
shard-glk: FAIL (fdo#103232) -> PASS +2
igt@kms_cursor_crc@cursor-64x21-random:
shard-apl: FAIL (fdo#103232) -> PASS +1
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
shard-apl: FAIL (fdo#103167) -> PASS +1
shard-kbl: FAIL (fdo#103167) -> PASS +1
igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-cpu:
shard-glk: FAIL (fdo#103167) -> PASS +3
igt@kms_plane@plane-position-covered-pipe-a-planes:
shard-glk: FAIL (fdo#103166) -> PASS +1
igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb:
shard-glk: FAIL (fdo#108145) -> PASS
igt@kms_plane_multiple@atomic-pipe-b-tiling-y:
shard-apl: FAIL (fdo#103166) -> PASS +1
igt@kms_setmode@basic:
shard-kbl: FAIL (fdo#99912) -> PASS
igt@perf@blocking:
shard-hsw: FAIL (fdo#102252) -> PASS
fdo#100047 https://bugs.freedesktop.org/show_bug.cgi?id=100047
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
fdo#103232 https://bugs.freedesktop.org/show_bug.cgi?id=103232
fdo#103665 https://bugs.freedesktop.org/show_bug.cgi?id=103665
fdo#105763 https://bugs.freedesktop.org/show_bug.cgi?id=105763
fdo#106023 https://bugs.freedesktop.org/show_bug.cgi?id=106023
fdo#106538 https://bugs.freedesktop.org/show_bug.cgi?id=106538
fdo#106641 https://bugs.freedesktop.org/show_bug.cgi?id=106641
fdo#106887 https://bugs.freedesktop.org/show_bug.cgi?id=106887
fdo#107799 https://bugs.freedesktop.org/show_bug.cgi?id=107799
fdo#108145 https://bugs.freedesktop.org/show_bug.cgi?id=108145
fdo#108590 https://bugs.freedesktop.org/show_bug.cgi?id=108590
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
== Participating hosts (7 -> 5) ==
Missing (2): shard-skl shard-iclb
== Build changes ==
* IGT: IGT_4720 -> IGTPW_2078
CI_DRM_5159: af98442486c4eeed23ed036dfa2b556def4203bd @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2078: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2078/
IGT_4720: c27aaca295d3ca2a38521e571c012449371e4bb5 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2078/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread
* [igt-dev] [RFC PATCH v8 0/5] new engine discovery interface
@ 2019-02-12 23:54 Andi Shyti via igt-dev
2019-02-13 2:44 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
0 siblings, 1 reply; 18+ messages in thread
From: Andi Shyti via igt-dev @ 2019-02-12 23:54 UTC (permalink / raw)
To: IGT dev; +Cc: Petri Latvala, Andi Shyti
Hi,
In this patchset I propose an alternative way of engine discovery
thanks to the new interfaces developed by Tvrtko and Chris[4].
It's re-architectured compared to the previous patchset because
almost everything goes into the new gem_query library under
lib/i915, given its dependency to the i915 gpu.
Thanks Tvrtko, Chris, Antonio and Petri for your comments in the
previous RFCs.
Andi
V1 --> V2
=========
RFC v1: [1]
- added a demo test that simply queries the driver about the
engines and executes a buffer (thanks Tvrtko)
- refactored the for_each_engine_ctx() macro so that what in the
previous version was done by the "bind" function, now it's done
in the first iteration. (Thanks Crhis)
- removed the "gem_has_ring_ctx()" because it was out of the
scope.
- rename functions to more meaningful names
V2 --> V3
=========
RFC v2: [2]
- removed a standalone gem_query_engines_demo test and added the
exec-ctx subtest inside gem_exec_basic (thanks Tvrtko).
- fixed most of Tvrtko's comments in [5], which consist in
putting the mallocs igt_assert and ictls in igt_require and few
refactoring (thanks Tvrtko).
V3 --> V4
=========
PATCH v3: [3]
- re-architectured the discovery mechanism based on Tvrtko's
sugestion and reviews.. In this version the discovery is done
during the device opening and stored in a NULL terminated
array, which replaces the existing intel_execution_engines2
that is mainly used as a reference.
V4 --> V5
=========
RFC v4: [6]
- the engine list is now built in 'igt_require_gem()' instead of
'__open_driver()' so that we keep this discovery method specific
to the i915 driver (thanks Chris).
- All the query/setparam structures dynamic allocation based on
the number of engines, now are politically allocated 64 times,
to avoid extra ioctl calls that retrieve the engine number
(thanks Chris)
- use igt_ioctl instead of ioctl (thanks Chris)
- allocate intel_execution_engines2 dynamically instead of
statically (thanks Tvrtko)
- simplify the test in 'gem_exec_basic()' so that simply checks
the presence of the engine instead of executing a buffer
(thank Chris)
- a new patch has been added (patch 3) that extends the
'gem_has_ring()' boolean function. The new version sets the
index as it's mapped in the kernel.The previous function is now
a wrapper to the new function.
V5 --> V6
=========
RFC v5: [7]
- Chris implemented the getparam ioctl which allows to the test
to figure otu whether the new interface has been implemented.
This way the for_each_engine_ctx() is able to work with new and
old kernel uapi (thanks Chris)
V6 --> V7
=========
RFC v6: [8]
- a new patch has been added (patch 3) which adds a new
requirement check through the igt_require_gem_engine_list()
function. (thanks Chris) This function will initialize the
engine list instead of the instead of igt_require_gem() as it
was in v6
- all the ioctls have been wrapped (thanks Chris and Antonio) and
new library functions have been added and assert the ioctls
- gem_init_engine_list() function returns the errno from the
GETPARAM ioctl in order to be used as a requirement. (thanks
Chris)
- fixed few requires/asserts
- The engine list "intel_active_engines2" is allocated of the
number of engines instead of a political 64 (thanks Antonio).
- some parameter renaming in gem_has_ring_by_idx(). (thanks
Chris).
- the original "intel_execution_engines2" has not been renamed,
because it is used to create subtests before even executing any
test/ioctl. By renaming it, some subtest generations failed.
(thanks Petri)
V7 --> v8
=========
RFC v7: [9]
- all functions have been moved from lib/igt_gt.{c,h} and
lib/ioctl_wrappers.{c,h} to lib/i916/gem_query.{c,h}. (thanks
Chris)
- 'for_each_engine_ctx' has been renamed to 'for_each_engine2' to
be consistent with the '2' that indicates the new 'struct
intel_execution_engine2' data structure.
[1] RFC v1: https://lists.freedesktop.org/archives/igt-dev/2018-November/007025.html
[2] RFC v2: https://lists.freedesktop.org/archives/igt-dev/2018-November/007079.html
[3] PATCH v3: https://lists.freedesktop.org/archives/igt-dev/2018-November/007148.html
[4] https://cgit.freedesktop.org/~tursulin/drm-intel/log/?h=media
[5] https://lists.freedesktop.org/archives/igt-dev/2018-November/007100.html
[6] https://lists.freedesktop.org/archives/igt-dev/2019-January/008029.html
[7] https://lists.freedesktop.org/archives/igt-dev/2019-January/008165.html
[8] https://lists.freedesktop.org/archives/igt-dev/2019-February/008902.html
[9] https://lists.freedesktop.org/archives/igt-dev/2019-February/009185.html
Andi Shyti (5):
include/drm-uapi: import i915_drm.h header file
lib/i915: add gem_query library
lib/igt_gt: use for_each_engine2 to loop through engines
lib: ioctl_wrappers: reach engines by index as well
tests: gem_exec_basic: add "exec-ctx" buffer execution demo test
include/drm-uapi/i915_drm.h | 292 +++++++++++++++++++++++++++---------
lib/Makefile.sources | 2 +
lib/i915/gem_query.c | 175 +++++++++++++++++++++
lib/i915/gem_query.h | 42 ++++++
lib/igt_gt.c | 2 +-
lib/igt_gt.h | 10 +-
lib/ioctl_wrappers.c | 10 +-
lib/ioctl_wrappers.h | 4 +-
lib/meson.build | 1 +
tests/i915/gem_exec_basic.c | 15 ++
10 files changed, 475 insertions(+), 78 deletions(-)
create mode 100644 lib/i915/gem_query.c
create mode 100644 lib/i915/gem_query.h
--
2.20.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread* [igt-dev] [RFC PATCH v10 0/6] new engine discovery interface
@ 2019-03-05 13:16 Andi Shyti
2019-03-05 15:22 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
0 siblings, 1 reply; 18+ messages in thread
From: Andi Shyti @ 2019-03-05 13:16 UTC (permalink / raw)
To: IGT dev; +Cc: Andi Shyti
Hi,
In this patchset I propose an alternative way of engine discovery
thanks to the new interfaces developed by Tvrtko and Chris[4].
Thanks Tvrtko, Chris, Antonio and Petri for your comments in the
previous RFCs.
Andi
v9 --> v10
==========
RFC v9: [11]
also this time quite many changes, thanks Chris for the reviews,
here the most relevant of them.
- gem_query.[ch] have been renamed to gem_engine_topology.[ch]
and all the functions ended up there as they are referring to
the topology of the engines.
- the functions 'get_active_engines()',
'gem_set_context_get_engines()' and
'igt_require_gem_engine_list()' will be the main interface to
the gem_engine_topology library, refer to patch 2 for details.
- the define 'for_each_engine2()' doesn't expose anymore the
iterator.
- 'gem_context_has_engine()' has been moved from ioctl_wrappers.c
to gem_context.c.
- the gem_exec_basic exec-ctx subtest does not abort if the new
getparam/setparam and query apis are not implemented as it can
work with both (as it was done at the beginning).
v8 --> v9
=========
RFC v8: [10]
quite many changes, please refer to the review in [10]. Thanks
Chris for the review. These are the most relevant:
- all the allocation in gem_query have been made in stack, not
anymore allocated dynamically.
- removed get/set_context as it was already implemented and I
didn't know.
- renamed some functions and variables to hopefully more
meaningful names.
V7 --> v8
=========
RFC v7: [9]
- all functions have been moved from lib/igt_gt.{c,h} and
lib/ioctl_wrappers.{c,h} to lib/i916/gem_query.{c,h}. (thanks
Chris)
- 'for_each_engine_ctx' has been renamed to 'for_each_engine2' to
be consistent with the '2' that indicates the new 'struct
intel_execution_engine2' data structure.
V6 --> V7
=========
RFC v6: [8]
- a new patch has been added (patch 3) which adds a new
requirement check through the igt_require_gem_engine_list()
function. (thanks Chris) This function will initialize the
engine list instead of the instead of igt_require_gem() as it
was in v6
- all the ioctls have been wrapped (thanks Chris and Antonio) and
new library functions have been added and assert the ioctls
- gem_init_engine_list() function returns the errno from the
GETPARAM ioctl in order to be used as a requirement. (thanks
Chris)
- fixed few requires/asserts
- The engine list "intel_active_engines2" is allocated of the
number of engines instead of a political 64 (thanks Antonio).
- some parameter renaming in gem_has_ring_by_idx(). (thanks
Chris).
- the original "intel_execution_engines2" has not been renamed,
because it is used to create subtests before even executing any
test/ioctl. By renaming it, some subtest generations failed.
(thanks Petri)
V5 --> V6
=========
RFC v5: [7]
- Chris implemented the getparam ioctl which allows to the test
to figure otu whether the new interface has been implemented.
This way the for_each_engine_ctx() is able to work with new and
old kernel uapi (thanks Chris)
V4 --> V5
=========
RFC v4: [6]
- the engine list is now built in 'igt_require_gem()' instead of
'__open_driver()' so that we keep this discovery method
specific to the i915 driver (thanks Chris).
- All the query/setparam structures dynamic allocation based on
the number of engines, now are politically allocated 64 times,
to avoid extra ioctl calls that retrieve the engine number
(thanks Chris)
- use igt_ioctl instead of ioctl (thanks Chris)
- allocate intel_execution_engines2 dynamically instead of
statically (thanks Tvrtko)
- simplify the test in 'gem_exec_basic()' so that simply checks
the presence of the engine instead of executing a buffer
(thank Chris)
- a new patch has been added (patch 3) that extends the
'gem_has_ring()' boolean function. The new version sets the
index as it's mapped in the kernel.The previous function is now
a wrapper to the new function.
V3 --> V4
=========
PATCH v3: [3]
- re-architectured the discovery mechanism based on Tvrtko's
sugestion and reviews.. In this version the discovery is done
during the device opening and stored in a NULL terminated
array, which replaces the existing intel_execution_engines2
that is mainly used as a reference.
V2 --> V3
=========
RFC v2: [2]
- removed a standalone gem_query_engines_demo test and added the
exec-ctx subtest inside gem_exec_basic (thanks Tvrtko).
- fixed most of Tvrtko's comments in [5], which consist in
putting the mallocs igt_assert and ictls in igt_require and few
refactoring (thanks Tvrtko).
V1 --> V2
=========
RFC v1: [1]
- added a demo test that simply queries the driver about the
engines and executes a buffer (thanks Tvrtko)
- refactored the for_each_engine_ctx() macro so that what in the
previous version was done by the "bind" function, now it's done
in the first iteration. (Thanks Crhis)
- removed the "gem_has_ring_ctx()" because it was out of the
scope.
- rename functions to more meaningful names
[1] RFC v1: https://lists.freedesktop.org/archives/igt-dev/2018-November/007025.html
[2] RFC v2: https://lists.freedesktop.org/archives/igt-dev/2018-November/007079.html
[3] PATCH v3: https://lists.freedesktop.org/archives/igt-dev/2018-November/007148.html
[4] https://cgit.freedesktop.org/~tursulin/drm-intel/log/?h=media
[5] https://lists.freedesktop.org/archives/igt-dev/2018-November/007100.html
[6] https://lists.freedesktop.org/archives/igt-dev/2019-January/008029.html
[7] https://lists.freedesktop.org/archives/igt-dev/2019-January/008165.html
[8] https://lists.freedesktop.org/archives/igt-dev/2019-February/008902.html
[9] https://lists.freedesktop.org/archives/igt-dev/2019-February/009185.html
[10] https://lists.freedesktop.org/archives/igt-dev/2019-February/009205.html
[11] https://lists.freedesktop.org/archives/igt-dev/2019-February/009277.html
Andi Shyti (6):
include/drm-uapi: import i915_drm.h header file
lib/i915: add gem_engine_topology library
lib/igt_gt: use for_each_engine2 to loop through engines
lib: ioctl_wrappers: reach engines by index as well
lib: move gem_context_has_engine from ioctl_wrappers to gem_context
tests: gem_exec_basic: add "exec-ctx" buffer execution demo test
include/drm-uapi/i915_drm.h | 389 ++++++++++++++++++++++++++-------
lib/Makefile.sources | 2 +
lib/i915/gem_context.c | 21 ++
lib/i915/gem_context.h | 2 +
lib/i915/gem_engine_topology.c | 199 +++++++++++++++++
lib/i915/gem_engine_topology.h | 39 ++++
lib/igt_gt.c | 2 +-
lib/igt_gt.h | 10 +-
lib/ioctl_wrappers.c | 19 --
lib/ioctl_wrappers.h | 3 +-
lib/meson.build | 1 +
tests/i915/gem_exec_basic.c | 12 +
12 files changed, 604 insertions(+), 95 deletions(-)
create mode 100644 lib/i915/gem_engine_topology.c
create mode 100644 lib/i915/gem_engine_topology.h
--
2.20.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread* [igt-dev] ✓ Fi.CI.IGT: success for new engine discovery interface
2019-03-05 13:16 [igt-dev] [RFC PATCH v10 0/6] " Andi Shyti
@ 2019-03-05 15:22 ` Patchwork
0 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2019-03-05 15:22 UTC (permalink / raw)
To: Andi Shyti; +Cc: igt-dev
== Series Details ==
Series: new engine discovery interface
URL : https://patchwork.freedesktop.org/series/57578/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_5703_full -> IGTPW_2555_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/57578/revisions/1/mbox/
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_2555_full:
### IGT changes ###
#### Possible regressions ####
* {igt@gem_exec_basic@exec-ctx} (NEW):
- shard-kbl: NOTRUN -> FAIL
New tests
---------
New tests have been introduced between CI_DRM_5703_full and IGTPW_2555_full:
### New IGT tests (1) ###
* igt@gem_exec_basic@exec-ctx:
- Statuses : 1 fail(s) 4 pass(s)
- Exec time: [0.0, 0.05] s
Known issues
------------
Here are the changes found in IGTPW_2555_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_atomic_transition@3x-modeset-transitions:
- shard-kbl: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +2
* igt@kms_atomic_transition@5x-modeset-transitions-fencing:
- shard-apl: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +1
* igt@kms_atomic_transition@plane-all-modeset-transition:
- shard-apl: PASS -> INCOMPLETE [fdo#103927]
* igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-b:
- shard-kbl: PASS -> DMESG-WARN [fdo#107956] +1
- shard-apl: NOTRUN -> DMESG-WARN [fdo#107956] +1
- shard-hsw: PASS -> DMESG-WARN [fdo#107956]
* igt@kms_color@pipe-b-ctm-max:
- shard-apl: PASS -> FAIL [fdo#108147]
- shard-kbl: PASS -> FAIL [fdo#108147]
* igt@kms_cursor_crc@cursor-128x128-suspend:
- shard-apl: PASS -> FAIL [fdo#103191] / [fdo#103232]
* igt@kms_cursor_crc@cursor-64x21-onscreen:
- shard-apl: PASS -> FAIL [fdo#103232] +1
* igt@kms_cursor_crc@cursor-64x64-random:
- shard-kbl: PASS -> FAIL [fdo#103232] +1
* igt@kms_cursor_crc@cursor-64x64-suspend:
- shard-kbl: PASS -> FAIL [fdo#103191] / [fdo#103232]
* igt@kms_cursor_crc@cursor-alpha-opaque:
- shard-apl: PASS -> FAIL [fdo#109350]
* igt@kms_flip@2x-flip-vs-expired-vblank-interruptible:
- shard-glk: PASS -> FAIL [fdo#105363]
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu:
- shard-apl: PASS -> FAIL [fdo#103167] +1
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
- shard-kbl: PASS -> FAIL [fdo#103167]
* igt@kms_frontbuffer_tracking@fbc-1p-rte:
- shard-glk: PASS -> FAIL [fdo#103167] / [fdo#105682]
- shard-kbl: PASS -> FAIL [fdo#103167] / [fdo#105682]
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc:
- shard-glk: PASS -> FAIL [fdo#103167]
* igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary:
- shard-apl: NOTRUN -> SKIP [fdo#109271] +13
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-onoff:
- shard-snb: NOTRUN -> SKIP [fdo#109271] +106
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt:
- shard-kbl: NOTRUN -> SKIP [fdo#109271] +25
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-cpu:
- shard-glk: NOTRUN -> SKIP [fdo#109271] +23
* igt@kms_plane@pixel-format-pipe-b-planes:
- shard-kbl: PASS -> FAIL [fdo#103166] +2
* igt@kms_plane_multiple@atomic-pipe-a-tiling-y:
- shard-glk: PASS -> FAIL [fdo#103166] +5
* igt@kms_plane_multiple@atomic-pipe-c-tiling-yf:
- shard-apl: PASS -> FAIL [fdo#103166] +6
* igt@kms_rotation_crc@multiplane-rotation:
- shard-kbl: PASS -> FAIL [fdo#109016]
* igt@kms_setmode@basic:
- shard-hsw: PASS -> FAIL [fdo#99912]
- shard-kbl: PASS -> FAIL [fdo#99912]
* igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm:
- shard-kbl: PASS -> FAIL [fdo#104894]
* igt@kms_vblank@pipe-c-ts-continuation-modeset:
- shard-snb: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +10
* igt@kms_vblank@pipe-c-ts-continuation-suspend:
- shard-apl: PASS -> FAIL [fdo#104894] +2
#### Possible fixes ####
* igt@gem_ctx_isolation@vecs0-s3:
- shard-kbl: INCOMPLETE [fdo#103665] -> PASS
* igt@kms_atomic_transition@1x-modeset-transitions-nonblocking:
- shard-apl: FAIL [fdo#109660] -> PASS
* igt@kms_busy@extended-modeset-hang-newfb-render-b:
- shard-hsw: DMESG-WARN [fdo#107956] -> PASS +2
- shard-kbl: DMESG-WARN [fdo#107956] -> PASS +2
- shard-snb: DMESG-WARN [fdo#107956] -> PASS +1
* igt@kms_ccs@pipe-a-crc-sprite-planes-basic:
- shard-glk: FAIL [fdo#108145] -> PASS
* igt@kms_color@pipe-a-degamma:
- shard-apl: FAIL [fdo#104782] / [fdo#108145] -> PASS
* igt@kms_color@pipe-c-ctm-max:
- shard-kbl: FAIL [fdo#108147] -> PASS
- shard-apl: FAIL [fdo#108147] -> PASS
* igt@kms_cursor_crc@cursor-128x42-onscreen:
- shard-apl: FAIL [fdo#103232] -> PASS +4
* igt@kms_cursor_crc@cursor-256x256-suspend:
- shard-kbl: FAIL [fdo#103191] / [fdo#103232] -> PASS
- shard-hsw: INCOMPLETE [fdo#103540] -> PASS
* igt@kms_cursor_crc@cursor-256x85-sliding:
- shard-kbl: FAIL [fdo#103232] -> PASS +1
* igt@kms_draw_crc@draw-method-xrgb8888-render-xtiled:
- shard-glk: FAIL [fdo#107791] -> PASS
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite:
- shard-apl: FAIL [fdo#103167] -> PASS +2
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-move:
- shard-glk: FAIL [fdo#103167] -> PASS +10
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff:
- shard-kbl: FAIL [fdo#103167] -> PASS +1
* igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence:
- shard-kbl: DMESG-WARN [fdo#103558] / [fdo#105602] -> PASS +7
* igt@kms_plane@plane-position-covered-pipe-a-planes:
- shard-apl: FAIL [fdo#103166] -> PASS +2
* igt@kms_plane_multiple@atomic-pipe-b-tiling-none:
- shard-glk: FAIL [fdo#103166] -> PASS +3
* igt@kms_rotation_crc@multiplane-rotation-cropping-top:
- shard-kbl: FAIL [fdo#109016] -> PASS
* igt@kms_vblank@pipe-a-ts-continuation-suspend:
- shard-kbl: FAIL [fdo#104894] -> PASS
- shard-apl: FAIL [fdo#104894] -> PASS +1
* igt@perf_pmu@rc6:
- shard-kbl: SKIP [fdo#109271] -> PASS
#### Warnings ####
* igt@kms_flip@2x-flip-vs-expired-vblank:
- shard-apl: INCOMPLETE [fdo#103927] -> SKIP [fdo#109271]
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
[fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
[fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
[fdo#103558]: https://bugs.freedesktop.org/show_bug.cgi?id=103558
[fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#104782]: https://bugs.freedesktop.org/show_bug.cgi?id=104782
[fdo#104894]: https://bugs.freedesktop.org/show_bug.cgi?id=104894
[fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363
[fdo#105602]: https://bugs.freedesktop.org/show_bug.cgi?id=105602
[fdo#105682]: https://bugs.freedesktop.org/show_bug.cgi?id=105682
[fdo#107791]: https://bugs.freedesktop.org/show_bug.cgi?id=107791
[fdo#107956]: https://bugs.freedesktop.org/show_bug.cgi?id=107956
[fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
[fdo#108147]: https://bugs.freedesktop.org/show_bug.cgi?id=108147
[fdo#109016]: https://bugs.freedesktop.org/show_bug.cgi?id=109016
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
[fdo#109350]: https://bugs.freedesktop.org/show_bug.cgi?id=109350
[fdo#109660]: https://bugs.freedesktop.org/show_bug.cgi?id=109660
[fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912
Participating hosts (6 -> 5)
------------------------------
Missing (1): shard-skl
Build changes
-------------
* IGT: IGT_4870 -> IGTPW_2555
* Piglit: piglit_4509 -> None
CI_DRM_5703: 453da75010eb2a0806e75490b86d24beb6fa76a7 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2555: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2555/
IGT_4870: ed944b45563c694dc6373bc48dc83b8ba7edb19f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2555/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread
* [igt-dev] [PATCH v11 0/6] new engine discovery interface
@ 2019-03-12 17:17 Andi Shyti
2019-03-13 16:03 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
0 siblings, 1 reply; 18+ messages in thread
From: Andi Shyti @ 2019-03-12 17:17 UTC (permalink / raw)
To: IGT dev; +Cc: Andi Shyti
Hi,
In this patchset I propose an alternative way of engine discovery
thanks to the new interfaces developed by Tvrtko and Chris[4].
Thanks Tvrtko, Chris, Antonio and Petri for your comments in the
previous RFCs.
@Tvrtko: your last comments have added items to my todo list, I
answered to your comments in the patches :)
Andi
v10 --> v11
===========
RFC v10: [12]
few cosmetic changes in v11 and minor architectural details.
Thanks Tvrtko.
- the 'query_engines()' functions are static as no one is using
them yet.
- removed the 'gem_has_engine_topology()' function because it's
very little used, 'get_active_engines()' can be used instead.
- a minor ring -> engine renaming coming from Chris.
v9 --> v10
==========
RFC v9: [11]
also this time quite many changes, thanks Chris for the reviews,
here the most relevant of them.
- gem_query.[ch] have been renamed to gem_engine_topology.[ch]
and all the functions ended up there as they are referring to
the topology of the engines.
- the functions 'get_active_engines()',
'gem_set_context_get_engines()' and
'igt_require_gem_engine_list()' will be the main interface to
the gem_engine_topology library, refer to patch 2 for details.
- the define 'for_each_engine2()' doesn't expose anymore the
iterator.
- 'gem_context_has_engine()' has been moved from ioctl_wrappers.c
to gem_context.c.
- the gem_exec_basic exec-ctx subtest does not abort if the new
getparam/setparam and query apis are not implemented as it can
work with both (as it was done at the beginning).
v8 --> v9
=========
RFC v8: [10]
quite many changes, please refer to the review in [10]. Thanks
Chris for the review. These are the most relevant:
- all the allocation in gem_query have been made in stack, not
anymore allocated dynamically.
- removed get/set_context as it was already implemented and I
didn't know.
- renamed some functions and variables to hopefully more
meaningful names.
V7 --> v8
=========
RFC v7: [9]
- all functions have been moved from lib/igt_gt.{c,h} and
lib/ioctl_wrappers.{c,h} to lib/i916/gem_query.{c,h}. (thanks
Chris)
- 'for_each_engine_ctx' has been renamed to 'for_each_engine2' to
be consistent with the '2' that indicates the new 'struct
intel_execution_engine2' data structure.
V6 --> V7
=========
RFC v6: [8]
- a new patch has been added (patch 3) which adds a new
requirement check through the igt_require_gem_engine_list()
function. (thanks Chris) This function will initialize the
engine list instead of the instead of igt_require_gem() as it
was in v6
- all the ioctls have been wrapped (thanks Chris and Antonio) and
new library functions have been added and assert the ioctls
- gem_init_engine_list() function returns the errno from the
GETPARAM ioctl in order to be used as a requirement. (thanks
Chris)
- fixed few requires/asserts
- The engine list "intel_active_engines2" is allocated of the
number of engines instead of a political 64 (thanks Antonio).
- some parameter renaming in gem_has_ring_by_idx(). (thanks
Chris).
- the original "intel_execution_engines2" has not been renamed,
because it is used to create subtests before even executing any
test/ioctl. By renaming it, some subtest generations failed.
(thanks Petri)
V5 --> V6
=========
RFC v5: [7]
- Chris implemented the getparam ioctl which allows to the test
to figure otu whether the new interface has been implemented.
This way the for_each_engine_ctx() is able to work with new and
old kernel uapi (thanks Chris)
V4 --> V5
=========
RFC v4: [6]
- the engine list is now built in 'igt_require_gem()' instead of
'__open_driver()' so that we keep this discovery method
specific to the i915 driver (thanks Chris).
- All the query/setparam structures dynamic allocation based on
the number of engines, now are politically allocated 64 times,
to avoid extra ioctl calls that retrieve the engine number
(thanks Chris)
- use igt_ioctl instead of ioctl (thanks Chris)
- allocate intel_execution_engines2 dynamically instead of
statically (thanks Tvrtko)
- simplify the test in 'gem_exec_basic()' so that simply checks
the presence of the engine instead of executing a buffer
(thank Chris)
- a new patch has been added (patch 3) that extends the
'gem_has_ring()' boolean function. The new version sets the
index as it's mapped in the kernel.The previous function is now
a wrapper to the new function.
V3 --> V4
=========
PATCH v3: [3]
- re-architectured the discovery mechanism based on Tvrtko's
sugestion and reviews.. In this version the discovery is done
during the device opening and stored in a NULL terminated
array, which replaces the existing intel_execution_engines2
that is mainly used as a reference.
V2 --> V3
=========
RFC v2: [2]
- removed a standalone gem_query_engines_demo test and added the
exec-ctx subtest inside gem_exec_basic (thanks Tvrtko).
- fixed most of Tvrtko's comments in [5], which consist in
putting the mallocs igt_assert and ictls in igt_require and few
refactoring (thanks Tvrtko).
V1 --> V2
=========
RFC v1: [1]
- added a demo test that simply queries the driver about the
engines and executes a buffer (thanks Tvrtko)
- refactored the for_each_engine_ctx() macro so that what in the
previous version was done by the "bind" function, now it's done
in the first iteration. (Thanks Crhis)
- removed the "gem_has_ring_ctx()" because it was out of the
scope.
- rename functions to more meaningful names
[1] RFC v1: https://lists.freedesktop.org/archives/igt-dev/2018-November/007025.html
[2] RFC v2: https://lists.freedesktop.org/archives/igt-dev/2018-November/007079.html
[3] PATCH v3: https://lists.freedesktop.org/archives/igt-dev/2018-November/007148.html
[4] https://cgit.freedesktop.org/~tursulin/drm-intel/log/?h=media
[5] https://lists.freedesktop.org/archives/igt-dev/2018-November/007100.html
[6] https://lists.freedesktop.org/archives/igt-dev/2019-January/008029.html
[7] https://lists.freedesktop.org/archives/igt-dev/2019-January/008165.html
[8] https://lists.freedesktop.org/archives/igt-dev/2019-February/008902.html
[9] https://lists.freedesktop.org/archives/igt-dev/2019-February/009185.html
[10] https://lists.freedesktop.org/archives/igt-dev/2019-February/009205.html
[11] https://lists.freedesktop.org/archives/igt-dev/2019-February/009277.html
[12] https://lists.freedesktop.org/archives/igt-dev/2019-March/010197.html
Andi Shyti (6):
include/drm-uapi: import i915_drm.h header file
lib/i915: add gem_engine_topology library
lib/igt_gt: use for_each_engine2 to loop through engines
lib: ioctl_wrappers: reach engines by index as well
lib: move gem_context_has_engine from ioctl_wrappers to gem_context
tests: gem_exec_basic: add "exec-ctx" buffer execution demo test
include/drm-uapi/i915_drm.h | 404 +++++++++++++++++++++++++++------
lib/Makefile.sources | 2 +
lib/i915/gem_context.c | 21 ++
lib/i915/gem_context.h | 2 +
lib/i915/gem_engine_topology.c | 193 ++++++++++++++++
lib/i915/gem_engine_topology.h | 33 +++
lib/igt_gt.c | 2 +-
lib/igt_gt.h | 10 +-
lib/ioctl_wrappers.c | 19 --
lib/ioctl_wrappers.h | 3 +-
lib/meson.build | 1 +
tests/i915/gem_exec_basic.c | 12 +
12 files changed, 607 insertions(+), 95 deletions(-)
create mode 100644 lib/i915/gem_engine_topology.c
create mode 100644 lib/i915/gem_engine_topology.h
--
2.20.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread* [igt-dev] ✓ Fi.CI.IGT: success for new engine discovery interface
2019-03-12 17:17 [igt-dev] [PATCH v11 0/6] " Andi Shyti
@ 2019-03-13 16:03 ` Patchwork
0 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2019-03-13 16:03 UTC (permalink / raw)
To: Andi Shyti; +Cc: igt-dev
== Series Details ==
Series: new engine discovery interface
URL : https://patchwork.freedesktop.org/series/57891/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_5737_full -> IGTPW_2599_full
====================================================
Summary
-------
**WARNING**
Minor unknown changes coming with IGTPW_2599_full need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_2599_full, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/57891/revisions/1/mbox/
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_2599_full:
### IGT changes ###
#### Possible regressions ####
* {igt@gem_exec_basic@exec-ctx} (NEW):
- shard-kbl: NOTRUN -> FAIL
#### Warnings ####
* igt@kms_plane_scaling@pipe-c-scaler-with-rotation:
- shard-glk: SKIP [fdo#109271] / [fdo#109278] -> FAIL
#### Suppressed ####
The following results come from untrusted machines, tests, or statuses.
They do not affect the overall result.
* {igt@kms_plane@pixel-format-pipe-b-planes}:
- shard-kbl: PASS -> FAIL
New tests
---------
New tests have been introduced between CI_DRM_5737_full and IGTPW_2599_full:
### New IGT tests (1) ###
* igt@gem_exec_basic@exec-ctx:
- Statuses : 1 fail(s) 3 pass(s)
- Exec time: [0.0, 0.05] s
Known issues
------------
Here are the changes found in IGTPW_2599_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_ctx_param@invalid-param-set:
- shard-snb: NOTRUN -> FAIL [fdo#109674]
* igt@i915_pm_rpm@dpms-lpsp:
- shard-kbl: NOTRUN -> SKIP [fdo#109271] +32
* igt@kms_atomic_transition@3x-modeset-transitions:
- shard-glk: NOTRUN -> SKIP [fdo#109271] / [fdo#109278]
* igt@kms_atomic_transition@plane-all-modeset-transition:
- shard-apl: PASS -> INCOMPLETE [fdo#103927]
* igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-b:
- shard-kbl: PASS -> DMESG-WARN [fdo#107956]
- shard-snb: PASS -> DMESG-WARN [fdo#107956]
- shard-hsw: PASS -> DMESG-WARN [fdo#107956]
* igt@kms_ccs@pipe-a-crc-sprite-planes-basic:
- shard-glk: PASS -> FAIL [fdo#108145]
* igt@kms_color@pipe-a-degamma:
- shard-glk: NOTRUN -> FAIL [fdo#104782] / [fdo#108145]
* igt@kms_color@pipe-b-degamma:
- shard-snb: NOTRUN -> SKIP [fdo#109271] +106
* igt@kms_cursor_crc@cursor-128x128-suspend:
- shard-glk: NOTRUN -> FAIL [fdo#103232] +1
* igt@kms_cursor_crc@cursor-256x85-onscreen:
- shard-apl: PASS -> FAIL [fdo#103232] +2
* igt@kms_cursor_crc@cursor-64x64-dpms:
- shard-kbl: PASS -> FAIL [fdo#103232] +2
* igt@kms_cursor_crc@cursor-alpha-opaque:
- shard-apl: PASS -> FAIL [fdo#109350]
* igt@kms_cursor_legacy@cursor-vs-flip-toggle:
- shard-hsw: PASS -> FAIL [fdo#103355]
* igt@kms_cursor_legacy@flip-vs-cursor-busy-crc-legacy:
- shard-apl: PASS -> DMESG-WARN [fdo#103558] / [fdo#105602] +14
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
- shard-apl: PASS -> FAIL [fdo#103167] +2
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-wc:
- shard-kbl: PASS -> FAIL [fdo#103167]
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-cpu:
- shard-glk: PASS -> FAIL [fdo#103167] +6
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-render:
- shard-glk: NOTRUN -> SKIP [fdo#109271] +11
* igt@kms_pipe_crc_basic@suspend-read-crc-pipe-f:
- shard-kbl: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +2
* igt@kms_plane_alpha_blend@pipe-a-alpha-7efc:
- shard-kbl: NOTRUN -> FAIL [fdo#108145] / [fdo#108590]
* igt@kms_psr@basic:
- shard-apl: NOTRUN -> SKIP [fdo#109271] +4
* igt@kms_rotation_crc@multiplane-rotation:
- shard-kbl: PASS -> FAIL [fdo#109016]
* igt@kms_universal_plane@cursor-fb-leak-pipe-d:
- shard-snb: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +8
* igt@kms_vblank@pipe-b-ts-continuation-modeset-hang:
- shard-apl: PASS -> FAIL [fdo#104894]
* igt@runner@aborted:
- shard-apl: NOTRUN -> ( 8 FAIL ) [fdo#109373]
#### Possible fixes ####
* igt@i915_pm_rc6_residency@rc6-accuracy:
- shard-snb: SKIP [fdo#109271] -> PASS
* igt@kms_busy@extended-modeset-hang-newfb-render-b:
- shard-hsw: DMESG-WARN [fdo#107956] -> PASS +2
- shard-kbl: DMESG-WARN [fdo#107956] -> PASS +1
- shard-snb: DMESG-WARN [fdo#107956] -> PASS
* igt@kms_ccs@pipe-b-crc-sprite-planes-basic:
- shard-glk: FAIL [fdo#108145] -> PASS
* igt@kms_color@pipe-c-legacy-gamma:
- shard-apl: FAIL [fdo#104782] -> PASS
* igt@kms_cursor_crc@cursor-128x42-random:
- shard-apl: FAIL [fdo#103232] -> PASS +2
* igt@kms_cursor_crc@cursor-256x256-sliding:
- shard-kbl: FAIL [fdo#103232] -> PASS +1
* igt@kms_cursor_crc@cursor-64x64-suspend:
- shard-kbl: FAIL [fdo#103191] / [fdo#103232] -> PASS
* igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic:
- shard-hsw: FAIL [fdo#105767] -> PASS
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-apl: DMESG-WARN [fdo#103558] / [fdo#105602] -> PASS +1
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu:
- shard-apl: FAIL [fdo#103167] -> PASS
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
- shard-glk: FAIL [fdo#103167] -> PASS +1
* {igt@kms_plane@plane-position-covered-pipe-b-planes}:
- shard-apl: FAIL [fdo#110038] -> PASS
* igt@kms_rotation_crc@multiplane-rotation-cropping-top:
- shard-kbl: FAIL [fdo#109016] -> PASS
* igt@kms_universal_plane@universal-plane-pipe-a-functional:
- shard-apl: FAIL [fdo#103166] -> PASS
* igt@kms_vblank@pipe-c-ts-continuation-dpms-suspend:
- shard-kbl: INCOMPLETE [fdo#103665] -> PASS +1
* igt@kms_vblank@pipe-c-ts-continuation-suspend:
- shard-apl: FAIL [fdo#104894] -> PASS +1
- shard-kbl: FAIL [fdo#104894] -> PASS
* igt@perf@rc6-disable:
- shard-kbl: FAIL [fdo#103179] -> PASS
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103179]: https://bugs.freedesktop.org/show_bug.cgi?id=103179
[fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
[fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
[fdo#103355]: https://bugs.freedesktop.org/show_bug.cgi?id=103355
[fdo#103558]: https://bugs.freedesktop.org/show_bug.cgi?id=103558
[fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#104782]: https://bugs.freedesktop.org/show_bug.cgi?id=104782
[fdo#104894]: https://bugs.freedesktop.org/show_bug.cgi?id=104894
[fdo#105602]: https://bugs.freedesktop.org/show_bug.cgi?id=105602
[fdo#105767]: https://bugs.freedesktop.org/show_bug.cgi?id=105767
[fdo#107956]: https://bugs.freedesktop.org/show_bug.cgi?id=107956
[fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
[fdo#108590]: https://bugs.freedesktop.org/show_bug.cgi?id=108590
[fdo#109016]: https://bugs.freedesktop.org/show_bug.cgi?id=109016
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
[fdo#109350]: https://bugs.freedesktop.org/show_bug.cgi?id=109350
[fdo#109373]: https://bugs.freedesktop.org/show_bug.cgi?id=109373
[fdo#109674]: https://bugs.freedesktop.org/show_bug.cgi?id=109674
[fdo#110033]: https://bugs.freedesktop.org/show_bug.cgi?id=110033
[fdo#110037]: https://bugs.freedesktop.org/show_bug.cgi?id=110037
[fdo#110038]: https://bugs.freedesktop.org/show_bug.cgi?id=110038
Participating hosts (10 -> 5)
------------------------------
Missing (5): shard-skl pig-hsw-4770r pig-glk-j5005 shard-iclb pig-skl-6260u
Build changes
-------------
* IGT: IGT_4883 -> IGTPW_2599
* Piglit: piglit_4509 -> None
CI_DRM_5737: d5bb7d77aa77996702426496078a597f30bead58 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2599: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2599/
IGT_4883: b25e06d6ddf2e42044cd9c93b613cbc7339a8c33 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2599/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread
* [igt-dev] [PATCH v20 0/6] new engine discovery interface
@ 2019-04-12 0:32 Andi Shyti
2019-04-12 15:22 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
0 siblings, 1 reply; 18+ messages in thread
From: Andi Shyti @ 2019-04-12 0:32 UTC (permalink / raw)
To: IGT dev; +Cc: Andi Shyti
From: Andi Shyti <andi.shyti@intel.com>
Hi,
In this patchset I propose an alternative way of engine discovery
thanks to the new interfaces developed by Tvrtko and Chris[4].
The changes to perf_pmu are a proposal, most probably they don't
work (it's anyway an RFC) because the dependency to legacy code
is still too strong.
Thanks Tvrtko, Chris, Antonio and Petri for your comments in the
previous RFCs.
Andi
v19 --> v20
===========
- added some debugs from Tvrtko to get more info about gem_wait
failure.
- few fixes in gem_engine_topology.c from Tvrtko's comments,
including a bigger fix about an uncontrolled variable
increment in the _next function
v18 --> v19
===========
- integrated Tvrtko's fixup patch [17]. From this patch some
changes have been moved to gem_engine_topology as a new helper
for getting the engine's properties.
v17 --> v18
===========
- three patches have been applied (the ones that add
gem_context_has_engine() function)
- few cosmetic fixes
- and some changes coming from Tvrtko's review on v17
v16 --> v17
===========
amongst many little things, three main changes:
- improved perf_pmu adaptation to gem_engine_topology
- removed the exec-ctx test, perf_pmu will be the flag test
- when creating the engine list, now the
for_each_engine_physical can be executed safely during subtest
listing
v15 --> v16
===========
- few changes to the gem_engine_topology stuff
- added une more dummy test which loops through the physical
engines, as well.
- changes to test/perf_pmu required some more changes than
expected (the 3 last patches)
v14 --> v15
===========
PATCH v14: [16]
- virtual engines will be called "virtual" like unrecognised
engines will be called "unknown"
- renamed the for_each loops to more meaningful names
(__for_each_static_engine and for_each_context_engine) and
moved into gem_engine_topology.h
- minor changes about data types.
v13 --> v14
===========
PATCH v13: [15]
minor changes this time:
- squashed patch 2 and 3 (from v13) with a little rename and
added Chris r-b
- fixed some index issues and string assignement leaks
- squashed patches 5, 6, 7 and 8 from v13
v12 --> v13
===========
PATCH v12: [14]
This patch is also very different from the previous other than
some reorganization of the code these are the main changes:
- the previous version lacked the case when the context had its
engines mapped. checks in the following order
if the driver doesn't have the new API
-> get the engines from the static list
if the driver has the API but the context has nothing mapped
-> get the engines from "query" and map them
if the driver has the API and the context has engines mapped
-> get the engines from the context
- the helper functions have been removed as they were of no use.
v11 --> v12
===========
PATCH v11: [13]
This 12th version starts from a completely different thought.
Here's the main differences:
- The list of engines is provided in an engine_data structure
which contains an index (useful for looping through and for
engine/context index mapping) instead of an array of engines.
- The list of engines is generated every time the init function
is called and nothing is allocated in heap memory.
- The ioctl check is done already during the initialization part
and if the new ioctls are not implemented, then the init
function still stores only those present in the GPU.
- The for_each loop is implemented by re-using the previous
'for_each_engine_class_instance()' implemented by Tvrtko.
- The gem_topology library offers few helper functions for
checking the engine presence, checking the implementation of
the ioctls and executing the buffer, in order to be completely
unaware of the driver implementation.
Thanks Tvrtko for all your inputs.
v10 --> v11
===========
RFC v10: [12]
few cosmetic changes in v11 and minor architectural details.
Thanks Tvrtko.
- the 'query_engines()' functions are static as no one is using
them yet.
- removed the 'gem_has_engine_topology()' function because it's
very little used, 'get_active_engines()' can be used instead.
- a minor ring -> engine renaming coming from Chris.
v9 --> v10
==========
RFC v9: [11]
also this time quite many changes, thanks Chris for the reviews,
here the most relevant of them.
- gem_query.[ch] have been renamed to gem_engine_topology.[ch]
and all the functions ended up there as they are referring to
the topology of the engines.
- the functions 'get_active_engines()',
'gem_set_context_get_engines()' and
'igt_require_gem_engine_list()' will be the main interface to
the gem_engine_topology library, refer to patch 2 for details.
- the define 'for_each_engine2()' doesn't expose anymore the
iterator.
- 'gem_context_has_engine()' has been moved from ioctl_wrappers.c
to gem_context.c.
- the gem_exec_basic exec-ctx subtest does not abort if the new
getparam/setparam and query apis are not implemented as it can
work with both (as it was done at the beginning).
v8 --> v9
=========
RFC v8: [10]
quite many changes, please refer to the review in [10]. Thanks
Chris for the review. These are the most relevant:
- all the allocation in gem_query have been made in stack, not
anymore allocated dynamically.
- removed get/set_context as it was already implemented and I
didn't know.
- renamed some functions and variables to hopefully more
meaningful names.
V7 --> v8
=========
RFC v7: [9]
- all functions have been moved from lib/igt_gt.{c,h} and
lib/ioctl_wrappers.{c,h} to lib/i916/gem_query.{c,h}. (thanks
Chris)
- 'for_each_engine_ctx' has been renamed to 'for_each_engine2' to
be consistent with the '2' that indicates the new 'struct
intel_execution_engine2' data structure.
V6 --> V7
=========
RFC v6: [8]
- a new patch has been added (patch 3) which adds a new
requirement check through the igt_require_gem_engine_list()
function. (thanks Chris) This function will initialize the
engine list instead of the instead of igt_require_gem() as it
was in v6
- all the ioctls have been wrapped (thanks Chris and Antonio) and
new library functions have been added and assert the ioctls
- gem_init_engine_list() function returns the errno from the
GETPARAM ioctl in order to be used as a requirement. (thanks
Chris)
- fixed few requires/asserts
- The engine list "intel_active_engines2" is allocated of the
number of engines instead of a political 64 (thanks Antonio).
- some parameter renaming in gem_has_ring_by_idx(). (thanks
Chris).
- the original "intel_execution_engines2" has not been renamed,
because it is used to create subtests before even executing any
test/ioctl. By renaming it, some subtest generations failed.
(thanks Petri)
V5 --> V6
=========
RFC v5: [7]
- Chris implemented the getparam ioctl which allows to the test
to figure otu whether the new interface has been implemented.
This way the for_each_engine_ctx() is able to work with new and
old kernel uapi (thanks Chris)
V4 --> V5
=========
RFC v4: [6]
- the engine list is now built in 'igt_require_gem()' instead of
'__open_driver()' so that we keep this discovery method
specific to the i915 driver (thanks Chris).
- All the query/setparam structures dynamic allocation based on
the number of engines, now are politically allocated 64 times,
to avoid extra ioctl calls that retrieve the engine number
(thanks Chris)
- use igt_ioctl instead of ioctl (thanks Chris)
- allocate intel_execution_engines2 dynamically instead of
statically (thanks Tvrtko)
- simplify the test in 'gem_exec_basic()' so that simply checks
the presence of the engine instead of executing a buffer
(thank Chris)
- a new patch has been added (patch 3) that extends the
'gem_has_ring()' boolean function. The new version sets the
index as it's mapped in the kernel.The previous function is now
a wrapper to the new function.
V3 --> V4
=========
PATCH v3: [3]
- re-architectured the discovery mechanism based on Tvrtko's
sugestion and reviews.. In this version the discovery is done
during the device opening and stored in a NULL terminated
array, which replaces the existing intel_execution_engines2
that is mainly used as a reference.
V2 --> V3
=========
RFC v2: [2]
- removed a standalone gem_query_engines_demo test and added the
exec-ctx subtest inside gem_exec_basic (thanks Tvrtko).
- fixed most of Tvrtko's comments in [5], which consist in
putting the mallocs igt_assert and ictls in igt_require and few
refactoring (thanks Tvrtko).
V1 --> V2
=========
RFC v1: [1]
- added a demo test that simply queries the driver about the
engines and executes a buffer (thanks Tvrtko)
- refactored the for_each_engine_ctx() macro so that what in the
previous version was done by the "bind" function, now it's done
in the first iteration. (Thanks Crhis)
- removed the "gem_has_ring_ctx()" because it was out of the
scope.
- rename functions to more meaningful names
[1] RFC v1: https://lists.freedesktop.org/archives/igt-dev/2018-November/007025.html
[2] RFC v2: https://lists.freedesktop.org/archives/igt-dev/2018-November/007079.html
[3] PATCH v3: https://lists.freedesktop.org/archives/igt-dev/2018-November/007148.html
[4] https://cgit.freedesktop.org/~tursulin/drm-intel/log/?h=media
[5] https://lists.freedesktop.org/archives/igt-dev/2018-November/007100.html
[6] https://lists.freedesktop.org/archives/igt-dev/2019-January/008029.html
[7] https://lists.freedesktop.org/archives/igt-dev/2019-January/008165.html
[8] https://lists.freedesktop.org/archives/igt-dev/2019-February/008902.html
[9] https://lists.freedesktop.org/archives/igt-dev/2019-February/009185.html
[10] https://lists.freedesktop.org/archives/igt-dev/2019-February/009205.html
[11] https://lists.freedesktop.org/archives/igt-dev/2019-February/009277.html
[12] https://lists.freedesktop.org/archives/igt-dev/2019-March/010197.html
[13] https://lists.freedesktop.org/archives/igt-dev/2019-March/010467.html
[14] https://lists.freedesktop.org/archives/igt-dev/2019-March/010776.html
[15] https://lists.freedesktop.org/archives/igt-dev/2019-March/010827.html
[16] https://lists.freedesktop.org/archives/igt-dev/2019-March/010916.html
[17] https://lists.freedesktop.org/archives/igt-dev/2019-April/011821.html
Andi Shyti (6):
include/drm-uapi: import i915_drm.h header file
lib/i915: add gem_engine_topology library and for_each loop definition
lib: igt_gt: add eb flags to class helper
lib: igt_gt: make gem_engine_can_store_dword() check engine class
lib: igt_dummyload: use for_each_context_engine()
test: perf_pmu: use the gem_engine_topology library
include/drm-uapi/i915_drm.h | 361 +++++++++++++++++++++++++++------
lib/Makefile.sources | 2 +
lib/i915/gem_engine_topology.c | 298 +++++++++++++++++++++++++++
lib/i915/gem_engine_topology.h | 80 ++++++++
lib/igt.h | 1 +
lib/igt_dummyload.c | 33 ++-
lib/igt_gt.c | 29 ++-
lib/igt_gt.h | 12 +-
lib/meson.build | 1 +
tests/perf_pmu.c | 146 +++++++------
10 files changed, 830 insertions(+), 133 deletions(-)
create mode 100644 lib/i915/gem_engine_topology.c
create mode 100644 lib/i915/gem_engine_topology.h
--
2.20.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread* [igt-dev] [PATCH v21 0/6] new engine discovery interface
@ 2019-04-16 15:11 Andi Shyti
2019-04-17 0:46 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
0 siblings, 1 reply; 18+ messages in thread
From: Andi Shyti @ 2019-04-16 15:11 UTC (permalink / raw)
To: IGT dev; +Cc: Andi Shyti
Hi,
In this patchset I propose an alternative way of engine discovery
thanks to the new interfaces developed by Tvrtko and Chris[4].
The changes to perf_pmu are a proposal, most probably they don't
work (it's anyway an RFC) because the dependency to legacy code
is still too strong.
Thanks Tvrtko, Chris, Antonio and Petri for your comments in the
previous RFCs.
Andi
v20 --> v21
===========
- removed Tvrtko's debug messages
- few fixes from Chris last review
v19 --> v20
===========
- added some debugs from Tvrtko to get more info about gem_wait
failure.
- few fixes in gem_engine_topology.c from Tvrtko's comments,
including a bigger fix about an uncontrolled variable
increment in the _next function
v18 --> v19
===========
- integrated Tvrtko's fixup patch [17]. From this patch some
changes have been moved to gem_engine_topology as a new helper
for getting the engine's properties.
v17 --> v18
===========
- three patches have been applied (the ones that add
gem_context_has_engine() function)
- few cosmetic fixes
- and some changes coming from Tvrtko's review on v17
v16 --> v17
===========
amongst many little things, three main changes:
- improved perf_pmu adaptation to gem_engine_topology
- removed the exec-ctx test, perf_pmu will be the flag test
- when creating the engine list, now the
for_each_engine_physical can be executed safely during subtest
listing
v15 --> v16
===========
- few changes to the gem_engine_topology stuff
- added une more dummy test which loops through the physical
engines, as well.
- changes to test/perf_pmu required some more changes than
expected (the 3 last patches)
v14 --> v15
===========
PATCH v14: [16]
- virtual engines will be called "virtual" like unrecognised
engines will be called "unknown"
- renamed the for_each loops to more meaningful names
(__for_each_static_engine and for_each_context_engine) and
moved into gem_engine_topology.h
- minor changes about data types.
v13 --> v14
===========
PATCH v13: [15]
minor changes this time:
- squashed patch 2 and 3 (from v13) with a little rename and
added Chris r-b
- fixed some index issues and string assignement leaks
- squashed patches 5, 6, 7 and 8 from v13
v12 --> v13
===========
PATCH v12: [14]
This patch is also very different from the previous other than
some reorganization of the code these are the main changes:
- the previous version lacked the case when the context had its
engines mapped. checks in the following order
if the driver doesn't have the new API
-> get the engines from the static list
if the driver has the API but the context has nothing mapped
-> get the engines from "query" and map them
if the driver has the API and the context has engines mapped
-> get the engines from the context
- the helper functions have been removed as they were of no use.
v11 --> v12
===========
PATCH v11: [13]
This 12th version starts from a completely different thought.
Here's the main differences:
- The list of engines is provided in an engine_data structure
which contains an index (useful for looping through and for
engine/context index mapping) instead of an array of engines.
- The list of engines is generated every time the init function
is called and nothing is allocated in heap memory.
- The ioctl check is done already during the initialization part
and if the new ioctls are not implemented, then the init
function still stores only those present in the GPU.
- The for_each loop is implemented by re-using the previous
'for_each_engine_class_instance()' implemented by Tvrtko.
- The gem_topology library offers few helper functions for
checking the engine presence, checking the implementation of
the ioctls and executing the buffer, in order to be completely
unaware of the driver implementation.
Thanks Tvrtko for all your inputs.
v10 --> v11
===========
RFC v10: [12]
few cosmetic changes in v11 and minor architectural details.
Thanks Tvrtko.
- the 'query_engines()' functions are static as no one is using
them yet.
- removed the 'gem_has_engine_topology()' function because it's
very little used, 'get_active_engines()' can be used instead.
- a minor ring -> engine renaming coming from Chris.
v9 --> v10
==========
RFC v9: [11]
also this time quite many changes, thanks Chris for the reviews,
here the most relevant of them.
- gem_query.[ch] have been renamed to gem_engine_topology.[ch]
and all the functions ended up there as they are referring to
the topology of the engines.
- the functions 'get_active_engines()',
'gem_set_context_get_engines()' and
'igt_require_gem_engine_list()' will be the main interface to
the gem_engine_topology library, refer to patch 2 for details.
- the define 'for_each_engine2()' doesn't expose anymore the
iterator.
- 'gem_context_has_engine()' has been moved from ioctl_wrappers.c
to gem_context.c.
- the gem_exec_basic exec-ctx subtest does not abort if the new
getparam/setparam and query apis are not implemented as it can
work with both (as it was done at the beginning).
v8 --> v9
=========
RFC v8: [10]
quite many changes, please refer to the review in [10]. Thanks
Chris for the review. These are the most relevant:
- all the allocation in gem_query have been made in stack, not
anymore allocated dynamically.
- removed get/set_context as it was already implemented and I
didn't know.
- renamed some functions and variables to hopefully more
meaningful names.
V7 --> v8
=========
RFC v7: [9]
- all functions have been moved from lib/igt_gt.{c,h} and
lib/ioctl_wrappers.{c,h} to lib/i916/gem_query.{c,h}. (thanks
Chris)
- 'for_each_engine_ctx' has been renamed to 'for_each_engine2' to
be consistent with the '2' that indicates the new 'struct
intel_execution_engine2' data structure.
V6 --> V7
=========
RFC v6: [8]
- a new patch has been added (patch 3) which adds a new
requirement check through the igt_require_gem_engine_list()
function. (thanks Chris) This function will initialize the
engine list instead of the instead of igt_require_gem() as it
was in v6
- all the ioctls have been wrapped (thanks Chris and Antonio) and
new library functions have been added and assert the ioctls
- gem_init_engine_list() function returns the errno from the
GETPARAM ioctl in order to be used as a requirement. (thanks
Chris)
- fixed few requires/asserts
- The engine list "intel_active_engines2" is allocated of the
number of engines instead of a political 64 (thanks Antonio).
- some parameter renaming in gem_has_ring_by_idx(). (thanks
Chris).
- the original "intel_execution_engines2" has not been renamed,
because it is used to create subtests before even executing any
test/ioctl. By renaming it, some subtest generations failed.
(thanks Petri)
V5 --> V6
=========
RFC v5: [7]
- Chris implemented the getparam ioctl which allows to the test
to figure otu whether the new interface has been implemented.
This way the for_each_engine_ctx() is able to work with new and
old kernel uapi (thanks Chris)
V4 --> V5
=========
RFC v4: [6]
- the engine list is now built in 'igt_require_gem()' instead of
'__open_driver()' so that we keep this discovery method
specific to the i915 driver (thanks Chris).
- All the query/setparam structures dynamic allocation based on
the number of engines, now are politically allocated 64 times,
to avoid extra ioctl calls that retrieve the engine number
(thanks Chris)
- use igt_ioctl instead of ioctl (thanks Chris)
- allocate intel_execution_engines2 dynamically instead of
statically (thanks Tvrtko)
- simplify the test in 'gem_exec_basic()' so that simply checks
the presence of the engine instead of executing a buffer
(thank Chris)
- a new patch has been added (patch 3) that extends the
'gem_has_ring()' boolean function. The new version sets the
index as it's mapped in the kernel.The previous function is now
a wrapper to the new function.
V3 --> V4
=========
PATCH v3: [3]
- re-architectured the discovery mechanism based on Tvrtko's
sugestion and reviews.. In this version the discovery is done
during the device opening and stored in a NULL terminated
array, which replaces the existing intel_execution_engines2
that is mainly used as a reference.
V2 --> V3
=========
RFC v2: [2]
- removed a standalone gem_query_engines_demo test and added the
exec-ctx subtest inside gem_exec_basic (thanks Tvrtko).
- fixed most of Tvrtko's comments in [5], which consist in
putting the mallocs igt_assert and ictls in igt_require and few
refactoring (thanks Tvrtko).
V1 --> V2
=========
RFC v1: [1]
- added a demo test that simply queries the driver about the
engines and executes a buffer (thanks Tvrtko)
- refactored the for_each_engine_ctx() macro so that what in the
previous version was done by the "bind" function, now it's done
in the first iteration. (Thanks Crhis)
- removed the "gem_has_ring_ctx()" because it was out of the
scope.
- rename functions to more meaningful names
[1] RFC v1: https://lists.freedesktop.org/archives/igt-dev/2018-November/007025.html
[2] RFC v2: https://lists.freedesktop.org/archives/igt-dev/2018-November/007079.html
[3] PATCH v3: https://lists.freedesktop.org/archives/igt-dev/2018-November/007148.html
[4] https://cgit.freedesktop.org/~tursulin/drm-intel/log/?h=media
[5] https://lists.freedesktop.org/archives/igt-dev/2018-November/007100.html
[6] https://lists.freedesktop.org/archives/igt-dev/2019-January/008029.html
[7] https://lists.freedesktop.org/archives/igt-dev/2019-January/008165.html
[8] https://lists.freedesktop.org/archives/igt-dev/2019-February/008902.html
[9] https://lists.freedesktop.org/archives/igt-dev/2019-February/009185.html
[10] https://lists.freedesktop.org/archives/igt-dev/2019-February/009205.html
[11] https://lists.freedesktop.org/archives/igt-dev/2019-February/009277.html
[12] https://lists.freedesktop.org/archives/igt-dev/2019-March/010197.html
[13] https://lists.freedesktop.org/archives/igt-dev/2019-March/010467.html
[14] https://lists.freedesktop.org/archives/igt-dev/2019-March/010776.html
[15] https://lists.freedesktop.org/archives/igt-dev/2019-March/010827.html
[16] https://lists.freedesktop.org/archives/igt-dev/2019-March/010916.html
[17] https://lists.freedesktop.org/archives/igt-dev/2019-April/011821.html
Andi Shyti (6):
include/drm-uapi: import i915_drm.h header file
lib/i915: add gem_engine_topology library and for_each loop definition
lib: igt_gt: add execution buffer flags to class helper
lib: igt_gt: make gem_engine_can_store_dword() check engine class
lib: igt_dummyload: use for_each_context_engine()
test: perf_pmu: use the gem_engine_topology library
include/drm-uapi/i915_drm.h | 361 +++++++++++++++++++++++++++------
lib/Makefile.sources | 2 +
lib/i915/gem_engine_topology.c | 291 ++++++++++++++++++++++++++
lib/i915/gem_engine_topology.h | 80 ++++++++
lib/igt.h | 1 +
lib/igt_dummyload.c | 29 ++-
lib/igt_gt.c | 30 ++-
lib/igt_gt.h | 12 +-
lib/meson.build | 1 +
tests/perf_pmu.c | 148 ++++++++------
10 files changed, 821 insertions(+), 134 deletions(-)
create mode 100644 lib/i915/gem_engine_topology.c
create mode 100644 lib/i915/gem_engine_topology.h
--
2.20.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread* [igt-dev] [PATCH v22 0/6] new engine discovery interface
@ 2019-04-16 23:10 Andi Shyti
2019-04-17 9:50 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
0 siblings, 1 reply; 18+ messages in thread
From: Andi Shyti @ 2019-04-16 23:10 UTC (permalink / raw)
To: IGT dev; +Cc: Andi Shyti
From: Andi Shyti <andi.shyti@intel.com>
Hi,
In this patchset I propose an alternative way of engine discovery
thanks to the new interfaces developed by Tvrtko and Chris[4].
Thanks Tvrtko, Chris, Antonio and Petri for your comments in the
previous RFCs.
Andi
v21 --> v22
===========
- just removed context creation and deletion from
engine_topology and fixed perf_pmu accordingly.
v20 --> v21
===========
- removed Tvrtko's debug messages
- few fixes from Chris last review
v19 --> v20
===========
- added some debugs from Tvrtko to get more info about gem_wait
failure.
- few fixes in gem_engine_topology.c from Tvrtko's comments,
including a bigger fix about an uncontrolled variable
increment in the _next function
v18 --> v19
===========
- integrated Tvrtko's fixup patch [17]. From this patch some
changes have been moved to gem_engine_topology as a new helper
for getting the engine's properties.
v17 --> v18
===========
- three patches have been applied (the ones that add
gem_context_has_engine() function)
- few cosmetic fixes
- and some changes coming from Tvrtko's review on v17
v16 --> v17
===========
amongst many little things, three main changes:
- improved perf_pmu adaptation to gem_engine_topology
- removed the exec-ctx test, perf_pmu will be the flag test
- when creating the engine list, now the
for_each_engine_physical can be executed safely during subtest
listing
v15 --> v16
===========
- few changes to the gem_engine_topology stuff
- added une more dummy test which loops through the physical
engines, as well.
- changes to test/perf_pmu required some more changes than
expected (the 3 last patches)
v14 --> v15
===========
PATCH v14: [16]
- virtual engines will be called "virtual" like unrecognised
engines will be called "unknown"
- renamed the for_each loops to more meaningful names
(__for_each_static_engine and for_each_context_engine) and
moved into gem_engine_topology.h
- minor changes about data types.
v13 --> v14
===========
PATCH v13: [15]
minor changes this time:
- squashed patch 2 and 3 (from v13) with a little rename and
added Chris r-b
- fixed some index issues and string assignement leaks
- squashed patches 5, 6, 7 and 8 from v13
v12 --> v13
===========
PATCH v12: [14]
This patch is also very different from the previous other than
some reorganization of the code these are the main changes:
- the previous version lacked the case when the context had its
engines mapped. checks in the following order
if the driver doesn't have the new API
-> get the engines from the static list
if the driver has the API but the context has nothing mapped
-> get the engines from "query" and map them
if the driver has the API and the context has engines mapped
-> get the engines from the context
- the helper functions have been removed as they were of no use.
v11 --> v12
===========
PATCH v11: [13]
This 12th version starts from a completely different thought.
Here's the main differences:
- The list of engines is provided in an engine_data structure
which contains an index (useful for looping through and for
engine/context index mapping) instead of an array of engines.
- The list of engines is generated every time the init function
is called and nothing is allocated in heap memory.
- The ioctl check is done already during the initialization part
and if the new ioctls are not implemented, then the init
function still stores only those present in the GPU.
- The for_each loop is implemented by re-using the previous
'for_each_engine_class_instance()' implemented by Tvrtko.
- The gem_topology library offers few helper functions for
checking the engine presence, checking the implementation of
the ioctls and executing the buffer, in order to be completely
unaware of the driver implementation.
Thanks Tvrtko for all your inputs.
v10 --> v11
===========
RFC v10: [12]
few cosmetic changes in v11 and minor architectural details.
Thanks Tvrtko.
- the 'query_engines()' functions are static as no one is using
them yet.
- removed the 'gem_has_engine_topology()' function because it's
very little used, 'get_active_engines()' can be used instead.
- a minor ring -> engine renaming coming from Chris.
v9 --> v10
==========
RFC v9: [11]
also this time quite many changes, thanks Chris for the reviews,
here the most relevant of them.
- gem_query.[ch] have been renamed to gem_engine_topology.[ch]
and all the functions ended up there as they are referring to
the topology of the engines.
- the functions 'get_active_engines()',
'gem_set_context_get_engines()' and
'igt_require_gem_engine_list()' will be the main interface to
the gem_engine_topology library, refer to patch 2 for details.
- the define 'for_each_engine2()' doesn't expose anymore the
iterator.
- 'gem_context_has_engine()' has been moved from ioctl_wrappers.c
to gem_context.c.
- the gem_exec_basic exec-ctx subtest does not abort if the new
getparam/setparam and query apis are not implemented as it can
work with both (as it was done at the beginning).
v8 --> v9
=========
RFC v8: [10]
quite many changes, please refer to the review in [10]. Thanks
Chris for the review. These are the most relevant:
- all the allocation in gem_query have been made in stack, not
anymore allocated dynamically.
- removed get/set_context as it was already implemented and I
didn't know.
- renamed some functions and variables to hopefully more
meaningful names.
V7 --> v8
=========
RFC v7: [9]
- all functions have been moved from lib/igt_gt.{c,h} and
lib/ioctl_wrappers.{c,h} to lib/i916/gem_query.{c,h}. (thanks
Chris)
- 'for_each_engine_ctx' has been renamed to 'for_each_engine2' to
be consistent with the '2' that indicates the new 'struct
intel_execution_engine2' data structure.
V6 --> V7
=========
RFC v6: [8]
- a new patch has been added (patch 3) which adds a new
requirement check through the igt_require_gem_engine_list()
function. (thanks Chris) This function will initialize the
engine list instead of the instead of igt_require_gem() as it
was in v6
- all the ioctls have been wrapped (thanks Chris and Antonio) and
new library functions have been added and assert the ioctls
- gem_init_engine_list() function returns the errno from the
GETPARAM ioctl in order to be used as a requirement. (thanks
Chris)
- fixed few requires/asserts
- The engine list "intel_active_engines2" is allocated of the
number of engines instead of a political 64 (thanks Antonio).
- some parameter renaming in gem_has_ring_by_idx(). (thanks
Chris).
- the original "intel_execution_engines2" has not been renamed,
because it is used to create subtests before even executing any
test/ioctl. By renaming it, some subtest generations failed.
(thanks Petri)
V5 --> V6
=========
RFC v5: [7]
- Chris implemented the getparam ioctl which allows to the test
to figure otu whether the new interface has been implemented.
This way the for_each_engine_ctx() is able to work with new and
old kernel uapi (thanks Chris)
V4 --> V5
=========
RFC v4: [6]
- the engine list is now built in 'igt_require_gem()' instead of
'__open_driver()' so that we keep this discovery method
specific to the i915 driver (thanks Chris).
- All the query/setparam structures dynamic allocation based on
the number of engines, now are politically allocated 64 times,
to avoid extra ioctl calls that retrieve the engine number
(thanks Chris)
- use igt_ioctl instead of ioctl (thanks Chris)
- allocate intel_execution_engines2 dynamically instead of
statically (thanks Tvrtko)
- simplify the test in 'gem_exec_basic()' so that simply checks
the presence of the engine instead of executing a buffer
(thank Chris)
- a new patch has been added (patch 3) that extends the
'gem_has_ring()' boolean function. The new version sets the
index as it's mapped in the kernel.The previous function is now
a wrapper to the new function.
V3 --> V4
=========
PATCH v3: [3]
- re-architectured the discovery mechanism based on Tvrtko's
sugestion and reviews.. In this version the discovery is done
during the device opening and stored in a NULL terminated
array, which replaces the existing intel_execution_engines2
that is mainly used as a reference.
V2 --> V3
=========
RFC v2: [2]
- removed a standalone gem_query_engines_demo test and added the
exec-ctx subtest inside gem_exec_basic (thanks Tvrtko).
- fixed most of Tvrtko's comments in [5], which consist in
putting the mallocs igt_assert and ictls in igt_require and few
refactoring (thanks Tvrtko).
V1 --> V2
=========
RFC v1: [1]
- added a demo test that simply queries the driver about the
engines and executes a buffer (thanks Tvrtko)
- refactored the for_each_engine_ctx() macro so that what in the
previous version was done by the "bind" function, now it's done
in the first iteration. (Thanks Crhis)
- removed the "gem_has_ring_ctx()" because it was out of the
scope.
- rename functions to more meaningful names
[1] RFC v1: https://lists.freedesktop.org/archives/igt-dev/2018-November/007025.html
[2] RFC v2: https://lists.freedesktop.org/archives/igt-dev/2018-November/007079.html
[3] PATCH v3: https://lists.freedesktop.org/archives/igt-dev/2018-November/007148.html
[4] https://cgit.freedesktop.org/~tursulin/drm-intel/log/?h=media
[5] https://lists.freedesktop.org/archives/igt-dev/2018-November/007100.html
[6] https://lists.freedesktop.org/archives/igt-dev/2019-January/008029.html
[7] https://lists.freedesktop.org/archives/igt-dev/2019-January/008165.html
[8] https://lists.freedesktop.org/archives/igt-dev/2019-February/008902.html
[9] https://lists.freedesktop.org/archives/igt-dev/2019-February/009185.html
[10] https://lists.freedesktop.org/archives/igt-dev/2019-February/009205.html
[11] https://lists.freedesktop.org/archives/igt-dev/2019-February/009277.html
[12] https://lists.freedesktop.org/archives/igt-dev/2019-March/010197.html
[13] https://lists.freedesktop.org/archives/igt-dev/2019-March/010467.html
[14] https://lists.freedesktop.org/archives/igt-dev/2019-March/010776.html
[15] https://lists.freedesktop.org/archives/igt-dev/2019-March/010827.html
[16] https://lists.freedesktop.org/archives/igt-dev/2019-March/010916.html
[17] https://lists.freedesktop.org/archives/igt-dev/2019-April/011821.html
Andi Shyti (6):
include/drm-uapi: import i915_drm.h header file
lib/i915: add gem_engine_topology library and for_each loop definition
lib: igt_gt: add execution buffer flags to class helper
lib: igt_gt: make gem_engine_can_store_dword() check engine class
lib: igt_dummyload: use for_each_context_engine()
test: perf_pmu: use the gem_engine_topology library
include/drm-uapi/i915_drm.h | 361 +++++++++++++++++++++++++++------
lib/Makefile.sources | 2 +
lib/i915/gem_engine_topology.c | 282 +++++++++++++++++++++++++
lib/i915/gem_engine_topology.h | 79 ++++++++
lib/igt.h | 1 +
lib/igt_dummyload.c | 29 ++-
lib/igt_gt.c | 30 ++-
lib/igt_gt.h | 12 +-
lib/meson.build | 1 +
tests/perf_pmu.c | 154 ++++++++------
10 files changed, 814 insertions(+), 137 deletions(-)
create mode 100644 lib/i915/gem_engine_topology.c
create mode 100644 lib/i915/gem_engine_topology.h
--
2.20.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread* [igt-dev] [PATCH v23 00/14] new engine discovery interface
@ 2019-05-13 0:44 Andi Shyti
2019-05-13 3:27 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
0 siblings, 1 reply; 18+ messages in thread
From: Andi Shyti @ 2019-05-13 0:44 UTC (permalink / raw)
To: IGT dev; +Cc: Andi Shyti
From: Andi Shyti <andi.shyti@intel.com>
Hi,
In this patchset I propose an alternative way of engine discovery
thanks to the new interfaces developed by Tvrtko and Chris[4].
Thanks Tvrtko, Chris, Antonio and Petri for your comments in the
previous RFCs.
Andi
v22 --> v23
===========
updated the following tests to the new APIs:
gem_busy
gem_cs_tlb
gem_ctx_exec
gem_exec_basic
gem_exec_parallel
gem_exec_store
gem_wait
i915_hangman
v21 --> v22
===========
- just removed context creation and deletion from
engine_topology and fixed perf_pmu accordingly.
v20 --> v21
===========
- removed Tvrtko's debug messages
- few fixes from Chris last review
v19 --> v20
===========
- added some debugs from Tvrtko to get more info about gem_wait
failure.
- few fixes in gem_engine_topology.c from Tvrtko's comments,
including a bigger fix about an uncontrolled variable
increment in the _next function
v18 --> v19
===========
- integrated Tvrtko's fixup patch [17]. From this patch some
changes have been moved to gem_engine_topology as a new helper
for getting the engine's properties.
v17 --> v18
===========
- three patches have been applied (the ones that add
gem_context_has_engine() function)
- few cosmetic fixes
- and some changes coming from Tvrtko's review on v17
v16 --> v17
===========
amongst many little things, three main changes:
- improved perf_pmu adaptation to gem_engine_topology
- removed the exec-ctx test, perf_pmu will be the flag test
- when creating the engine list, now the
for_each_engine_physical can be executed safely during subtest
listing
v15 --> v16
===========
- few changes to the gem_engine_topology stuff
- added une more dummy test which loops through the physical
engines, as well.
- changes to test/perf_pmu required some more changes than
expected (the 3 last patches)
v14 --> v15
===========
PATCH v14: [16]
- virtual engines will be called "virtual" like unrecognised
engines will be called "unknown"
- renamed the for_each loops to more meaningful names
(__for_each_static_engine and for_each_context_engine) and
moved into gem_engine_topology.h
- minor changes about data types.
v13 --> v14
===========
PATCH v13: [15]
minor changes this time:
- squashed patch 2 and 3 (from v13) with a little rename and
added Chris r-b
- fixed some index issues and string assignement leaks
- squashed patches 5, 6, 7 and 8 from v13
v12 --> v13
===========
PATCH v12: [14]
This patch is also very different from the previous other than
some reorganization of the code these are the main changes:
- the previous version lacked the case when the context had its
engines mapped. checks in the following order
if the driver doesn't have the new API
-> get the engines from the static list
if the driver has the API but the context has nothing mapped
-> get the engines from "query" and map them
if the driver has the API and the context has engines mapped
-> get the engines from the context
- the helper functions have been removed as they were of no use.
v11 --> v12
===========
PATCH v11: [13]
This 12th version starts from a completely different thought.
Here's the main differences:
- The list of engines is provided in an engine_data structure
which contains an index (useful for looping through and for
engine/context index mapping) instead of an array of engines.
- The list of engines is generated every time the init function
is called and nothing is allocated in heap memory.
- The ioctl check is done already during the initialization part
and if the new ioctls are not implemented, then the init
function still stores only those present in the GPU.
- The for_each loop is implemented by re-using the previous
'for_each_engine_class_instance()' implemented by Tvrtko.
- The gem_topology library offers few helper functions for
checking the engine presence, checking the implementation of
the ioctls and executing the buffer, in order to be completely
unaware of the driver implementation.
Thanks Tvrtko for all your inputs.
v10 --> v11
===========
RFC v10: [12]
few cosmetic changes in v11 and minor architectural details.
Thanks Tvrtko.
- the 'query_engines()' functions are static as no one is using
them yet.
- removed the 'gem_has_engine_topology()' function because it's
very little used, 'get_active_engines()' can be used instead.
- a minor ring -> engine renaming coming from Chris.
v9 --> v10
==========
RFC v9: [11]
also this time quite many changes, thanks Chris for the reviews,
here the most relevant of them.
- gem_query.[ch] have been renamed to gem_engine_topology.[ch]
and all the functions ended up there as they are referring to
the topology of the engines.
- the functions 'get_active_engines()',
'gem_set_context_get_engines()' and
'igt_require_gem_engine_list()' will be the main interface to
the gem_engine_topology library, refer to patch 2 for details.
- the define 'for_each_engine2()' doesn't expose anymore the
iterator.
- 'gem_context_has_engine()' has been moved from ioctl_wrappers.c
to gem_context.c.
- the gem_exec_basic exec-ctx subtest does not abort if the new
getparam/setparam and query apis are not implemented as it can
work with both (as it was done at the beginning).
v8 --> v9
=========
RFC v8: [10]
quite many changes, please refer to the review in [10]. Thanks
Chris for the review. These are the most relevant:
- all the allocation in gem_query have been made in stack, not
anymore allocated dynamically.
- removed get/set_context as it was already implemented and I
didn't know.
- renamed some functions and variables to hopefully more
meaningful names.
V7 --> v8
=========
RFC v7: [9]
- all functions have been moved from lib/igt_gt.{c,h} and
lib/ioctl_wrappers.{c,h} to lib/i916/gem_query.{c,h}. (thanks
Chris)
- 'for_each_engine_ctx' has been renamed to 'for_each_engine2' to
be consistent with the '2' that indicates the new 'struct
intel_execution_engine2' data structure.
V6 --> V7
=========
RFC v6: [8]
- a new patch has been added (patch 3) which adds a new
requirement check through the igt_require_gem_engine_list()
function. (thanks Chris) This function will initialize the
engine list instead of the instead of igt_require_gem() as it
was in v6
- all the ioctls have been wrapped (thanks Chris and Antonio) and
new library functions have been added and assert the ioctls
- gem_init_engine_list() function returns the errno from the
GETPARAM ioctl in order to be used as a requirement. (thanks
Chris)
- fixed few requires/asserts
- The engine list "intel_active_engines2" is allocated of the
number of engines instead of a political 64 (thanks Antonio).
- some parameter renaming in gem_has_ring_by_idx(). (thanks
Chris).
- the original "intel_execution_engines2" has not been renamed,
because it is used to create subtests before even executing any
test/ioctl. By renaming it, some subtest generations failed.
(thanks Petri)
V5 --> V6
=========
RFC v5: [7]
- Chris implemented the getparam ioctl which allows to the test
to figure otu whether the new interface has been implemented.
This way the for_each_engine_ctx() is able to work with new and
old kernel uapi (thanks Chris)
V4 --> V5
=========
RFC v4: [6]
- the engine list is now built in 'igt_require_gem()' instead of
'__open_driver()' so that we keep this discovery method
specific to the i915 driver (thanks Chris).
- All the query/setparam structures dynamic allocation based on
the number of engines, now are politically allocated 64 times,
to avoid extra ioctl calls that retrieve the engine number
(thanks Chris)
- use igt_ioctl instead of ioctl (thanks Chris)
- allocate intel_execution_engines2 dynamically instead of
statically (thanks Tvrtko)
- simplify the test in 'gem_exec_basic()' so that simply checks
the presence of the engine instead of executing a buffer
(thank Chris)
- a new patch has been added (patch 3) that extends the
'gem_has_ring()' boolean function. The new version sets the
index as it's mapped in the kernel.The previous function is now
a wrapper to the new function.
V3 --> V4
=========
PATCH v3: [3]
- re-architectured the discovery mechanism based on Tvrtko's
sugestion and reviews.. In this version the discovery is done
during the device opening and stored in a NULL terminated
array, which replaces the existing intel_execution_engines2
that is mainly used as a reference.
V2 --> V3
=========
RFC v2: [2]
- removed a standalone gem_query_engines_demo test and added the
exec-ctx subtest inside gem_exec_basic (thanks Tvrtko).
- fixed most of Tvrtko's comments in [5], which consist in
putting the mallocs igt_assert and ictls in igt_require and few
refactoring (thanks Tvrtko).
V1 --> V2
=========
RFC v1: [1]
- added a demo test that simply queries the driver about the
engines and executes a buffer (thanks Tvrtko)
- refactored the for_each_engine_ctx() macro so that what in the
previous version was done by the "bind" function, now it's done
in the first iteration. (Thanks Crhis)
- removed the "gem_has_ring_ctx()" because it was out of the
scope.
- rename functions to more meaningful names
[1] RFC v1: https://lists.freedesktop.org/archives/igt-dev/2018-November/007025.html
[2] RFC v2: https://lists.freedesktop.org/archives/igt-dev/2018-November/007079.html
[3] PATCH v3: https://lists.freedesktop.org/archives/igt-dev/2018-November/007148.html
[4] https://cgit.freedesktop.org/~tursulin/drm-intel/log/?h=media
[5] https://lists.freedesktop.org/archives/igt-dev/2018-November/007100.html
[6] https://lists.freedesktop.org/archives/igt-dev/2019-January/008029.html
[7] https://lists.freedesktop.org/archives/igt-dev/2019-January/008165.html
[8] https://lists.freedesktop.org/archives/igt-dev/2019-February/008902.html
[9] https://lists.freedesktop.org/archives/igt-dev/2019-February/009185.html
[10] https://lists.freedesktop.org/archives/igt-dev/2019-February/009205.html
[11] https://lists.freedesktop.org/archives/igt-dev/2019-February/009277.html
[12] https://lists.freedesktop.org/archives/igt-dev/2019-March/010197.html
[13] https://lists.freedesktop.org/archives/igt-dev/2019-March/010467.html
[14] https://lists.freedesktop.org/archives/igt-dev/2019-March/010776.html
[15] https://lists.freedesktop.org/archives/igt-dev/2019-March/010827.html
[16] https://lists.freedesktop.org/archives/igt-dev/2019-March/010916.html
[17] https://lists.freedesktop.org/archives/igt-dev/2019-April/011821.html
Andi Shyti (14):
include/drm-uapi: import i915_drm.h header file
lib/i915: add gem_engine_topology library and for_each loop definition
lib: igt_gt: add execution buffer flags to class helper
lib: igt_gt: make gem_engine_can_store_dword() check engine class
lib: igt_dummyload: use for_each_context_engine()
test: perf_pmu: use the gem_engine_topology library
test/i915: gem_busy: use the gem_engine_topology library
test/i915: gem_cs_tlb: use the gem_engine_topology library
test/i915: gem_ctx_exec: use the gem_engine_topology library
test/i915: gem_exec_basic: use the gem_engine_topology library
test/i915: gem_exec_parallel: use the gem_engine_topology library
test/i915: gem_exec_store: use the gem_engine_topology library
test/i915: gem_wait: use the gem_engine_topology library
test/i915: i915_hangman: use the gem_engine_topology library
include/drm-uapi/i915_drm.h | 209 +++++++++++++++++++++++-
lib/Makefile.sources | 2 +
lib/i915/gem_engine_topology.c | 282 +++++++++++++++++++++++++++++++++
lib/i915/gem_engine_topology.h | 79 +++++++++
lib/igt.h | 1 +
lib/igt_dummyload.c | 29 ++--
lib/igt_gt.c | 30 +++-
lib/igt_gt.h | 12 +-
lib/meson.build | 1 +
tests/i915/gem_busy.c | 133 ++++++----------
tests/i915/gem_cs_tlb.c | 8 +-
tests/i915/gem_ctx_exec.c | 15 +-
tests/i915/gem_exec_basic.c | 28 ++--
tests/i915/gem_exec_parallel.c | 7 +-
tests/i915/gem_exec_store.c | 25 ++-
tests/i915/gem_wait.c | 24 +--
tests/i915/i915_hangman.c | 15 +-
tests/perf_pmu.c | 151 +++++++++++-------
18 files changed, 822 insertions(+), 229 deletions(-)
create mode 100644 lib/i915/gem_engine_topology.c
create mode 100644 lib/i915/gem_engine_topology.h
--
2.20.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread* [igt-dev] ✓ Fi.CI.IGT: success for new engine discovery interface
2019-05-13 0:44 [igt-dev] [PATCH v23 00/14] " Andi Shyti
@ 2019-05-13 3:27 ` Patchwork
0 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2019-05-13 3:27 UTC (permalink / raw)
To: Andi Shyti; +Cc: igt-dev
== Series Details ==
Series: new engine discovery interface
URL : https://patchwork.freedesktop.org/series/60557/
State : success
== Summary ==
CI Bug Log - changes from IGT_4981_full -> IGTPW_2968_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/60557/revisions/1/mbox/
New tests
---------
New tests have been introduced between IGT_4981_full and IGTPW_2968_full:
### New IGT tests (106) ###
* igt@gem_busy@basic-busy-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.00] s
* igt@gem_busy@basic-hang-rcs0:
- Statuses : 6 pass(s)
- Exec time: [12.64, 16.16] s
* igt@gem_busy@busy-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.00] s
* igt@gem_busy@busy-vcs0:
- Statuses : 6 pass(s)
- Exec time: [0.00] s
* igt@gem_busy@busy-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@gem_busy@busy-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.00] s
* igt@gem_busy@extended-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.02, 0.03] s
* igt@gem_busy@extended-parallel-bcs0:
- Statuses : 1 incomplete(s) 5 pass(s)
- Exec time: [0.0, 0.04] s
* igt@gem_busy@extended-parallel-rcs0:
- Statuses : 1 incomplete(s) 4 pass(s)
- Exec time: [0.0, 0.05] s
* igt@gem_busy@extended-parallel-vcs0:
- Statuses : 5 pass(s) 1 skip(s)
- Exec time: [0.0, 0.03] s
* igt@gem_busy@extended-parallel-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@gem_busy@extended-parallel-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.02, 0.04] s
* igt@gem_busy@extended-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.01, 0.03] s
* igt@gem_busy@extended-semaphore-bcs0:
- Statuses : 4 pass(s) 2 skip(s)
- Exec time: [0.0, 0.01] s
* igt@gem_busy@extended-semaphore-rcs0:
- Statuses : 4 pass(s) 2 skip(s)
- Exec time: [0.0, 0.00] s
* igt@gem_busy@extended-semaphore-vcs0:
- Statuses : 4 pass(s) 2 skip(s)
- Exec time: [0.0, 0.00] s
* igt@gem_busy@extended-semaphore-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@gem_busy@extended-semaphore-vecs0:
- Statuses : 4 pass(s) 1 skip(s)
- Exec time: [0.0, 0.00] s
* igt@gem_busy@extended-vcs0:
- Statuses : 5 pass(s) 1 skip(s)
- Exec time: [0.0, 0.04] s
* igt@gem_busy@extended-vcs1:
- Statuses :
- Exec time: [None] s
* igt@gem_busy@extended-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.01, 0.03] s
* igt@gem_cs_tlb@bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.73, 4.63] s
* igt@gem_cs_tlb@rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.72, 5.40] s
* igt@gem_cs_tlb@vcs0:
- Statuses : 6 pass(s)
- Exec time: [0.73, 4.58] s
* igt@gem_cs_tlb@vcs1:
- Statuses : 1 pass(s)
- Exec time: [1.76] s
* igt@gem_cs_tlb@vecs0:
- Statuses : 5 pass(s)
- Exec time: [1.28, 4.86] s
* igt@gem_ctx_exec@basic-invalid-context-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.00, 0.01] s
* igt@gem_ctx_exec@basic-invalid-context-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.00] s
* igt@gem_ctx_exec@basic-invalid-context-vcs0:
- Statuses : 5 pass(s)
- Exec time: [0.00] s
* igt@gem_ctx_exec@basic-invalid-context-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@gem_ctx_exec@basic-invalid-context-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.00] s
* igt@gem_exec_basic@basic-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@basic-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@basic-vcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@basic-vcs1:
- Statuses :
- Exec time: [None] s
* igt@gem_exec_basic@basic-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@gtt-bcs0:
- Statuses : 4 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@gtt-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@gtt-vcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@gtt-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@gem_exec_basic@gtt-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@readonly-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@readonly-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@readonly-vcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@readonly-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@gem_exec_basic@readonly-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_parallel@bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.80, 2.41] s
* igt@gem_exec_parallel@bcs0-contexts:
- Statuses : 6 pass(s)
- Exec time: [1.26, 4.67] s
* igt@gem_exec_parallel@bcs0-fds:
- Statuses : 6 pass(s)
- Exec time: [1.28, 4.95] s
* igt@gem_exec_parallel@rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.84, 2.68] s
* igt@gem_exec_parallel@rcs0-contexts:
- Statuses : 6 pass(s)
- Exec time: [1.43, 5.41] s
* igt@gem_exec_parallel@rcs0-fds:
- Statuses : 6 pass(s)
- Exec time: [1.44, 5.72] s
* igt@gem_exec_parallel@vcs0:
- Statuses : 5 pass(s) 1 skip(s)
- Exec time: [0.0, 2.66] s
* igt@gem_exec_parallel@vcs0-contexts:
- Statuses : 5 pass(s) 1 skip(s)
- Exec time: [0.0, 4.68] s
* igt@gem_exec_parallel@vcs0-fds:
- Statuses : 5 pass(s) 1 skip(s)
- Exec time: [0.0, 5.01] s
* igt@gem_exec_parallel@vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.84] s
* igt@gem_exec_parallel@vcs1-contexts:
- Statuses : 1 pass(s)
- Exec time: [1.52] s
* igt@gem_exec_parallel@vcs1-fds:
- Statuses : 1 pass(s)
- Exec time: [1.82] s
* igt@gem_exec_parallel@vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.78, 2.73] s
* igt@gem_exec_parallel@vecs0-contexts:
- Statuses : 5 pass(s)
- Exec time: [1.26, 4.72] s
* igt@gem_exec_parallel@vecs0-fds:
- Statuses : 5 pass(s)
- Exec time: [1.28, 4.98] s
* igt@gem_exec_store@basic-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.01] s
* igt@gem_exec_store@basic-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.01] s
* igt@gem_exec_store@basic-vcs0:
- Statuses : 4 pass(s) 1 skip(s)
- Exec time: [0.0, 0.02] s
* igt@gem_exec_store@basic-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.01] s
* igt@gem_exec_store@basic-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.01, 0.02] s
* igt@gem_exec_store@cachelines-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.01] s
* igt@gem_exec_store@cachelines-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.01, 0.02] s
* igt@gem_exec_store@cachelines-vcs0:
- Statuses : 5 pass(s) 1 skip(s)
- Exec time: [0.0, 0.01] s
* igt@gem_exec_store@cachelines-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.01] s
* igt@gem_exec_store@cachelines-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.01] s
* igt@gem_exec_store@pages-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.01, 0.02] s
* igt@gem_exec_store@pages-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.01, 0.02] s
* igt@gem_exec_store@pages-vcs0:
- Statuses : 5 pass(s) 1 skip(s)
- Exec time: [0.0, 0.03] s
* igt@gem_exec_store@pages-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.01] s
* igt@gem_exec_store@pages-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.01, 0.02] s
* igt@gem_wait@await-bcs0:
- Statuses : 6 pass(s)
- Exec time: [1.01, 1.02] s
* igt@gem_wait@await-rcs0:
- Statuses : 6 pass(s)
- Exec time: [1.01, 1.02] s
* igt@gem_wait@await-vcs0:
- Statuses : 6 pass(s)
- Exec time: [1.01, 1.04] s
* igt@gem_wait@await-vcs1:
- Statuses : 1 pass(s)
- Exec time: [1.02] s
* igt@gem_wait@await-vecs0:
- Statuses : 5 pass(s)
- Exec time: [1.01, 1.02] s
* igt@gem_wait@busy-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.50] s
* igt@gem_wait@busy-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.50] s
* igt@gem_wait@busy-vcs0:
- Statuses : 6 pass(s)
- Exec time: [0.50, 0.51] s
* igt@gem_wait@busy-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.50] s
* igt@gem_wait@busy-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.50] s
* igt@gem_wait@wait-bcs0:
- Statuses : 6 pass(s)
- Exec time: [1.00, 1.02] s
* igt@gem_wait@wait-rcs0:
- Statuses : 6 pass(s)
- Exec time: [1.00, 1.02] s
* igt@gem_wait@wait-vcs0:
- Statuses : 6 pass(s)
- Exec time: [1.00, 1.01] s
* igt@gem_wait@wait-vcs1:
- Statuses : 1 pass(s)
- Exec time: [1.01] s
* igt@gem_wait@wait-vecs0:
- Statuses : 5 pass(s)
- Exec time: [1.00, 1.02] s
* igt@gem_wait@write-busy-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.50, 0.51] s
* igt@gem_wait@write-busy-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.50] s
* igt@gem_wait@write-busy-vcs0:
- Statuses : 6 pass(s)
- Exec time: [0.50, 0.51] s
* igt@gem_wait@write-busy-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.50] s
* igt@gem_wait@write-busy-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.50, 0.53] s
* igt@gem_wait@write-wait-bcs0:
- Statuses : 4 pass(s)
- Exec time: [1.01, 1.02] s
* igt@gem_wait@write-wait-rcs0:
- Statuses : 6 pass(s)
- Exec time: [1.00, 1.02] s
* igt@gem_wait@write-wait-vcs0:
- Statuses : 6 pass(s)
- Exec time: [1.01, 1.02] s
* igt@gem_wait@write-wait-vcs1:
- Statuses : 1 pass(s)
- Exec time: [1.03] s
* igt@gem_wait@write-wait-vecs0:
- Statuses : 5 pass(s)
- Exec time: [1.01, 1.02] s
* igt@i915_hangman@error-state-capture-bcs0:
- Statuses : 6 pass(s)
- Exec time: [13.65, 16.34] s
* igt@i915_hangman@error-state-capture-rcs0:
- Statuses : 6 pass(s)
- Exec time: [12.35, 15.98] s
* igt@i915_hangman@error-state-capture-vcs0:
- Statuses : 6 pass(s)
- Exec time: [8.47, 16.13] s
* igt@i915_hangman@error-state-capture-vcs1:
- Statuses : 1 pass(s)
- Exec time: [15.32] s
* igt@i915_hangman@error-state-capture-vecs0:
- Statuses : 5 pass(s)
- Exec time: [12.40, 15.87] s
Known issues
------------
Here are the changes found in IGTPW_2968_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_workarounds@suspend-resume:
- shard-apl: [PASS][1] -> [DMESG-WARN][2] ([fdo#108566]) +2 similar issues
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-apl1/igt@gem_workarounds@suspend-resume.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-apl5/igt@gem_workarounds@suspend-resume.html
- shard-kbl: [PASS][3] -> [INCOMPLETE][4] ([fdo#103665])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-kbl7/igt@gem_workarounds@suspend-resume.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-kbl3/igt@gem_workarounds@suspend-resume.html
* igt@kms_cursor_crc@cursor-256x256-onscreen:
- shard-kbl: [PASS][5] -> [FAIL][6] ([fdo#103232])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-kbl1/igt@kms_cursor_crc@cursor-256x256-onscreen.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-kbl3/igt@kms_cursor_crc@cursor-256x256-onscreen.html
- shard-apl: [PASS][7] -> [FAIL][8] ([fdo#103232])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-apl8/igt@kms_cursor_crc@cursor-256x256-onscreen.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-apl8/igt@kms_cursor_crc@cursor-256x256-onscreen.html
* igt@kms_dp_dsc@basic-dsc-enable-edp:
- shard-iclb: [PASS][9] -> [SKIP][10] ([fdo#109349])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-iclb2/igt@kms_dp_dsc@basic-dsc-enable-edp.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-iclb8/igt@kms_dp_dsc@basic-dsc-enable-edp.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-move:
- shard-iclb: [PASS][11] -> [FAIL][12] ([fdo#103167]) +4 similar issues
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-iclb7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-move.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-iclb2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-move.html
* igt@kms_psr2_su@page_flip:
- shard-iclb: [PASS][13] -> [SKIP][14] ([fdo#109642])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-iclb2/igt@kms_psr2_su@page_flip.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-iclb6/igt@kms_psr2_su@page_flip.html
* igt@kms_sysfs_edid_timing:
- shard-iclb: [PASS][15] -> [FAIL][16] ([fdo#100047])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-iclb8/igt@kms_sysfs_edid_timing.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-iclb3/igt@kms_sysfs_edid_timing.html
#### Possible fixes ####
* igt@i915_selftest@live_hangcheck:
- shard-iclb: [INCOMPLETE][17] ([fdo#107713] / [fdo#108569]) -> [PASS][18]
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-iclb4/igt@i915_selftest@live_hangcheck.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-iclb8/igt@i915_selftest@live_hangcheck.html
* igt@kms_cursor_crc@cursor-256x85-sliding:
- shard-hsw: [INCOMPLETE][19] ([fdo#103540]) -> [PASS][20]
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-hsw1/igt@kms_cursor_crc@cursor-256x85-sliding.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-hsw1/igt@kms_cursor_crc@cursor-256x85-sliding.html
* igt@kms_flip@2x-flip-vs-expired-vblank:
- shard-glk: [FAIL][21] ([fdo#105363]) -> [PASS][22]
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-glk8/igt@kms_flip@2x-flip-vs-expired-vblank.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-glk8/igt@kms_flip@2x-flip-vs-expired-vblank.html
* igt@kms_flip@flip-vs-expired-vblank:
- shard-glk: [FAIL][23] ([fdo#102887] / [fdo#105363]) -> [PASS][24]
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-glk3/igt@kms_flip@flip-vs-expired-vblank.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-glk7/igt@kms_flip@flip-vs-expired-vblank.html
* igt@kms_flip@flip-vs-suspend-interruptible:
- shard-glk: [INCOMPLETE][25] ([fdo#103359] / [k.org#198133]) -> [PASS][26]
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-glk8/igt@kms_flip@flip-vs-suspend-interruptible.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-glk4/igt@kms_flip@flip-vs-suspend-interruptible.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-pwrite:
- shard-glk: [FAIL][27] ([fdo#103167]) -> [PASS][28]
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-glk5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-pwrite.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-glk3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite:
- shard-iclb: [FAIL][29] ([fdo#103167]) -> [PASS][30] +6 similar issues
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-iclb4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-iclb3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite.html
* igt@kms_psr@psr2_basic:
- shard-iclb: [SKIP][31] ([fdo#109441]) -> [PASS][32] +2 similar issues
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-iclb1/igt@kms_psr@psr2_basic.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-iclb2/igt@kms_psr@psr2_basic.html
* igt@kms_setmode@basic:
- shard-kbl: [FAIL][33] ([fdo#99912]) -> [PASS][34]
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-kbl6/igt@kms_setmode@basic.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-kbl3/igt@kms_setmode@basic.html
* igt@kms_vblank@pipe-a-ts-continuation-suspend:
- shard-apl: [DMESG-WARN][35] ([fdo#108566]) -> [PASS][36] +2 similar issues
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-apl5/igt@kms_vblank@pipe-a-ts-continuation-suspend.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-apl8/igt@kms_vblank@pipe-a-ts-continuation-suspend.html
* igt@perf@short-reads:
- shard-kbl: [FAIL][37] ([fdo#103183]) -> [PASS][38]
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-kbl3/igt@perf@short-reads.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-kbl4/igt@perf@short-reads.html
* igt@perf_pmu@rc6:
- shard-kbl: [SKIP][39] ([fdo#109271]) -> [PASS][40]
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4981/shard-kbl1/igt@perf_pmu@rc6.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/shard-kbl3/igt@perf_pmu@rc6.html
[fdo#100047]: https://bugs.freedesktop.org/show_bug.cgi?id=100047
[fdo#102887]: https://bugs.freedesktop.org/show_bug.cgi?id=102887
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103183]: https://bugs.freedesktop.org/show_bug.cgi?id=103183
[fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
[fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359
[fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
[fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
[fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363
[fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
[fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
[fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109349]: https://bugs.freedesktop.org/show_bug.cgi?id=109349
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
[fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912
[k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133
Participating hosts (7 -> 6)
------------------------------
Missing (1): shard-skl
Build changes
-------------
* IGT: IGT_4981 -> IGTPW_2968
CI_DRM_6073: c059ddabfe60a5072ace44a34a9de9b4202df6ec @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2968: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/
IGT_4981: 709bd6869e2aff01a67eef729f9dc330f404387e @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2968/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread
* [igt-dev] [PATCH v24 00/14] new engine discovery interface
@ 2019-05-13 17:55 Andi Shyti
2019-05-13 23:12 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
0 siblings, 1 reply; 18+ messages in thread
From: Andi Shyti @ 2019-05-13 17:55 UTC (permalink / raw)
To: IGT dev; +Cc: Andi Shyti
Hi,
In this patchset I propose an alternative way of engine discovery
thanks to the new interfaces developed by Tvrtko and Chris[4].
Thanks Tvrtko, Chris, Antonio and Petri for your comments in the
previous RFCs.
Andi
v22 --> v24
===========
fixet the reviews from Tvrtko and Chris (thank you, guys):
- perf_pmu: restored the 'const' and context creation in
cpu-hotplug, frequency and interrupts* subtests.
- gem_exec_parallel: used __for_each_physical_engine also in
all() that I forgot in the previous version.
- added Tvrtko's reviewed-by (thanks a lot Tvrtko!)
- few other changes with little relevance.
v22 --> v23
===========
updated the following tests to the new APIs:
gem_busy
gem_cs_tlb
gem_ctx_exec
gem_exec_basic
gem_exec_parallel
gem_exec_store
gem_wait
i915_hangman
v21 --> v22
===========
- just removed context creation and deletion from
engine_topology and fixed perf_pmu accordingly.
v20 --> v21
===========
- removed Tvrtko's debug messages
- few fixes from Chris last review
v19 --> v20
===========
- added some debugs from Tvrtko to get more info about gem_wait
failure.
- few fixes in gem_engine_topology.c from Tvrtko's comments,
including a bigger fix about an uncontrolled variable
increment in the _next function
v18 --> v19
===========
- integrated Tvrtko's fixup patch [17]. From this patch some
changes have been moved to gem_engine_topology as a new helper
for getting the engine's properties.
v17 --> v18
===========
- three patches have been applied (the ones that add
gem_context_has_engine() function)
- few cosmetic fixes
- and some changes coming from Tvrtko's review on v17
v16 --> v17
===========
amongst many little things, three main changes:
- improved perf_pmu adaptation to gem_engine_topology
- removed the exec-ctx test, perf_pmu will be the flag test
- when creating the engine list, now the
for_each_engine_physical can be executed safely during subtest
listing
v15 --> v16
===========
- few changes to the gem_engine_topology stuff
- added une more dummy test which loops through the physical
engines, as well.
- changes to test/perf_pmu required some more changes than
expected (the 3 last patches)
v14 --> v15
===========
PATCH v14: [16]
- virtual engines will be called "virtual" like unrecognised
engines will be called "unknown"
- renamed the for_each loops to more meaningful names
(__for_each_static_engine and for_each_context_engine) and
moved into gem_engine_topology.h
- minor changes about data types.
v13 --> v14
===========
PATCH v13: [15]
minor changes this time:
- squashed patch 2 and 3 (from v13) with a little rename and
added Chris r-b
- fixed some index issues and string assignement leaks
- squashed patches 5, 6, 7 and 8 from v13
v12 --> v13
===========
PATCH v12: [14]
This patch is also very different from the previous other than
some reorganization of the code these are the main changes:
- the previous version lacked the case when the context had its
engines mapped. checks in the following order
if the driver doesn't have the new API
-> get the engines from the static list
if the driver has the API but the context has nothing mapped
-> get the engines from "query" and map them
if the driver has the API and the context has engines mapped
-> get the engines from the context
- the helper functions have been removed as they were of no use.
v11 --> v12
===========
PATCH v11: [13]
This 12th version starts from a completely different thought.
Here's the main differences:
- The list of engines is provided in an engine_data structure
which contains an index (useful for looping through and for
engine/context index mapping) instead of an array of engines.
- The list of engines is generated every time the init function
is called and nothing is allocated in heap memory.
- The ioctl check is done already during the initialization part
and if the new ioctls are not implemented, then the init
function still stores only those present in the GPU.
- The for_each loop is implemented by re-using the previous
'for_each_engine_class_instance()' implemented by Tvrtko.
- The gem_topology library offers few helper functions for
checking the engine presence, checking the implementation of
the ioctls and executing the buffer, in order to be completely
unaware of the driver implementation.
Thanks Tvrtko for all your inputs.
v10 --> v11
===========
RFC v10: [12]
few cosmetic changes in v11 and minor architectural details.
Thanks Tvrtko.
- the 'query_engines()' functions are static as no one is using
them yet.
- removed the 'gem_has_engine_topology()' function because it's
very little used, 'get_active_engines()' can be used instead.
- a minor ring -> engine renaming coming from Chris.
v9 --> v10
==========
RFC v9: [11]
also this time quite many changes, thanks Chris for the reviews,
here the most relevant of them.
- gem_query.[ch] have been renamed to gem_engine_topology.[ch]
and all the functions ended up there as they are referring to
the topology of the engines.
- the functions 'get_active_engines()',
'gem_set_context_get_engines()' and
'igt_require_gem_engine_list()' will be the main interface to
the gem_engine_topology library, refer to patch 2 for details.
- the define 'for_each_engine2()' doesn't expose anymore the
iterator.
- 'gem_context_has_engine()' has been moved from ioctl_wrappers.c
to gem_context.c.
- the gem_exec_basic exec-ctx subtest does not abort if the new
getparam/setparam and query apis are not implemented as it can
work with both (as it was done at the beginning).
v8 --> v9
=========
RFC v8: [10]
quite many changes, please refer to the review in [10]. Thanks
Chris for the review. These are the most relevant:
- all the allocation in gem_query have been made in stack, not
anymore allocated dynamically.
- removed get/set_context as it was already implemented and I
didn't know.
- renamed some functions and variables to hopefully more
meaningful names.
V7 --> v8
=========
RFC v7: [9]
- all functions have been moved from lib/igt_gt.{c,h} and
lib/ioctl_wrappers.{c,h} to lib/i916/gem_query.{c,h}. (thanks
Chris)
- 'for_each_engine_ctx' has been renamed to 'for_each_engine2' to
be consistent with the '2' that indicates the new 'struct
intel_execution_engine2' data structure.
V6 --> V7
=========
RFC v6: [8]
- a new patch has been added (patch 3) which adds a new
requirement check through the igt_require_gem_engine_list()
function. (thanks Chris) This function will initialize the
engine list instead of the instead of igt_require_gem() as it
was in v6
- all the ioctls have been wrapped (thanks Chris and Antonio) and
new library functions have been added and assert the ioctls
- gem_init_engine_list() function returns the errno from the
GETPARAM ioctl in order to be used as a requirement. (thanks
Chris)
- fixed few requires/asserts
- The engine list "intel_active_engines2" is allocated of the
number of engines instead of a political 64 (thanks Antonio).
- some parameter renaming in gem_has_ring_by_idx(). (thanks
Chris).
- the original "intel_execution_engines2" has not been renamed,
because it is used to create subtests before even executing any
test/ioctl. By renaming it, some subtest generations failed.
(thanks Petri)
V5 --> V6
=========
RFC v5: [7]
- Chris implemented the getparam ioctl which allows to the test
to figure otu whether the new interface has been implemented.
This way the for_each_engine_ctx() is able to work with new and
old kernel uapi (thanks Chris)
V4 --> V5
=========
RFC v4: [6]
- the engine list is now built in 'igt_require_gem()' instead of
'__open_driver()' so that we keep this discovery method
specific to the i915 driver (thanks Chris).
- All the query/setparam structures dynamic allocation based on
the number of engines, now are politically allocated 64 times,
to avoid extra ioctl calls that retrieve the engine number
(thanks Chris)
- use igt_ioctl instead of ioctl (thanks Chris)
- allocate intel_execution_engines2 dynamically instead of
statically (thanks Tvrtko)
- simplify the test in 'gem_exec_basic()' so that simply checks
the presence of the engine instead of executing a buffer
(thank Chris)
- a new patch has been added (patch 3) that extends the
'gem_has_ring()' boolean function. The new version sets the
index as it's mapped in the kernel.The previous function is now
a wrapper to the new function.
V3 --> V4
=========
PATCH v3: [3]
- re-architectured the discovery mechanism based on Tvrtko's
sugestion and reviews.. In this version the discovery is done
during the device opening and stored in a NULL terminated
array, which replaces the existing intel_execution_engines2
that is mainly used as a reference.
V2 --> V3
=========
RFC v2: [2]
- removed a standalone gem_query_engines_demo test and added the
exec-ctx subtest inside gem_exec_basic (thanks Tvrtko).
- fixed most of Tvrtko's comments in [5], which consist in
putting the mallocs igt_assert and ictls in igt_require and few
refactoring (thanks Tvrtko).
V1 --> V2
=========
RFC v1: [1]
- added a demo test that simply queries the driver about the
engines and executes a buffer (thanks Tvrtko)
- refactored the for_each_engine_ctx() macro so that what in the
previous version was done by the "bind" function, now it's done
in the first iteration. (Thanks Crhis)
- removed the "gem_has_ring_ctx()" because it was out of the
scope.
- rename functions to more meaningful names
[1] RFC v1: https://lists.freedesktop.org/archives/igt-dev/2018-November/007025.html
[2] RFC v2: https://lists.freedesktop.org/archives/igt-dev/2018-November/007079.html
[3] PATCH v3: https://lists.freedesktop.org/archives/igt-dev/2018-November/007148.html
[4] https://cgit.freedesktop.org/~tursulin/drm-intel/log/?h=media
[5] https://lists.freedesktop.org/archives/igt-dev/2018-November/007100.html
[6] https://lists.freedesktop.org/archives/igt-dev/2019-January/008029.html
[7] https://lists.freedesktop.org/archives/igt-dev/2019-January/008165.html
[8] https://lists.freedesktop.org/archives/igt-dev/2019-February/008902.html
[9] https://lists.freedesktop.org/archives/igt-dev/2019-February/009185.html
[10] https://lists.freedesktop.org/archives/igt-dev/2019-February/009205.html
[11] https://lists.freedesktop.org/archives/igt-dev/2019-February/009277.html
[12] https://lists.freedesktop.org/archives/igt-dev/2019-March/010197.html
[13] https://lists.freedesktop.org/archives/igt-dev/2019-March/010467.html
[14] https://lists.freedesktop.org/archives/igt-dev/2019-March/010776.html
[15] https://lists.freedesktop.org/archives/igt-dev/2019-March/010827.html
[16] https://lists.freedesktop.org/archives/igt-dev/2019-March/010916.html
[17] https://lists.freedesktop.org/archives/igt-dev/2019-April/011821.html
Andi Shyti (14):
include/drm-uapi: import i915_drm.h header file
lib/i915: add gem_engine_topology library and for_each loop definition
lib: igt_gt: add execution buffer flags to class helper
lib: igt_gt: make gem_engine_can_store_dword() check engine class
lib: igt_dummyload: use for_each_context_engine()
test: perf_pmu: use the gem_engine_topology library
test/i915: gem_busy: use the gem_engine_topology library
test/i915: gem_cs_tlb: use the gem_engine_topology library
test/i915: gem_ctx_exec: use the gem_engine_topology library
test/i915: gem_exec_basic: use the gem_engine_topology library
test/i915: gem_exec_parallel: use the gem_engine_topology library
test/i915: gem_exec_store: use the gem_engine_topology library
test/i915: gem_wait: use the gem_engine_topology library
test/i915: i915_hangman: use the gem_engine_topology library
include/drm-uapi/i915_drm.h | 209 +++++++++++++++++++++++-
lib/Makefile.sources | 2 +
lib/i915/gem_engine_topology.c | 282 +++++++++++++++++++++++++++++++++
lib/i915/gem_engine_topology.h | 79 +++++++++
lib/igt.h | 1 +
lib/igt_dummyload.c | 29 ++--
lib/igt_gt.c | 30 +++-
lib/igt_gt.h | 12 +-
lib/meson.build | 1 +
tests/i915/gem_busy.c | 128 ++++++---------
tests/i915/gem_cs_tlb.c | 8 +-
tests/i915/gem_ctx_exec.c | 16 +-
tests/i915/gem_exec_basic.c | 28 ++--
tests/i915/gem_exec_parallel.c | 26 +--
tests/i915/gem_exec_store.c | 36 ++---
tests/i915/gem_wait.c | 24 +--
tests/i915/i915_hangman.c | 15 +-
tests/perf_pmu.c | 102 ++++++------
18 files changed, 800 insertions(+), 228 deletions(-)
create mode 100644 lib/i915/gem_engine_topology.c
create mode 100644 lib/i915/gem_engine_topology.h
--
2.20.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread* [igt-dev] ✓ Fi.CI.IGT: success for new engine discovery interface
2019-05-13 17:55 [igt-dev] [PATCH v24 00/14] " Andi Shyti
@ 2019-05-13 23:12 ` Patchwork
0 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2019-05-13 23:12 UTC (permalink / raw)
To: Andi Shyti; +Cc: igt-dev
== Series Details ==
Series: new engine discovery interface
URL : https://patchwork.freedesktop.org/series/60595/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_6077_full -> IGTPW_2975_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/60595/revisions/1/mbox/
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_2975_full:
### IGT changes ###
#### Suppressed ####
The following results come from untrusted machines, tests, or statuses.
They do not affect the overall result.
* {igt@kms_cursor_crc@pipe-c-cursor-suspend}:
- shard-apl: [PASS][1] -> [DMESG-WARN][2] +1 similar issue
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6077/shard-apl6/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/shard-apl6/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
New tests
---------
New tests have been introduced between CI_DRM_6077_full and IGTPW_2975_full:
### New IGT tests (106) ###
* igt@gem_busy@basic-busy-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.00] s
* igt@gem_busy@basic-hang-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.01, 0.04] s
* igt@gem_busy@busy-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_busy@busy-vcs0:
- Statuses : 6 pass(s)
- Exec time: [0.00] s
* igt@gem_busy@busy-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@gem_busy@busy-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.00] s
* igt@gem_busy@extended-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.01, 0.04] s
* igt@gem_busy@extended-parallel-bcs0:
- Statuses : 1 incomplete(s) 5 pass(s)
- Exec time: [0.0, 0.04] s
* igt@gem_busy@extended-parallel-rcs0:
- Statuses : 1 incomplete(s) 5 pass(s)
- Exec time: [0.0, 0.04] s
* igt@gem_busy@extended-parallel-vcs0:
- Statuses : 5 pass(s) 1 skip(s)
- Exec time: [0.0, 0.04] s
* igt@gem_busy@extended-parallel-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@gem_busy@extended-parallel-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.02, 0.04] s
* igt@gem_busy@extended-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.01, 0.04] s
* igt@gem_busy@extended-semaphore-bcs0:
- Statuses : 4 pass(s) 2 skip(s)
- Exec time: [0.0, 0.00] s
* igt@gem_busy@extended-semaphore-rcs0:
- Statuses : 4 pass(s) 2 skip(s)
- Exec time: [0.0, 0.00] s
* igt@gem_busy@extended-semaphore-vcs0:
- Statuses : 4 pass(s) 2 skip(s)
- Exec time: [0.0, 0.01] s
* igt@gem_busy@extended-semaphore-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@gem_busy@extended-semaphore-vecs0:
- Statuses : 4 pass(s) 1 skip(s)
- Exec time: [0.0, 0.00] s
* igt@gem_busy@extended-vcs0:
- Statuses : 5 pass(s) 1 skip(s)
- Exec time: [0.0, 0.03] s
* igt@gem_busy@extended-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@gem_busy@extended-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.01, 0.03] s
* igt@gem_cs_tlb@bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.72, 4.67] s
* igt@gem_cs_tlb@rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.74, 5.52] s
* igt@gem_cs_tlb@vcs0:
- Statuses : 6 pass(s)
- Exec time: [0.72, 4.54] s
* igt@gem_cs_tlb@vcs1:
- Statuses : 1 pass(s)
- Exec time: [1.59] s
* igt@gem_cs_tlb@vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.72, 4.70] s
* igt@gem_ctx_exec@basic-invalid-context-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_ctx_exec@basic-invalid-context-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.00] s
* igt@gem_ctx_exec@basic-invalid-context-vcs0:
- Statuses : 6 pass(s)
- Exec time: [0.00] s
* igt@gem_ctx_exec@basic-invalid-context-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@gem_ctx_exec@basic-invalid-context-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@basic-bcs0:
- Statuses : 5 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@basic-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@basic-vcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@basic-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@gem_exec_basic@basic-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@gtt-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@gtt-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@gtt-vcs0:
- Statuses : 6 pass(s)
- Exec time: [0.00] s
* igt@gem_exec_basic@gtt-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@gem_exec_basic@gtt-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@readonly-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@readonly-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@readonly-vcs0:
- Statuses : 6 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_basic@readonly-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@gem_exec_basic@readonly-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.0, 0.00] s
* igt@gem_exec_parallel@bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.84, 2.70] s
* igt@gem_exec_parallel@bcs0-contexts:
- Statuses : 6 pass(s)
- Exec time: [1.27, 4.84] s
* igt@gem_exec_parallel@bcs0-fds:
- Statuses : 6 pass(s)
- Exec time: [1.27, 4.88] s
* igt@gem_exec_parallel@rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.78, 2.78] s
* igt@gem_exec_parallel@rcs0-contexts:
- Statuses : 6 pass(s)
- Exec time: [1.42, 5.21] s
* igt@gem_exec_parallel@rcs0-fds:
- Statuses : 6 pass(s)
- Exec time: [1.46, 5.78] s
* igt@gem_exec_parallel@vcs0:
- Statuses : 5 pass(s) 1 skip(s)
- Exec time: [0.0, 2.48] s
* igt@gem_exec_parallel@vcs0-contexts:
- Statuses : 5 pass(s) 1 skip(s)
- Exec time: [0.0, 4.81] s
* igt@gem_exec_parallel@vcs0-fds:
- Statuses : 5 pass(s) 1 skip(s)
- Exec time: [0.0, 4.86] s
* igt@gem_exec_parallel@vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.84] s
* igt@gem_exec_parallel@vcs1-contexts:
- Statuses : 1 pass(s)
- Exec time: [1.56] s
* igt@gem_exec_parallel@vcs1-fds:
- Statuses : 1 pass(s)
- Exec time: [1.63] s
* igt@gem_exec_parallel@vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.78, 2.64] s
* igt@gem_exec_parallel@vecs0-contexts:
- Statuses : 5 pass(s)
- Exec time: [1.34, 4.78] s
* igt@gem_exec_parallel@vecs0-fds:
- Statuses : 5 pass(s)
- Exec time: [1.63, 5.02] s
* igt@gem_exec_store@basic-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.01, 0.02] s
* igt@gem_exec_store@basic-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.01] s
* igt@gem_exec_store@basic-vcs0:
- Statuses : 5 pass(s) 1 skip(s)
- Exec time: [0.0, 0.01] s
* igt@gem_exec_store@basic-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.01] s
* igt@gem_exec_store@basic-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.01, 0.02] s
* igt@gem_exec_store@cachelines-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.01] s
* igt@gem_exec_store@cachelines-rcs0:
- Statuses : 4 pass(s)
- Exec time: [0.01] s
* igt@gem_exec_store@cachelines-vcs0:
- Statuses : 5 pass(s) 1 skip(s)
- Exec time: [0.0, 0.01] s
* igt@gem_exec_store@cachelines-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.01] s
* igt@gem_exec_store@cachelines-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.01, 0.02] s
* igt@gem_exec_store@pages-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.01, 0.02] s
* igt@gem_exec_store@pages-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.01, 0.02] s
* igt@gem_exec_store@pages-vcs0:
- Statuses : 5 pass(s) 1 skip(s)
- Exec time: [0.0, 0.03] s
* igt@gem_exec_store@pages-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.01] s
* igt@gem_exec_store@pages-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.01, 0.04] s
* igt@gem_wait@await-bcs0:
- Statuses : 6 pass(s)
- Exec time: [1.01, 1.02] s
* igt@gem_wait@await-rcs0:
- Statuses : 6 pass(s)
- Exec time: [1.01, 1.02] s
* igt@gem_wait@await-vcs0:
- Statuses : 6 pass(s)
- Exec time: [1.01, 1.02] s
* igt@gem_wait@await-vcs1:
- Statuses : 1 pass(s)
- Exec time: [1.02] s
* igt@gem_wait@await-vecs0:
- Statuses : 5 pass(s)
- Exec time: [1.01, 1.02] s
* igt@gem_wait@busy-bcs0:
- Statuses : 6 pass(s)
- Exec time: [0.50] s
* igt@gem_wait@busy-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.50] s
* igt@gem_wait@busy-vcs0:
- Statuses : 6 pass(s)
- Exec time: [0.50] s
* igt@gem_wait@busy-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.50] s
* igt@gem_wait@busy-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.50] s
* igt@gem_wait@wait-bcs0:
- Statuses : 6 pass(s)
- Exec time: [1.00, 1.02] s
* igt@gem_wait@wait-rcs0:
- Statuses : 6 pass(s)
- Exec time: [1.00, 1.02] s
* igt@gem_wait@wait-vcs0:
- Statuses : 6 pass(s)
- Exec time: [1.00, 1.01] s
* igt@gem_wait@wait-vcs1:
- Statuses : 1 pass(s)
- Exec time: [1.01] s
* igt@gem_wait@wait-vecs0:
- Statuses : 5 pass(s)
- Exec time: [1.00, 1.02] s
* igt@gem_wait@write-busy-bcs0:
- Statuses : 5 pass(s)
- Exec time: [0.50, 0.51] s
* igt@gem_wait@write-busy-rcs0:
- Statuses : 6 pass(s)
- Exec time: [0.50, 0.51] s
* igt@gem_wait@write-busy-vcs0:
- Statuses : 6 pass(s)
- Exec time: [0.50] s
* igt@gem_wait@write-busy-vcs1:
- Statuses : 1 pass(s)
- Exec time: [0.50] s
* igt@gem_wait@write-busy-vecs0:
- Statuses : 5 pass(s)
- Exec time: [0.50] s
* igt@gem_wait@write-wait-bcs0:
- Statuses : 6 pass(s)
- Exec time: [1.01, 1.02] s
* igt@gem_wait@write-wait-rcs0:
- Statuses : 6 pass(s)
- Exec time: [1.01, 1.05] s
* igt@gem_wait@write-wait-vcs0:
- Statuses : 6 pass(s)
- Exec time: [1.01, 1.02] s
* igt@gem_wait@write-wait-vcs1:
- Statuses : 1 pass(s)
- Exec time: [1.02] s
* igt@gem_wait@write-wait-vecs0:
- Statuses : 5 pass(s)
- Exec time: [1.01, 1.02] s
* igt@i915_hangman@error-state-capture-bcs0:
- Statuses : 6 pass(s)
- Exec time: [13.49, 15.77] s
* igt@i915_hangman@error-state-capture-rcs0:
- Statuses : 6 pass(s)
- Exec time: [12.43, 15.70] s
* igt@i915_hangman@error-state-capture-vcs0:
- Statuses : 6 pass(s)
- Exec time: [6.15, 14.53] s
* igt@i915_hangman@error-state-capture-vcs1:
- Statuses : 1 pass(s)
- Exec time: [14.13] s
* igt@i915_hangman@error-state-capture-vecs0:
- Statuses : 5 pass(s)
- Exec time: [13.32, 15.65] s
Known issues
------------
Here are the changes found in IGTPW_2975_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_tiled_swapping@non-threaded:
- shard-glk: [PASS][3] -> [DMESG-WARN][4] ([fdo#108686])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6077/shard-glk7/igt@gem_tiled_swapping@non-threaded.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/shard-glk5/igt@gem_tiled_swapping@non-threaded.html
* igt@i915_pm_rpm@i2c:
- shard-iclb: [PASS][5] -> [FAIL][6] ([fdo#104097])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6077/shard-iclb8/igt@i915_pm_rpm@i2c.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/shard-iclb1/igt@i915_pm_rpm@i2c.html
* igt@i915_suspend@debugfs-reader:
- shard-apl: [PASS][7] -> [DMESG-WARN][8] ([fdo#108566]) +3 similar issues
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6077/shard-apl3/igt@i915_suspend@debugfs-reader.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/shard-apl2/igt@i915_suspend@debugfs-reader.html
* igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic:
- shard-glk: [PASS][9] -> [FAIL][10] ([fdo#106509] / [fdo#107409])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6077/shard-glk3/igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/shard-glk1/igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-render:
- shard-glk: [PASS][11] -> [FAIL][12] ([fdo#103167])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6077/shard-glk9/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-render.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/shard-glk6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-msflip-blt:
- shard-iclb: [PASS][13] -> [FAIL][14] ([fdo#103167]) +3 similar issues
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6077/shard-iclb4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-msflip-blt.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/shard-iclb5/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-msflip-blt.html
* igt@kms_plane_lowres@pipe-a-tiling-x:
- shard-iclb: [PASS][15] -> [FAIL][16] ([fdo#103166])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6077/shard-iclb4/igt@kms_plane_lowres@pipe-a-tiling-x.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/shard-iclb1/igt@kms_plane_lowres@pipe-a-tiling-x.html
* igt@kms_psr@psr2_cursor_render:
- shard-iclb: [PASS][17] -> [SKIP][18] ([fdo#109441]) +2 similar issues
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6077/shard-iclb2/igt@kms_psr@psr2_cursor_render.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/shard-iclb1/igt@kms_psr@psr2_cursor_render.html
#### Possible fixes ####
* igt@i915_pm_rps@waitboost:
- shard-apl: [FAIL][19] ([fdo#102250]) -> [PASS][20]
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6077/shard-apl6/igt@i915_pm_rps@waitboost.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/shard-apl1/igt@i915_pm_rps@waitboost.html
* igt@i915_suspend@fence-restore-untiled:
- shard-apl: [DMESG-WARN][21] ([fdo#108566]) -> [PASS][22] +2 similar issues
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6077/shard-apl5/igt@i915_suspend@fence-restore-untiled.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/shard-apl8/igt@i915_suspend@fence-restore-untiled.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-pwrite:
- shard-iclb: [FAIL][23] ([fdo#103167]) -> [PASS][24] +3 similar issues
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6077/shard-iclb2/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-pwrite.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/shard-iclb1/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-pwrite.html
* igt@kms_psr@psr2_no_drrs:
- shard-iclb: [SKIP][25] ([fdo#109441]) -> [PASS][26]
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6077/shard-iclb6/igt@kms_psr@psr2_no_drrs.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/shard-iclb2/igt@kms_psr@psr2_no_drrs.html
* igt@kms_setmode@basic:
- shard-kbl: [FAIL][27] ([fdo#99912]) -> [PASS][28]
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6077/shard-kbl7/igt@kms_setmode@basic.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/shard-kbl3/igt@kms_setmode@basic.html
* igt@kms_sysfs_edid_timing:
- shard-iclb: [FAIL][29] ([fdo#100047]) -> [PASS][30]
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6077/shard-iclb3/igt@kms_sysfs_edid_timing.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/shard-iclb7/igt@kms_sysfs_edid_timing.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#100047]: https://bugs.freedesktop.org/show_bug.cgi?id=100047
[fdo#102250]: https://bugs.freedesktop.org/show_bug.cgi?id=102250
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#104097]: https://bugs.freedesktop.org/show_bug.cgi?id=104097
[fdo#106509]: https://bugs.freedesktop.org/show_bug.cgi?id=106509
[fdo#107409]: https://bugs.freedesktop.org/show_bug.cgi?id=107409
[fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
[fdo#108686]: https://bugs.freedesktop.org/show_bug.cgi?id=108686
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912
Participating hosts (10 -> 6)
------------------------------
Missing (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005
Build changes
-------------
* IGT: IGT_4984 -> IGTPW_2975
* Piglit: piglit_4509 -> None
CI_DRM_6077: f175074b17cfeb7d64cfcfd6b2641641a10d4deb @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2975: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/
IGT_4984: 66c887d2f7a92a4a97acd9611d5342afc5d4f815 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2975/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2019-05-13 23:12 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-19 15:55 [igt-dev] [RFC 0/2] new engine discovery interface Andi Shyti
2018-11-19 15:55 ` [igt-dev] [RFC 1/2] include/drm-uapi: import i915_drm.h header file Andi Shyti
2018-11-19 15:55 ` [igt-dev] [RFC 2/2] lib: implement new engine discovery interface Andi Shyti
2018-11-19 19:59 ` Tvrtko Ursulin
2018-11-19 20:38 ` Chris Wilson
2018-11-20 10:00 ` Tvrtko Ursulin
2018-11-20 10:09 ` Chris Wilson
2018-11-19 23:33 ` Andi Shyti
2018-11-19 17:22 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2018-11-19 22:31 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2019-02-12 23:54 [igt-dev] [RFC PATCH v8 0/5] " Andi Shyti via igt-dev
2019-02-13 2:44 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
2019-03-05 13:16 [igt-dev] [RFC PATCH v10 0/6] " Andi Shyti
2019-03-05 15:22 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
2019-03-12 17:17 [igt-dev] [PATCH v11 0/6] " Andi Shyti
2019-03-13 16:03 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
2019-04-12 0:32 [igt-dev] [PATCH v20 0/6] " Andi Shyti
2019-04-12 15:22 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
2019-04-16 15:11 [igt-dev] [PATCH v21 0/6] " Andi Shyti
2019-04-17 0:46 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
2019-04-16 23:10 [igt-dev] [PATCH v22 0/6] " Andi Shyti
2019-04-17 9:50 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
2019-05-13 0:44 [igt-dev] [PATCH v23 00/14] " Andi Shyti
2019-05-13 3:27 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
2019-05-13 17:55 [igt-dev] [PATCH v24 00/14] " Andi Shyti
2019-05-13 23:12 ` [igt-dev] ✓ Fi.CI.IGT: success for " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox