All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t v4] lib/igt_collection: Adding combinatorics facility
@ 2020-01-21 16:10 Zbigniew Kempczyński
  2020-01-21 16:52 ` [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_collection: Adding combinatorics facility (rev3) Patchwork
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Zbigniew Kempczyński @ 2020-01-21 16:10 UTC (permalink / raw)
  To: igt-dev; +Cc: Petri Latvala

Dynamic tests gives us new method to create tests depending on the
hardware/software capabilities. To check coverage some tests require
verification over some set of objects/data. To make life easier
with combinatorics this patch introduces igt_collection. Currently it
supports iterating over set to get subsets, combinations, variations
with and without repetitions.
Code has some limitation (set/subset cannot be larger than 16 elements,
what is enough for most cases).

Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
 .../igt-gpu-tools/igt-gpu-tools-docs.xml      |   1 +
 lib/Makefile.sources                          |   2 +
 lib/igt_collection.c                          | 515 ++++++++++++++++++
 lib/igt_collection.h                          |  99 ++++
 lib/meson.build                               |   1 +
 5 files changed, 618 insertions(+)
 create mode 100644 lib/igt_collection.c
 create mode 100644 lib/igt_collection.h

diff --git a/docs/reference/igt-gpu-tools/igt-gpu-tools-docs.xml b/docs/reference/igt-gpu-tools/igt-gpu-tools-docs.xml
index aa9fef20..9c9aa8f1 100644
--- a/docs/reference/igt-gpu-tools/igt-gpu-tools-docs.xml
+++ b/docs/reference/igt-gpu-tools/igt-gpu-tools-docs.xml
@@ -20,6 +20,7 @@
     <xi:include href="xml/igt_audio.xml"/>
     <xi:include href="xml/igt_aux.xml"/>
     <xi:include href="xml/igt_chamelium.xml"/>
+    <xi:include href="xml/igt_collection.xml"/>
     <xi:include href="xml/igt_core.xml"/>
     <xi:include href="xml/igt_debugfs.xml"/>
     <xi:include href="xml/igt_device.xml"/>
diff --git a/lib/Makefile.sources b/lib/Makefile.sources
index feb8c20d..631d6714 100644
--- a/lib/Makefile.sources
+++ b/lib/Makefile.sources
@@ -29,6 +29,8 @@ lib_source_list =	 	\
 	igt_device_scan.h	\
 	igt_aux.c		\
 	igt_aux.h		\
+	igt_collection.c	\
+	igt_collection.h	\
 	igt_color_encoding.c	\
 	igt_color_encoding.h	\
 	igt_edid.c		\
diff --git a/lib/igt_collection.c b/lib/igt_collection.c
new file mode 100644
index 00000000..c3e585c7
--- /dev/null
+++ b/lib/igt_collection.c
@@ -0,0 +1,515 @@
+#include "igt.h"
+#include "igt_collection.h"
+
+/**
+ * SECTION:igt_collection
+ * @short_description: Generic combinatorics library
+ * @title: Collection
+ * @include: igt.h
+ *
+ * # Generic combinatorics library.
+ *
+ * Supports:
+ * - subsets
+ * - combinations
+ * - variations with repetitions
+ * - variations without repetitions
+ *
+ * ## Subsets
+ *
+ * Let A = { 1, 2, 3 }
+ *
+ * With subset size == 2 we got subsets with number of elements <= subset size:
+ * {}
+ * { 1 }
+ * { 2 }
+ * { 3 }
+ * { 1, 2 }
+ * { 1, 3 }
+ * { 2, 3 }
+ *
+ * ## Combinations
+ *
+ * Let A = { 1, 2, 3 }
+ *
+ * With subset size == 2 we got subsets with number of elements == subset size:
+ * { 1, 2 }
+ * { 1, 3 }
+ * { 2, 3 }
+ *
+ * So it is similar to subset extraction but targeted to single subset size.
+ *
+ * ## Variations with repetitions
+ *
+ * Let A = { 0, 1 }
+ *
+ * With result size == 3 we got result tuples:
+ *
+ * ( 0, 0, 0 )
+ * ( 0, 0, 1 )
+ * ( 0, 1, 0 )
+ * ( 0, 1, 1 )
+ * ( 1, 0, 0 )
+ * ( 1, 0, 1 )
+ * ( 1, 1, 0 )
+ * ( 1, 1, 1 )
+ *
+ * ## Variations without repetitions
+ *
+ * Let A = { 1, 2, 3 }
+ *
+ * With subset size == 2 we got tuples:
+ *
+ * (1, 2)
+ * (1, 3)
+ * (2, 1)
+ * (2, 3)
+ * (3, 1)
+ * (3, 2)
+ *
+ * # Usage examples:
+ *
+ * ## iterator is manually controlled:
+ *
+ * |[<!-- language="C" -->
+ * struct igt_collection *set;
+ * struct igt_collection *subset;
+ * struct igt_collection_iter *iter;
+ *
+ * int i;
+ * set = igt_collection_create(4);
+ * iter = igt_collection_iter_init(set, 2, SUBSET);
+ * //iter = igt_collection_iter_init(set, 2, COMBINATION);
+ * //iter = igt_collection_iter_init(set, 2, VARIATION_R);
+ * //iter = igt_collection_iter_init(set, 2, VARIATION_NR);
+ *
+ * for (i = 0; i < set->size; i++) {
+ *      igt_collection_set_value(set, i, i + 1);
+ *      igt_collection_set_pointer(set, i, &i + i);
+ * }
+ *
+ * while ((subset = igt_collection_iter_next(iter))) {
+ *      // --- do sth with subset ---
+ *      // --- subset is a part of iterator, so don't free it! ---
+ * }
+ *
+ * igt_collection_iter_destroy(iter);
+ * igt_collection_destroy(set);
+ * ]|
+ *
+ * ## iterator is created and destroyed inside helper macros:
+ * |[<!-- language="C" -->
+ * struct igt_collection *set;
+ * struct igt_collection *subset, *result;
+ * struct igt_collection_data *data;
+ *
+ * for_each_subset(subset, subset_size, set)
+ *       // --- do sth with subset ---
+ *
+ * for_each_combination(subset, subset_size, set)
+ *       // --- do sth with subset ---
+ *
+ * for_each_variation_r(result, result_size, set)
+ *       // --- do sth with result ---
+ *
+ * for_each_variation_nr(result, result_size, set)
+ *       // --- do sth with result ---
+ *
+ * // macro for iteration over set data - for_each_collection_data()
+ * for_each_subset(subset, subset_size, set)
+ *       for_each_collection_data(data, subset)
+ *             printf("v: %d, p: %p\n", data->value, data->ptr);
+ * ]|
+ */
+
+struct igt_collection_iter {
+	const struct igt_collection *set;
+	enum igt_collection_iter_algo algorithm;
+	bool init;
+	int result_size;
+	struct igt_collection result;
+
+	/* Algorithms state */
+	struct {
+		uint32_t result_bits;
+		int current_result_size;
+		int idxs[IGT_COLLECTION_MAXSIZE];
+	} data;
+};
+
+/**
+ * igt_collection_create
+ * @size: size of the collection, must be greater than 0 and less
+ * than #IGT_COLLECTION_MAXSIZE
+ *
+ * Function creates a collection (set) containing igt_collection_data elements.
+ *
+ * Returns:
+ * pointer to #igt_collection. Asserts on memory allocation failure.
+ */
+struct igt_collection *igt_collection_create(int size)
+{
+	struct igt_collection *set;
+	int i;
+
+	igt_assert(size > 0 && size <= IGT_COLLECTION_MAXSIZE);
+
+	set = calloc(1, sizeof(*set));
+	igt_assert(set);
+
+	set->size = size;
+	for (i = 0; i < size; i++)
+		set->set[i].value = i; /* set to index as default */
+
+	return set;
+}
+
+/**
+ * igt_collection_duplicate
+ * @src: source collection
+ *
+ * Function duplicates collection. Useful to cover multithreading
+ * when different threads need to get it's own copy of the collection
+ * acquired during iteration.
+ *
+ * Returns:
+ * pointer to #igt_collection. Asserts on memory allocation failure.
+ */
+struct igt_collection *
+igt_collection_duplicate(const struct igt_collection *src)
+{
+	struct igt_collection *set = malloc(sizeof(*set));
+
+	igt_assert(set);
+	memcpy(set, src, sizeof(*set));
+
+	return set;
+}
+
+/**
+ * igt_collection_destroy
+ * @set: collection to be freed
+ *
+ * Function frees collection memory.
+ */
+void igt_collection_destroy(struct igt_collection *set)
+{
+	free(set);
+}
+
+/**
+ * igt_collection_set_value
+ * @set: collection
+ * @index: index of value data to be set in the collection
+ * @value: new value
+ *
+ * Assign new value to the collection element at @index.
+ */
+void igt_collection_set_value(struct igt_collection *set, int index, int value)
+{
+	igt_assert(index >= 0 && index < set->size);
+	set->set[index].value = value;
+}
+
+/**
+ * igt_collection_get_value
+ * @set: collection
+ * @index: index of value data to be get from the collection
+ *
+ * Returns: integer value at from the collection element at @index.
+ */
+int igt_collection_get_value(struct igt_collection *set, int index)
+{
+	igt_assert(index >= 0 && index < set->size);
+	return set->set[index].value;
+}
+
+/**
+ * igt_collection_set_pointer
+ * @set: collection
+ * @index: index of pointer data to be set in the collection
+ * @ptr: new pointer
+ */
+void igt_collection_set_pointer(struct igt_collection *set, int index, void *ptr)
+{
+	igt_assert(index >= 0 && index < set->size);
+	set->set[index].ptr = ptr;
+}
+
+/**
+ * igt_collection_get_pointer
+ * @set: collection
+ * @index: index of pointer data to be get from the collection
+ *
+ * Returns: pointer from the collection element at @index.
+ */
+void *igt_collection_get_pointer(struct igt_collection *set, int index)
+{
+	igt_assert(index >= 0 && index < set->size);
+	return set->set[index].ptr;
+}
+
+/**
+ * igt_collection_iter_create
+ * @set: base collection
+ * @result_size: result collection size
+ * @algorithm: method of iterating over base collection
+ *
+ * Function creates iterator which contains result collection changed each time
+ * igt_collection_iter_next() is called. For variations without repetitions
+ * (VARIATION_R) result collection size can be larger than size of
+ * base collection (although still less or equal #IGT_COLLECTION_MAXSIZE).
+ * As result collection is a part of the iterator to be thread-safe
+ * igt_collection_duplicate() must be called to make result collection copy
+ * before passing it to the thread.
+ *
+ * Returns:
+ * pointer to #igt_collection_iter. Asserts on memory allocation failure.
+ */
+struct igt_collection_iter *
+igt_collection_iter_create(const struct igt_collection *set, int result_size,
+			   enum igt_collection_iter_algo algorithm)
+{
+	struct igt_collection_iter *iter;
+
+	igt_assert(result_size > 0 && result_size <= IGT_COLLECTION_MAXSIZE);
+	if (algorithm != VARIATION_R)
+		igt_assert(result_size <= set->size);
+
+	iter = calloc(1, sizeof(*iter));
+	igt_assert(iter);
+
+	iter->set = set;
+	iter->result_size = result_size;
+	iter->algorithm = algorithm;
+	iter->init = true;
+
+	return iter;
+}
+
+/**
+ * igt_collection_iter_destroy
+ * @iter: iterator to be freed
+ *
+ * Function frees iterator memory.
+ */
+void igt_collection_iter_destroy(struct igt_collection_iter *iter)
+{
+	free(iter);
+}
+
+static struct igt_collection *
+igt_collection_iter_subsets(struct igt_collection_iter *iter)
+{
+	const struct igt_collection *set = iter->set;
+	struct igt_collection *curr = &iter->result;
+	int i, pos = 0;
+
+	if (iter->init) {
+		iter->init = false;
+		iter->data.result_bits = 0;
+		iter->data.current_result_size = 0;
+		curr->size = 0;
+	} else {
+		iter->data.result_bits++;
+		if (iter->data.result_bits & (1 << iter->set->size)) {
+			iter->data.current_result_size++;
+			iter->data.result_bits = 0;
+		}
+		if (iter->data.current_result_size > iter->result_size)
+			return NULL;
+	}
+
+	while (igt_hweight(iter->data.result_bits) !=
+			iter->data.current_result_size) {
+		iter->data.result_bits++;
+		if (iter->data.result_bits & (1 << iter->set->size)) {
+			iter->data.current_result_size++;
+			iter->data.result_bits = 0;
+		}
+	}
+
+	if (iter->data.current_result_size > iter->result_size)
+		return NULL;
+
+	for (i = 0; i < set->size; i++) {
+		if (!(iter->data.result_bits & (1 << i)))
+			continue;
+		curr->set[pos++] = set->set[i];
+		curr->size = pos;
+	}
+
+	return curr;
+}
+
+static struct igt_collection *
+igt_collection_iter_combination(struct igt_collection_iter *iter)
+{
+	const struct igt_collection *set = iter->set;
+	struct igt_collection *curr = &iter->result;
+	int i, pos = 0;
+
+	if (iter->init) {
+		iter->init = false;
+		iter->data.result_bits = 0;
+		iter->result.size = iter->result_size;
+	} else {
+		iter->data.result_bits++;
+	}
+
+	while (igt_hweight(iter->data.result_bits) != iter->result_size)
+		iter->data.result_bits++;
+
+	if (iter->data.result_bits & (1 << set->size))
+		return NULL;
+
+	for (i = 0; i < set->size; i++) {
+		if (!(iter->data.result_bits & (1 << i)))
+			continue;
+		curr->set[pos++] = set->set[i];
+		curr->size = pos;
+	}
+
+	return curr;
+}
+
+static struct igt_collection *
+igt_collection_iter_variation_r(struct igt_collection_iter *iter)
+{
+	const struct igt_collection *set = iter->set;
+	struct igt_collection *curr = &iter->result;
+	int i;
+
+	if (iter->init) {
+		iter->init = false;
+		iter->result.size = iter->result_size;
+		for (i = 0; i < iter->result_size; i++)
+			iter->data.idxs[i] = 0;
+	}
+
+	if (iter->data.idxs[0] == iter->set->size)
+		return NULL;
+
+	for (i = 0; i < iter->result_size; i++)
+		curr->set[i] = set->set[iter->data.idxs[i]];
+
+	for (i = iter->result_size-1; i >= 0; i--) {
+		if (++iter->data.idxs[i] == iter->set->size && i > 0) {
+			iter->data.idxs[i] %= iter->set->size;
+		} else {
+			break;
+		}
+	}
+
+	return curr;
+}
+
+static struct igt_collection *
+igt_collection_iter_variation_nr(struct igt_collection_iter *iter)
+{
+	const struct igt_collection *set = iter->set;
+	struct igt_collection *curr = &iter->result;
+	bool in_use[IGT_COLLECTION_MAXSIZE];
+	bool skip;
+	int i;
+
+	if (iter->init) {
+		iter->init = false;
+		iter->result.size = iter->result_size;
+		for (i = 0; i < iter->result_size; i++)
+			iter->data.idxs[i] = 0;
+	}
+
+	/*
+	 * Simple naive algorithm checking does element index is already
+	 * occupied.
+	 */
+retry:
+	skip = false;
+
+	if (iter->data.idxs[0] == iter->set->size)
+		return NULL;
+
+	for (i = 0; i < iter->result_size; i++)
+		curr->set[i] = set->set[iter->data.idxs[i]];
+
+	memset(in_use, 0, sizeof(in_use));
+	for (i = 0; i < iter->result_size; i++) {
+		if (in_use[iter->data.idxs[i]]) {
+			skip = true;
+			break;
+		}
+		in_use[iter->data.idxs[i]] = true;
+	}
+
+	for (i = iter->result_size-1; i >= 0; i--) {
+		if (++iter->data.idxs[i] == iter->set->size && i > 0) {
+			iter->data.idxs[i] %= iter->set->size;
+		} else {
+			break;
+		}
+	}
+
+	if (skip)
+		goto retry;
+
+	return curr;
+}
+
+/**
+ * igt_collection_iter_next
+ * @iter: collection iterator
+ *
+ * Function iterates over collection regarding to algorithm selected during
+ * iterator creation returning collection (subset or tuples (for variations)).
+ *
+ * Returns: pointer to the collection (it is a part of the iterator memory
+ * so to be thread-safe it must be duplicated by the caller when
+ * necessary) or NULL when there're no more elements. Iterator is no longer
+ * valid and must be then freed with igt_collection_iter_destroy().
+ */
+struct igt_collection *
+igt_collection_iter_next(struct igt_collection_iter *iter)
+{
+	struct igt_collection *ret_set = NULL;
+
+	switch(iter->algorithm) {
+	case SUBSET:
+		ret_set = igt_collection_iter_subsets(iter);
+		break;
+	case COMBINATION:
+		ret_set = igt_collection_iter_combination(iter);
+		break;
+	case VARIATION_R:
+		ret_set = igt_collection_iter_variation_r(iter);
+		break;
+	case VARIATION_NR:
+		ret_set = igt_collection_iter_variation_nr(iter);
+		break;
+	default:
+		igt_assert_f(false, "Unknown algorithm\n");
+	}
+
+	return ret_set;
+}
+
+/**
+ * igt_collection_iter_next_or_end
+ * @iter: collection iterator
+ *
+ * Function does the same as igt_collection_iter_next() but additionally
+ * checks when the iterator is no longer valid and frees it then.
+ * Useful for for_each_* macros to avoid necessity of manual handling
+ * the iterator.
+ */
+struct igt_collection *
+igt_collection_iter_next_or_end(struct igt_collection_iter *iter)
+{
+	struct igt_collection *ret_set =
+			igt_collection_iter_next(iter);
+
+	if (!ret_set)
+		igt_collection_iter_destroy(iter);
+
+	return ret_set;
+}
diff --git a/lib/igt_collection.h b/lib/igt_collection.h
new file mode 100644
index 00000000..5da661f8
--- /dev/null
+++ b/lib/igt_collection.h
@@ -0,0 +1,99 @@
+/*
+ * Copyright © 2020 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#ifndef __IGT_COLLECTION_H__
+#define __IGT_COLLECTION_H__
+
+#include <stdbool.h>
+
+/* Maximum collection size we support, don't change unless you understand
+ * the implementation */
+#define IGT_COLLECTION_MAXSIZE 16
+
+enum igt_collection_iter_algo {
+	SUBSET,
+	COMBINATION,
+	VARIATION_R,  /* variations with repetition */
+	VARIATION_NR, /* variations without repetitions */
+};
+
+struct igt_collection_data {
+	int value;
+	void *ptr;
+};
+
+struct igt_collection {
+	int size;
+	struct igt_collection_data set[IGT_COLLECTION_MAXSIZE];
+};
+
+struct igt_collection_iter;
+
+struct igt_collection *igt_collection_create(int size);
+struct igt_collection *igt_collection_duplicate(const struct igt_collection *src);
+
+void igt_collection_destroy(struct igt_collection *set);
+void igt_collection_set_value(struct igt_collection *set, int index, int value);
+int igt_collection_get_value(struct igt_collection *set, int index);
+void igt_collection_set_pointer(struct igt_collection *set, int index, void *ptr);
+void *igt_collection_get_pointer(struct igt_collection *set, int index);
+
+struct igt_collection_iter *
+igt_collection_iter_create(const struct igt_collection *set, int subset_size,
+			   enum igt_collection_iter_algo algorithm);
+
+void igt_collection_iter_destroy(struct igt_collection_iter *iter);
+struct igt_collection *igt_collection_iter_next(struct igt_collection_iter *iter);
+struct igt_collection *igt_collection_iter_next_or_end(struct igt_collection_iter *iter);
+
+#define for_each_subset(__result, __size, __set) \
+	for (struct igt_collection_iter *igt_tokencat(__it, __LINE__) = \
+		igt_collection_iter_create(__set, __size, SUBSET); \
+		((__result) = igt_collection_iter_next_or_end(\
+			igt_tokencat(__it, __LINE__))); )
+
+#define for_each_combination(__result, __size, __set) \
+	for (struct igt_collection_iter *igt_tokencat(__it, __LINE__) = \
+		igt_collection_iter_create(__set, __size, COMBINATION); \
+		((__result) = igt_collection_iter_next_or_end(\
+			igt_tokencat(__it, __LINE__))); )
+
+#define for_each_variation_r(__result, __size, __set) \
+	for (struct igt_collection_iter *igt_tokencat(__it, __LINE__) = \
+		igt_collection_iter_create(__set, __size, VARIATION_R); \
+		((__result) = igt_collection_iter_next_or_end(\
+			igt_tokencat(__it, __LINE__))); )
+
+#define for_each_variation_nr(__result, __size, __set) \
+	for (struct igt_collection_iter *igt_tokencat(__it, __LINE__) = \
+		igt_collection_iter_create(__set, __size, VARIATION_NR); \
+		((__result) = igt_collection_iter_next_or_end(\
+			igt_tokencat(__it, __LINE__))); )
+
+#define for_each_collection_data(__data, __set) \
+	for (int igt_tokencat(__i, __LINE__) = 0; \
+		(__data = (igt_tokencat(__i, __LINE__) < __set->size) ? \
+		 &__set->set[igt_tokencat(__i, __LINE__)] : NULL); \
+		igt_tokencat(__i, __LINE__)++)
+
+#endif /* __IGT_COLLECTION_H__ */
diff --git a/lib/meson.build b/lib/meson.build
index 3bf39915..d8754618 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -7,6 +7,7 @@ lib_sources = [
 	'i915/gem_ring.c',
 	'i915/gem_mman.c',
 	'i915/gem_vm.c',
+	'igt_collection.c',
 	'igt_color_encoding.c',
 	'igt_debugfs.c',
 	'igt_device.c',
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_collection: Adding combinatorics facility (rev3)
  2020-01-21 16:10 [igt-dev] [PATCH i-g-t v4] lib/igt_collection: Adding combinatorics facility Zbigniew Kempczyński
@ 2020-01-21 16:52 ` Patchwork
  2020-01-22 10:17 ` [igt-dev] [PATCH i-g-t v4] lib/igt_collection: Adding combinatorics facility Petri Latvala
  2020-01-22 20:31 ` [igt-dev] ✓ Fi.CI.IGT: success for lib/igt_collection: Adding combinatorics facility (rev3) Patchwork
  2 siblings, 0 replies; 4+ messages in thread
From: Patchwork @ 2020-01-21 16:52 UTC (permalink / raw)
  To: Zbigniew Kempczyński; +Cc: igt-dev

== Series Details ==

Series: lib/igt_collection: Adding combinatorics facility (rev3)
URL   : https://patchwork.freedesktop.org/series/72276/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7784 -> IGTPW_3963
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/index.html

Known issues
------------

  Here are the changes found in IGTPW_3963 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-kbl-x1275:       [PASS][1] -> [INCOMPLETE][2] ([i915#879])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/fi-kbl-x1275/igt@i915_module_load@reload-with-fault-injection.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/fi-kbl-x1275/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_selftest@live_blt:
    - fi-ivb-3770:        [PASS][3] -> [DMESG-FAIL][4] ([i915#725])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/fi-ivb-3770/igt@i915_selftest@live_blt.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/fi-ivb-3770/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_gt_heartbeat:
    - fi-bsw-kefka:       [PASS][5] -> [DMESG-FAIL][6] ([i915#541])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/fi-bsw-kefka/igt@i915_selftest@live_gt_heartbeat.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/fi-bsw-kefka/igt@i915_selftest@live_gt_heartbeat.html

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-kbl-7500u:       [PASS][7] -> [FAIL][8] ([fdo#111096] / [i915#323])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html

  
#### Possible fixes ####

  * igt@gem_exec_suspend@basic-s0:
    - fi-skl-6700k2:      [FAIL][9] ([fdo#103375]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/fi-skl-6700k2/igt@gem_exec_suspend@basic-s0.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/fi-skl-6700k2/igt@gem_exec_suspend@basic-s0.html

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-skl-6700k2:      [DMESG-WARN][11] ([i915#889]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/fi-skl-6700k2/igt@i915_module_load@reload-with-fault-injection.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/fi-skl-6700k2/igt@i915_module_load@reload-with-fault-injection.html
    - fi-skl-lmem:        [INCOMPLETE][13] ([i915#671]) -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/fi-skl-lmem/igt@i915_module_load@reload-with-fault-injection.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/fi-skl-lmem/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_selftest@live_blt:
    - fi-hsw-4770r:       [DMESG-FAIL][15] ([i915#725]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/fi-hsw-4770r/igt@i915_selftest@live_blt.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/fi-hsw-4770r/igt@i915_selftest@live_blt.html
    - fi-hsw-4770:        [DMESG-FAIL][17] ([i915#553] / [i915#725]) -> [PASS][18]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/fi-hsw-4770/igt@i915_selftest@live_blt.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/fi-hsw-4770/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_gt_heartbeat:
    - fi-icl-u3:          [DMESG-FAIL][19] ([i915#541]) -> [PASS][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/fi-icl-u3/igt@i915_selftest@live_gt_heartbeat.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/fi-icl-u3/igt@i915_selftest@live_gt_heartbeat.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#111096]: https://bugs.freedesktop.org/show_bug.cgi?id=111096
  [i915#323]: https://gitlab.freedesktop.org/drm/intel/issues/323
  [i915#541]: https://gitlab.freedesktop.org/drm/intel/issues/541
  [i915#553]: https://gitlab.freedesktop.org/drm/intel/issues/553
  [i915#671]: https://gitlab.freedesktop.org/drm/intel/issues/671
  [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
  [i915#879]: https://gitlab.freedesktop.org/drm/intel/issues/879
  [i915#889]: https://gitlab.freedesktop.org/drm/intel/issues/889
  [i915#937]: https://gitlab.freedesktop.org/drm/intel/issues/937


Participating hosts (38 -> 43)
------------------------------

  Additional (10): fi-byt-j1900 fi-hsw-peppy fi-glk-dsi fi-bwr-2160 fi-snb-2520m fi-cfl-8109u fi-blb-e6850 fi-byt-n2820 fi-bsw-nick fi-skl-6600u 
  Missing    (5): fi-ilk-m540 fi-hsw-4200u fi-bsw-cyan fi-ctg-p8600 fi-icl-dsi 


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_5376 -> IGTPW_3963

  CI-20190529: 20190529
  CI_DRM_7784: a2a6531ffa9affcd4c981d084294eb1f5d115566 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_3963: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/index.html
  IGT_5376: 5cf58d947a02379d2885d6dd4f8bb487cfc3eed2 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [igt-dev] [PATCH i-g-t v4] lib/igt_collection: Adding combinatorics facility
  2020-01-21 16:10 [igt-dev] [PATCH i-g-t v4] lib/igt_collection: Adding combinatorics facility Zbigniew Kempczyński
  2020-01-21 16:52 ` [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_collection: Adding combinatorics facility (rev3) Patchwork
@ 2020-01-22 10:17 ` Petri Latvala
  2020-01-22 20:31 ` [igt-dev] ✓ Fi.CI.IGT: success for lib/igt_collection: Adding combinatorics facility (rev3) Patchwork
  2 siblings, 0 replies; 4+ messages in thread
From: Petri Latvala @ 2020-01-22 10:17 UTC (permalink / raw)
  To: Zbigniew Kempczyński; +Cc: igt-dev

On Tue, Jan 21, 2020 at 05:10:47PM +0100, Zbigniew Kempczyński wrote:
> Dynamic tests gives us new method to create tests depending on the
> hardware/software capabilities. To check coverage some tests require
> verification over some set of objects/data. To make life easier
> with combinatorics this patch introduces igt_collection. Currently it
> supports iterating over set to get subsets, combinations, variations
> with and without repetitions.
> Code has some limitation (set/subset cannot be larger than 16 elements,
> what is enough for most cases).
> 
> Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
> Cc: Petri Latvala <petri.latvala@intel.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> ---
>  .../igt-gpu-tools/igt-gpu-tools-docs.xml      |   1 +
>  lib/Makefile.sources                          |   2 +
>  lib/igt_collection.c                          | 515 ++++++++++++++++++
>  lib/igt_collection.h                          |  99 ++++
>  lib/meson.build                               |   1 +
>  5 files changed, 618 insertions(+)
>  create mode 100644 lib/igt_collection.c
>  create mode 100644 lib/igt_collection.h
> 
> diff --git a/docs/reference/igt-gpu-tools/igt-gpu-tools-docs.xml b/docs/reference/igt-gpu-tools/igt-gpu-tools-docs.xml
> index aa9fef20..9c9aa8f1 100644
> --- a/docs/reference/igt-gpu-tools/igt-gpu-tools-docs.xml
> +++ b/docs/reference/igt-gpu-tools/igt-gpu-tools-docs.xml
> @@ -20,6 +20,7 @@
>      <xi:include href="xml/igt_audio.xml"/>
>      <xi:include href="xml/igt_aux.xml"/>
>      <xi:include href="xml/igt_chamelium.xml"/>
> +    <xi:include href="xml/igt_collection.xml"/>
>      <xi:include href="xml/igt_core.xml"/>
>      <xi:include href="xml/igt_debugfs.xml"/>
>      <xi:include href="xml/igt_device.xml"/>
> diff --git a/lib/Makefile.sources b/lib/Makefile.sources
> index feb8c20d..631d6714 100644
> --- a/lib/Makefile.sources
> +++ b/lib/Makefile.sources
> @@ -29,6 +29,8 @@ lib_source_list =	 	\
>  	igt_device_scan.h	\
>  	igt_aux.c		\
>  	igt_aux.h		\
> +	igt_collection.c	\
> +	igt_collection.h	\
>  	igt_color_encoding.c	\
>  	igt_color_encoding.h	\
>  	igt_edid.c		\
> diff --git a/lib/igt_collection.c b/lib/igt_collection.c
> new file mode 100644
> index 00000000..c3e585c7
> --- /dev/null
> +++ b/lib/igt_collection.c
> @@ -0,0 +1,515 @@
> +#include "igt.h"
> +#include "igt_collection.h"


This file is still missing the license comment block.



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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [igt-dev] ✓ Fi.CI.IGT: success for lib/igt_collection: Adding combinatorics facility (rev3)
  2020-01-21 16:10 [igt-dev] [PATCH i-g-t v4] lib/igt_collection: Adding combinatorics facility Zbigniew Kempczyński
  2020-01-21 16:52 ` [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_collection: Adding combinatorics facility (rev3) Patchwork
  2020-01-22 10:17 ` [igt-dev] [PATCH i-g-t v4] lib/igt_collection: Adding combinatorics facility Petri Latvala
@ 2020-01-22 20:31 ` Patchwork
  2 siblings, 0 replies; 4+ messages in thread
From: Patchwork @ 2020-01-22 20:31 UTC (permalink / raw)
  To: Zbigniew Kempczyński; +Cc: igt-dev

== Series Details ==

Series: lib/igt_collection: Adding combinatorics facility (rev3)
URL   : https://patchwork.freedesktop.org/series/72276/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7784_full -> IGTPW_3963_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/index.html

Known issues
------------

  Here are the changes found in IGTPW_3963_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_ctx_isolation@bcs0-s3:
    - shard-kbl:          [PASS][1] -> [DMESG-WARN][2] ([i915#180]) +2 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-kbl7/igt@gem_ctx_isolation@bcs0-s3.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-kbl3/igt@gem_ctx_isolation@bcs0-s3.html

  * igt@gem_ctx_isolation@vcs1-none:
    - shard-iclb:         [PASS][3] -> [SKIP][4] ([fdo#109276] / [fdo#112080]) +1 similar issue
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb2/igt@gem_ctx_isolation@vcs1-none.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb6/igt@gem_ctx_isolation@vcs1-none.html

  * igt@gem_eio@kms:
    - shard-snb:          [PASS][5] -> [INCOMPLETE][6] ([i915#82])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-snb2/igt@gem_eio@kms.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-snb1/igt@gem_eio@kms.html

  * igt@gem_exec_reloc@basic-cpu-gtt:
    - shard-snb:          [PASS][7] -> [DMESG-WARN][8] ([i915#478])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-snb5/igt@gem_exec_reloc@basic-cpu-gtt.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-snb1/igt@gem_exec_reloc@basic-cpu-gtt.html

  * igt@gem_exec_schedule@preempt-other-chain-bsd:
    - shard-iclb:         [PASS][9] -> [SKIP][10] ([fdo#112146]) +3 similar issues
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb6/igt@gem_exec_schedule@preempt-other-chain-bsd.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb1/igt@gem_exec_schedule@preempt-other-chain-bsd.html

  * igt@gem_exec_schedule@preempt-queue-bsd1:
    - shard-iclb:         [PASS][11] -> [SKIP][12] ([fdo#109276]) +17 similar issues
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb1/igt@gem_exec_schedule@preempt-queue-bsd1.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb8/igt@gem_exec_schedule@preempt-queue-bsd1.html

  * igt@gem_persistent_relocs@forked-faulting-reloc-thrash-inactive:
    - shard-kbl:          [PASS][13] -> [TIMEOUT][14] ([fdo#112271] / [i915#530]) +1 similar issue
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-kbl7/igt@gem_persistent_relocs@forked-faulting-reloc-thrash-inactive.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-kbl1/igt@gem_persistent_relocs@forked-faulting-reloc-thrash-inactive.html

  * igt@gem_persistent_relocs@forked-faulting-reloc-thrashing:
    - shard-hsw:          [PASS][15] -> [INCOMPLETE][16] ([i915#530] / [i915#61]) +1 similar issue
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-hsw8/igt@gem_persistent_relocs@forked-faulting-reloc-thrashing.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-hsw1/igt@gem_persistent_relocs@forked-faulting-reloc-thrashing.html
    - shard-iclb:         [PASS][17] -> [TIMEOUT][18] ([fdo#112271] / [i915#530])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb1/igt@gem_persistent_relocs@forked-faulting-reloc-thrashing.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb7/igt@gem_persistent_relocs@forked-faulting-reloc-thrashing.html

  * igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive:
    - shard-hsw:          [PASS][19] -> [TIMEOUT][20] ([fdo#112271] / [i915#530]) +1 similar issue
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-hsw4/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-hsw4/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive.html

  * igt@gem_persistent_relocs@forked-interruptible-thrash-inactive:
    - shard-tglb:         [PASS][21] -> [TIMEOUT][22] ([fdo#112126] / [fdo#112271] / [i915#530])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-tglb5/igt@gem_persistent_relocs@forked-interruptible-thrash-inactive.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-tglb3/igt@gem_persistent_relocs@forked-interruptible-thrash-inactive.html

  * igt@gem_persistent_relocs@forked-interruptible-thrashing:
    - shard-apl:          [PASS][23] -> [TIMEOUT][24] ([fdo#112271] / [i915#530])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-apl6/igt@gem_persistent_relocs@forked-interruptible-thrashing.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-apl4/igt@gem_persistent_relocs@forked-interruptible-thrashing.html

  * igt@gem_persistent_relocs@forked-thrashing:
    - shard-kbl:          [PASS][25] -> [INCOMPLETE][26] ([fdo#103665] / [i915#530]) +1 similar issue
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-kbl3/igt@gem_persistent_relocs@forked-thrashing.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-kbl3/igt@gem_persistent_relocs@forked-thrashing.html

  * igt@gem_ppgtt@flink-and-close-vma-leak:
    - shard-glk:          [PASS][27] -> [FAIL][28] ([i915#644])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-glk9/igt@gem_ppgtt@flink-and-close-vma-leak.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-glk9/igt@gem_ppgtt@flink-and-close-vma-leak.html

  * igt@gem_userptr_blits@dmabuf-unsync:
    - shard-snb:          [PASS][29] -> [DMESG-WARN][30] ([fdo#111870] / [i915#478])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-snb2/igt@gem_userptr_blits@dmabuf-unsync.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-snb4/igt@gem_userptr_blits@dmabuf-unsync.html

  * igt@i915_pm_rps@reset:
    - shard-iclb:         [PASS][31] -> [FAIL][32] ([i915#413])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb4/igt@i915_pm_rps@reset.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb8/igt@i915_pm_rps@reset.html

  * igt@i915_selftest@live_blt:
    - shard-hsw:          [PASS][33] -> [DMESG-FAIL][34] ([i915#725])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-hsw7/igt@i915_selftest@live_blt.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-hsw5/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@mock_requests:
    - shard-iclb:         [PASS][35] -> [INCOMPLETE][36] ([i915#140])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb1/igt@i915_selftest@mock_requests.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb1/igt@i915_selftest@mock_requests.html

  * igt@kms_busy@basic-flip-pipe-a:
    - shard-tglb:         [PASS][37] -> [DMESG-WARN][38] ([i915#402])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-tglb2/igt@kms_busy@basic-flip-pipe-a.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-tglb5/igt@kms_busy@basic-flip-pipe-a.html

  * igt@kms_cursor_crc@pipe-c-cursor-128x128-sliding:
    - shard-kbl:          [PASS][39] -> [FAIL][40] ([i915#54])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-kbl6/igt@kms_cursor_crc@pipe-c-cursor-128x128-sliding.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-kbl4/igt@kms_cursor_crc@pipe-c-cursor-128x128-sliding.html
    - shard-apl:          [PASS][41] -> [FAIL][42] ([i915#54]) +1 similar issue
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-apl6/igt@kms_cursor_crc@pipe-c-cursor-128x128-sliding.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-apl4/igt@kms_cursor_crc@pipe-c-cursor-128x128-sliding.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-apl:          [PASS][43] -> [DMESG-WARN][44] ([i915#180])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-apl8/igt@kms_flip@flip-vs-suspend-interruptible.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-apl6/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-onoff:
    - shard-tglb:         [PASS][45] -> [FAIL][46] ([i915#49]) +1 similar issue
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-tglb3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-onoff.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-tglb4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-onoff.html

  * igt@kms_psr@psr2_primary_mmap_cpu:
    - shard-iclb:         [PASS][47] -> [SKIP][48] ([fdo#109441]) +3 similar issues
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb2/igt@kms_psr@psr2_primary_mmap_cpu.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb4/igt@kms_psr@psr2_primary_mmap_cpu.html

  * igt@perf_pmu@busy-vcs1:
    - shard-iclb:         [PASS][49] -> [SKIP][50] ([fdo#112080]) +12 similar issues
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb2/igt@perf_pmu@busy-vcs1.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb5/igt@perf_pmu@busy-vcs1.html

  
#### Possible fixes ####

  * igt@gem_ctx_persistence@vcs0-mixed-process:
    - shard-apl:          [FAIL][51] ([i915#679]) -> [PASS][52]
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-apl6/igt@gem_ctx_persistence@vcs0-mixed-process.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-apl6/igt@gem_ctx_persistence@vcs0-mixed-process.html

  * igt@gem_ctx_persistence@vcs1-queued:
    - shard-iclb:         [SKIP][53] ([fdo#109276] / [fdo#112080]) -> [PASS][54] +4 similar issues
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb8/igt@gem_ctx_persistence@vcs1-queued.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb2/igt@gem_ctx_persistence@vcs1-queued.html

  * igt@gem_ctx_shared@exec-single-timeline-bsd:
    - shard-iclb:         [SKIP][55] ([fdo#110841]) -> [PASS][56]
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb1/igt@gem_ctx_shared@exec-single-timeline-bsd.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb6/igt@gem_ctx_shared@exec-single-timeline-bsd.html

  * igt@gem_exec_balancer@smoke:
    - shard-iclb:         [SKIP][57] ([fdo#110854]) -> [PASS][58]
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb8/igt@gem_exec_balancer@smoke.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb1/igt@gem_exec_balancer@smoke.html

  * igt@gem_exec_schedule@promotion-bsd1:
    - shard-iclb:         [SKIP][59] ([fdo#109276]) -> [PASS][60] +14 similar issues
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb3/igt@gem_exec_schedule@promotion-bsd1.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb2/igt@gem_exec_schedule@promotion-bsd1.html

  * igt@gem_exec_schedule@wide-bsd:
    - shard-iclb:         [SKIP][61] ([fdo#112146]) -> [PASS][62] +3 similar issues
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb4/igt@gem_exec_schedule@wide-bsd.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb6/igt@gem_exec_schedule@wide-bsd.html

  * igt@gem_exec_store@pages-vcs1:
    - shard-iclb:         [SKIP][63] ([fdo#112080]) -> [PASS][64] +6 similar issues
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb6/igt@gem_exec_store@pages-vcs1.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb1/igt@gem_exec_store@pages-vcs1.html

  * igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing:
    - shard-apl:          [TIMEOUT][65] ([fdo#112271] / [i915#530]) -> [PASS][66]
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-apl1/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-apl3/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html
    - shard-glk:          [TIMEOUT][67] ([fdo#112271] / [i915#530]) -> [PASS][68]
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-glk6/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-glk7/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html

  * igt@gem_persistent_relocs@forked-interruptible-thrashing:
    - shard-kbl:          [TIMEOUT][69] ([fdo#112271] / [i915#530]) -> [PASS][70]
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-kbl1/igt@gem_persistent_relocs@forked-interruptible-thrashing.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-kbl4/igt@gem_persistent_relocs@forked-interruptible-thrashing.html

  * igt@gem_persistent_relocs@forked-thrash-inactive:
    - shard-hsw:          [INCOMPLETE][71] ([i915#530] / [i915#61]) -> [PASS][72]
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-hsw2/igt@gem_persistent_relocs@forked-thrash-inactive.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-hsw8/igt@gem_persistent_relocs@forked-thrash-inactive.html

  * igt@gem_userptr_blits@sync-unmap:
    - shard-snb:          [DMESG-WARN][73] ([fdo#110789] / [fdo#111870] / [i915#478]) -> [PASS][74]
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-snb2/igt@gem_userptr_blits@sync-unmap.html
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-snb6/igt@gem_userptr_blits@sync-unmap.html

  * igt@gem_userptr_blits@sync-unmap-cycles:
    - shard-snb:          [DMESG-WARN][75] ([fdo#111870] / [i915#478]) -> [PASS][76]
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-snb6/igt@gem_userptr_blits@sync-unmap-cycles.html
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-snb1/igt@gem_userptr_blits@sync-unmap-cycles.html

  * igt@i915_pm_rpm@modeset-stress-extra-wait:
    - shard-iclb:         [INCOMPLETE][77] ([i915#140] / [i915#189]) -> [PASS][78]
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb4/igt@i915_pm_rpm@modeset-stress-extra-wait.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb5/igt@i915_pm_rpm@modeset-stress-extra-wait.html

  * igt@i915_selftest@mock_requests:
    - shard-tglb:         [INCOMPLETE][79] ([i915#472]) -> [PASS][80]
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-tglb4/igt@i915_selftest@mock_requests.html
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-tglb7/igt@i915_selftest@mock_requests.html
    - shard-apl:          [INCOMPLETE][81] ([fdo#103927]) -> [PASS][82]
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-apl1/igt@i915_selftest@mock_requests.html
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-apl8/igt@i915_selftest@mock_requests.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-onoff:
    - shard-tglb:         [FAIL][83] ([i915#49]) -> [PASS][84] +9 similar issues
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-tglb2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-onoff.html
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-tglb3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-kbl:          [DMESG-WARN][85] ([i915#180]) -> [PASS][86] +5 similar issues
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-kbl3/igt@kms_frontbuffer_tracking@fbc-suspend.html
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-kbl7/igt@kms_frontbuffer_tracking@fbc-suspend.html

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes:
    - shard-apl:          [DMESG-WARN][87] ([i915#180]) -> [PASS][88] +1 similar issue
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-apl4/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes.html
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-apl2/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes.html

  * igt@kms_psr@no_drrs:
    - shard-iclb:         [FAIL][89] ([i915#173]) -> [PASS][90]
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb1/igt@kms_psr@no_drrs.html
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb4/igt@kms_psr@no_drrs.html

  * igt@kms_psr@psr2_cursor_blt:
    - shard-iclb:         [SKIP][91] ([fdo#109441]) -> [PASS][92]
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb7/igt@kms_psr@psr2_cursor_blt.html
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb2/igt@kms_psr@psr2_cursor_blt.html

  * igt@kms_vblank@pipe-c-ts-continuation-dpms-suspend:
    - shard-iclb:         [DMESG-WARN][93] ([fdo#111764]) -> [PASS][94]
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb8/igt@kms_vblank@pipe-c-ts-continuation-dpms-suspend.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb8/igt@kms_vblank@pipe-c-ts-continuation-dpms-suspend.html

  
#### Warnings ####

  * igt@gem_ctx_isolation@vcs1-nonpriv-switch:
    - shard-iclb:         [SKIP][95] ([fdo#109276] / [fdo#112080]) -> [FAIL][96] ([IGT#28])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7784/shard-iclb8/igt@gem_ctx_isolation@vcs1-nonpriv-switch.html
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/shard-iclb2/igt@gem_ctx_isolation@vcs1-nonpriv-switch.html

  
  [IGT#28]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/28
  [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#110789]: https://bugs.freedesktop.org/show_bug.cgi?id=110789
  [fdo#110841]: https://bugs.freedesktop.org/show_bug.cgi?id=110841
  [fdo#110854]: https://bugs.freedesktop.org/show_bug.cgi?id=110854
  [fdo#111764]: https://bugs.freedesktop.org/show_bug.cgi?id=111764
  [fdo#111870]: https://bugs.freedesktop.org/show_bug.cgi?id=111870
  [fdo#112080]: https://bugs.freedesktop.org/show_bug.cgi?id=112080
  [fdo#112126]: https://bugs.freedesktop.org/show_bug.cgi?id=112126
  [fdo#112146]: https://bugs.freedesktop.org/show_bug.cgi?id=112146
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#140]: https://gitlab.freedesktop.org/drm/intel/issues/140
  [i915#173]: https://gitlab.freedesktop.org/drm/intel/issues/173
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#189]: https://gitlab.freedesktop.org/drm/intel/issues/189
  [i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402
  [i915#413]: https://gitlab.freedesktop.org/drm/intel/issues/413
  [i915#472]: https://gitlab.freedesktop.org/drm/intel/issues/472
  [i915#478]: https://gitlab.freedesktop.org/drm/intel/issues/478
  [i915#49]: https://gitlab.freedesktop.org/drm/intel/issues/49
  [i915#530]: https://gitlab.freedesktop.org/drm/intel/issues/530
  [i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
  [i915#61]: https://gitlab.freedesktop.org/drm/intel/issues/61
  [i915#644]: https://gitlab.freedesktop.org/drm/intel/issues/644
  [i915#679]: https://gitlab.freedesktop.org/drm/intel/issues/679
  [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
  [i915#82]: https://gitlab.freedesktop.org/drm/intel/issues/82


Participating hosts (10 -> 8)
------------------------------

  Missing    (2): pig-skl-6260u pig-glk-j5005 


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_5376 -> IGTPW_3963
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_7784: a2a6531ffa9affcd4c981d084294eb1f5d115566 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_3963: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3963/index.html
  IGT_5376: 5cf58d947a02379d2885d6dd4f8bb487cfc3eed2 @ 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_3963/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-01-22 20:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-21 16:10 [igt-dev] [PATCH i-g-t v4] lib/igt_collection: Adding combinatorics facility Zbigniew Kempczyński
2020-01-21 16:52 ` [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_collection: Adding combinatorics facility (rev3) Patchwork
2020-01-22 10:17 ` [igt-dev] [PATCH i-g-t v4] lib/igt_collection: Adding combinatorics facility Petri Latvala
2020-01-22 20:31 ` [igt-dev] ✓ Fi.CI.IGT: success for lib/igt_collection: Adding combinatorics facility (rev3) Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.