All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t 0/4] add kselftest runner documentation
@ 2022-08-03  5:26 Tales Aparecida
  2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 1/4] lib/igt_kmod: fix trivial typos Tales Aparecida
                   ` (5 more replies)
  0 siblings, 6 replies; 13+ messages in thread
From: Tales Aparecida @ 2022-08-03  5:26 UTC (permalink / raw)
  To: igt-dev, Chris Wilson
  Cc: siqueirajordao, magalilemes00, tales.aparecida, Isabella Basso,
	andrealmeid, Trevor Woerner

In the interest of making the code more accessible, add documentation
on structs and functions related to the kselftest.
While writing igt_kselftest_begin() documentation I realized it always
returned 0. Instead of documenting that behavior, the function now
returns non-zero if it fails to open /dev/kmsg.

As an extra, add instructions about writing documentation.

Tales Aparecida (4):
  lib/igt_kmod: fix trivial typos
  CONTRIBUTING: Add reference for GTKDoc
  lib/kselftests: return non-zero on open(kmsg) failure
  lib/igt_kmod: add igt_kselftests documentation

 CONTRIBUTING.md |   7 +++
 lib/igt_kmod.c  | 113 +++++++++++++++++++++++++++++++++++++++++++++++-
 lib/igt_kmod.h  |  18 ++++++++
 3 files changed, 136 insertions(+), 2 deletions(-)

-- 
2.37.0

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

* [igt-dev] [PATCH i-g-t 1/4] lib/igt_kmod: fix trivial typos
  2022-08-03  5:26 [igt-dev] [PATCH i-g-t 0/4] add kselftest runner documentation Tales Aparecida
@ 2022-08-03  5:26 ` Tales Aparecida
  2022-08-03 17:13   ` Kamil Konieczny
  2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 2/4] CONTRIBUTING: Add reference for GTKDoc Tales Aparecida
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 13+ messages in thread
From: Tales Aparecida @ 2022-08-03  5:26 UTC (permalink / raw)
  To: igt-dev, Chris Wilson
  Cc: siqueirajordao, magalilemes00, tales.aparecida, Isabella Basso,
	andrealmeid, Trevor Woerner

existance -> existence
kmcdline -> kcmdline

Signed-off-by: Tales Aparecida <tales.aparecida@gmail.com>
---
 lib/igt_kmod.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
index dfdcfcc5..bde0461a 100644
--- a/lib/igt_kmod.c
+++ b/lib/igt_kmod.c
@@ -114,7 +114,7 @@ out:
  *
  * Returns: True in case the module has been found or false otherwise.
  *
- * Function to check the existance of module @mod_name in list of loaded kernel
+ * Function to check the existence of module @mod_name in list of loaded kernel
  * modules.
  *
  */
@@ -813,7 +813,7 @@ static void kmsg_dump(int fd)
 				continue;
 
 			if (errno == EPIPE) {
-				igt_warn("kmsg truncated: too many messages. You may want to increase log_buf_len in kmcdline\n");
+				igt_warn("kmsg truncated: too many messages. You may want to increase log_buf_len in kcmdline\n");
 				continue;
 			}
 
-- 
2.37.0

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

* [igt-dev] [PATCH i-g-t 2/4] CONTRIBUTING: Add reference for GTKDoc
  2022-08-03  5:26 [igt-dev] [PATCH i-g-t 0/4] add kselftest runner documentation Tales Aparecida
  2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 1/4] lib/igt_kmod: fix trivial typos Tales Aparecida
@ 2022-08-03  5:26 ` Tales Aparecida
  2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 3/4] lib/kselftests: return non-zero on open(kmsg) failure Tales Aparecida
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 13+ messages in thread
From: Tales Aparecida @ 2022-08-03  5:26 UTC (permalink / raw)
  To: igt-dev, Chris Wilson
  Cc: siqueirajordao, magalilemes00, tales.aparecida, Isabella Basso,
	andrealmeid, Trevor Woerner

Add reference links about code documentation.

Signed-off-by: Tales Aparecida <tales.aparecida@gmail.com>
---
 CONTRIBUTING.md | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6d1294ad..2b5a78b5 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -13,6 +13,12 @@ The Code
 - The code should follow kernel coding style:
   https://www.kernel.org/doc/html/latest/process/coding-style.html
 
+- The in-code documentation should follow GtkDoc specifications:
+  https://developer-old.gnome.org/gtk-doc-manual/stable/documenting.html.
+  For an updated version, you can also download the GtkDoc's
+  [source code][gtkdoc-repo] and open its manual with `yelp` directly by typing
+  in a terminal: `yelp file:///absolute/path/to/gtk-doc/help/manual/C/index.docbook`
+
 - Testcases (subtests) have to use minus signs (-) as a word separator.
   The generated documentation contains glossary of commonly used terms.
 
@@ -31,6 +37,7 @@ The Code
   more automatic conversions.
 
 [igt-describe]: https://drm.pages.freedesktop.org/igt-gpu-tools/igt-gpu-tools-Core.html#igt-describe
+[gtkdoc-repo]: https://gitlab.gnome.org/GNOME/gtk-doc
 
 
 Sending Patches
-- 
2.37.0

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

* [igt-dev] [PATCH i-g-t 3/4] lib/kselftests: return non-zero on open(kmsg) failure
  2022-08-03  5:26 [igt-dev] [PATCH i-g-t 0/4] add kselftest runner documentation Tales Aparecida
  2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 1/4] lib/igt_kmod: fix trivial typos Tales Aparecida
  2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 2/4] CONTRIBUTING: Add reference for GTKDoc Tales Aparecida
@ 2022-08-03  5:26 ` Tales Aparecida
  2022-08-03 17:11   ` Kamil Konieczny
  2022-08-04 18:09   ` Maíra Canal
  2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 4/4] lib/igt_kmod: add igt_kselftests documentation Tales Aparecida
                   ` (2 subsequent siblings)
  5 siblings, 2 replies; 13+ messages in thread
From: Tales Aparecida @ 2022-08-03  5:26 UTC (permalink / raw)
  To: igt-dev, Chris Wilson
  Cc: siqueirajordao, magalilemes00, tales.aparecida, Isabella Basso,
	andrealmeid, Trevor Woerner

Previously igt_kselftest_begin() always returned 0.
Return non-zero if failed to open kmsg, instead.

Signed-off-by: Tales Aparecida <tales.aparecida@gmail.com>
---
 lib/igt_kmod.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
index bde0461a..63636243 100644
--- a/lib/igt_kmod.c
+++ b/lib/igt_kmod.c
@@ -933,6 +933,8 @@ int igt_kselftest_begin(struct igt_kselftest *tst)
 	igt_require(err == 0 || err == -ENOENT);
 
 	tst->kmsg = open("/dev/kmsg", O_RDONLY | O_NONBLOCK);
+	if (tst->kmsg < 0)
+		return 1;
 
 	return 0;
 }
-- 
2.37.0

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

* [igt-dev] [PATCH i-g-t 4/4] lib/igt_kmod: add igt_kselftests documentation
  2022-08-03  5:26 [igt-dev] [PATCH i-g-t 0/4] add kselftest runner documentation Tales Aparecida
                   ` (2 preceding siblings ...)
  2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 3/4] lib/kselftests: return non-zero on open(kmsg) failure Tales Aparecida
@ 2022-08-03  5:26 ` Tales Aparecida
  2022-08-03  8:47   ` Petri Latvala
  2022-08-03  6:00 ` [igt-dev] ✓ Fi.CI.BAT: success for add kselftest runner documentation Patchwork
  2022-08-03 13:29 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  5 siblings, 1 reply; 13+ messages in thread
From: Tales Aparecida @ 2022-08-03  5:26 UTC (permalink / raw)
  To: igt-dev, Chris Wilson
  Cc: siqueirajordao, magalilemes00, tales.aparecida, Isabella Basso,
	andrealmeid, Trevor Woerner

Add documentation for igt_kselftests functions and structs. Also adds
comments to non trivial lines.

Signed-off-by: Tales Aparecida <tales.aparecida@gmail.com>
---
 lib/igt_kmod.c | 107 +++++++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_kmod.h |  18 +++++++++
 2 files changed, 125 insertions(+)

diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
index 63636243..852112cc 100644
--- a/lib/igt_kmod.c
+++ b/lib/igt_kmod.c
@@ -792,6 +792,12 @@ igt_amdgpu_driver_unload(void)
 	return IGT_EXIT_SUCCESS;
 }
 
+/*
+ * kmsg_dump:
+ * @fd: file descriptor for `/dev/kmsg` opened for reading
+ *
+ * Dump kmsg output into stderr.
+ */
 static void kmsg_dump(int fd)
 {
 	char record[4096 + 1];
@@ -832,6 +838,13 @@ static void kmsg_dump(int fd)
 	}
 }
 
+/*
+ * tests_add:
+ * @tl: (in): test to be inserted
+ * @list: (inout): ordered list of tests sorted by test->number
+ *
+ * Insert test at the correct position in the ordered list
+ */
 static void tests_add(struct igt_kselftest_list *tl, struct igt_list_head *list)
 {
 	struct igt_kselftest_list *pos;
@@ -843,6 +856,14 @@ static void tests_add(struct igt_kselftest_list *tl, struct igt_list_head *list)
 	igt_list_add_tail(&tl->link, &pos->link);
 }
 
+/**
+ * igt_kselftest_get_tests:
+ * @kmod: (in): kernel module from which to parse module_params' names into IGT tests
+ * @filter: (in)(nullable): get only tests with a prefix matching this filter
+ * @tests: (inout): resulting ordered list of tests
+ *
+ * Get IGT tests' names from module_params' names, given a module.
+ */
 void igt_kselftest_get_tests(struct kmod_module *kmod,
 			     const char *filter,
 			     struct igt_list_head *tests)
@@ -856,25 +877,33 @@ void igt_kselftest_get_tests(struct kmod_module *kmod,
 	if (!kmod_module_get_info(kmod, &pre))
 		return;
 
+	/* iter through module infos trying to find tests, which should be
+	 * named following the pattern: "igt__{test_number}__{test_name}:bool",
+	 * e.g.: "igt__18__perf_engine_cs:bool" */
 	kmod_list_foreach(d, pre) {
 		const char *key, *val;
 		char *colon;
 		int offset;
 
+		/*  skip any info that is not a module param */
 		key = kmod_module_info_get_key(d);
 		if (strcmp(key, "parmtype"))
 			continue;
 
+		/* skip any module param that don't have the IGT test prefix */
 		val = kmod_module_info_get_value(d);
 		if (!val || strncmp(val, param_prefix, prefix_len))
 			continue;
 
+		/* alloc list-node that will store the module_param name */
 		offset = strlen(val) + 1;
 		tl = malloc(sizeof(*tl) + offset);
 		if (!tl)
 			continue;
 
 		memcpy(tl->param, val, offset);
+
+		/* find and replace colon with \0 to discard module_param type */
 		colon = strchr(tl->param, ':');
 		*colon = '\0';
 
@@ -884,6 +913,7 @@ void igt_kselftest_get_tests(struct kmod_module *kmod,
 			   &tl->number, &offset) == 1)
 			tl->name += offset;
 
+		/* skip any test that doesn't match the prefix filter */
 		if (filter && strncmp(tl->name, filter, strlen(filter))) {
 			free(tl);
 			continue;
@@ -902,6 +932,22 @@ static int open_parameters(const char *module_name)
 	return open(path, O_RDONLY);
 }
 
+/**
+ * igt_kselftest_init:
+ * @tst: (inout): pointer of #igt_kselftest to be initialized
+ * @module_name: (in): name of the module with IGT tests declared as module_params
+ *
+ * Initialize the given struct igt_kselftest and the inner struct kmod_module.
+ *
+ * @Note: This function initialize @tst->kmsg with `-1`, call
+ * igt_kselftest_begin() to actually open the <filename>/dev/kmsg</filename> stream.
+ * @tst->module_name should be freed by the caller with free(), @tst->kmod 
+ * refcount needs to be decremented to be released using
+ * <function>kmod_module_unref</function>.
+ *
+ * Returns: 0 on success, non-zero otherwise. It fails if name is not a valid
+ * module name or if memory allocation failed.
+ */
 int igt_kselftest_init(struct igt_kselftest *tst,
 		       const char *module_name)
 {
@@ -922,6 +968,17 @@ int igt_kselftest_init(struct igt_kselftest *tst,
 	return 0;
 }
 
+/**
+ * igt_kselftest_begin:
+ * @tst: (inout): pointer to #igt_kselftest with `kmod_module` handler to unload
+ * 	and where the file descriptor for <filename>/dev/kmsg</filename> will be
+ * 	stored.
+ *
+ * Unload the module that will be tested and open kmsg to start reading it.
+ * If module is i915, unloads some of its dependencies as well.
+ *
+ * Returns: 0 on success, non-zero otherwise.
+ */
 int igt_kselftest_begin(struct igt_kselftest *tst)
 {
 	int err;
@@ -939,6 +996,21 @@ int igt_kselftest_begin(struct igt_kselftest *tst)
 	return 0;
 }
 
+/**
+ * igt_kselftest_execute:
+ * @tst: (in): handler for module to be tested and inner kmsg file descriptor
+ * @tl: (in): contains the name of the test to be executed
+ * @options: (in)(nullable): Extra parameters for the module. NULL in case no
+ * 	parameters are to be passed, or a '\0' terminated string otherwise.
+ * @result: (in)(nullable): NULL if the result of loading the module should be
+ * 	returned, or a '\0' terminated string with the name of the module_param
+ * 	holding the test's result, if that should be returned instead.
+ *
+ * Execute the given test by loading the module and asserts its success.
+ *
+ * Returns: 0 on success, non-zero otherwise. If @result is set, returns the
+ * value from the given module_param after running the test.
+ */
 int igt_kselftest_execute(struct igt_kselftest *tst,
 			  struct igt_kselftest_list *tl,
 			  const char *options,
@@ -952,6 +1024,7 @@ int igt_kselftest_execute(struct igt_kselftest *tst,
 
 	lseek(tst->kmsg, 0, SEEK_END);
 
+	/* prepare modprobe parameters to enable a test with extra options */
 	snprintf(buf, sizeof(buf), "%s=1 %s", tl->param, options ?: "");
 
 	err = modprobe(tst->kmod, buf);
@@ -977,18 +1050,40 @@ int igt_kselftest_execute(struct igt_kselftest *tst,
 	return err;
 }
 
+/**
+ * igt_kselftest_end:
+ * @tst: (in): handler for module to be unloaded and kmsg file descriptor
+ *
+ * Unload the module and close the kmsg file descriptor.
+ */
 void igt_kselftest_end(struct igt_kselftest *tst)
 {
 	kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE);
 	close(tst->kmsg);
 }
 
+/**
+ * igt_kselftest_fini:
+ * @tst: (in): container of items to be freed
+ *
+ * Free memory from @tst->module_name and remove reference for @tst->kmod
+ */
 void igt_kselftest_fini(struct igt_kselftest *tst)
 {
 	free(tst->module_name);
 	kmod_module_unref(tst->kmod);
 }
 
+/*
+ * unfilter:
+ * @filter: (in)(nullable): prefix to be removed
+ * @name: (in): string to be trimmed
+ *
+ * Remove prefix @filter from @name, removing an additional non-alpha char,
+ * if there's one.
+ *
+ * Returns: a pointer to the resulting string
+ */
 static const char *unfilter(const char *filter, const char *name)
 {
 	if (!filter)
@@ -1001,6 +1096,18 @@ static const char *unfilter(const char *filter, const char *name)
 	return name;
 }
 
+/**
+ * igt_kselftests:
+ * @module_name: (in): name of the module to find and run tests for
+ * @options: (in)(nullable): Extra parameters for the module. NULL in case no
+ * 	parameters are to be passed, or a '\0' terminated string otherwise.
+ * @result: (in)(nullable): NULL if the result of loading the module should be
+ * 	returned, or a '\0' terminated string with the name of the module_param
+ * 	holding the test's result, if that should be returned instead.
+ * @filter: (in)(nullable): run only tests with a prefix matching this filter
+ *
+ * Find and execute kselftests defined as module_params of the given module.
+ */
 void igt_kselftests(const char *module_name,
 		    const char *options,
 		    const char *result,
diff --git a/lib/igt_kmod.h b/lib/igt_kmod.h
index f98dd29f..4f81641b 100644
--- a/lib/igt_kmod.h
+++ b/lib/igt_kmod.h
@@ -50,12 +50,30 @@ void igt_kselftests(const char *module_name,
 		    const char *result_option,
 		    const char *filter);
 
+/**
+ * igt_kselftest:
+ * @kmod: reference for <structname>kmod_module</structname> used to load and
+ * 	unload the module
+ * @module_name: name of the module containing the kselftests for IGT
+ * @kmsg: holds a file descriptor for <filename>/dev/kmsg</filename>
+ *
+ * Handle a kernel module with kselftests and their output
+ */
 struct igt_kselftest {
 	struct kmod_module *kmod;
 	char *module_name;
 	int kmsg;
 };
 
+/**
+ * igt_kselftest_list:
+ * @link: doubly linked list attributes
+ * @number: defines the relative position of each element in the ordered list
+ * @name: pointer to the test's name, a suffix of <structfield>param</structfield>
+ * @param: name of the module_param that enables/disables the test
+ *
+ * Node of an ordered list of test names
+ */
 struct igt_kselftest_list {
 	struct igt_list_head link;
 	unsigned int number;
-- 
2.37.0

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

* [igt-dev] ✓ Fi.CI.BAT: success for add kselftest runner documentation
  2022-08-03  5:26 [igt-dev] [PATCH i-g-t 0/4] add kselftest runner documentation Tales Aparecida
                   ` (3 preceding siblings ...)
  2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 4/4] lib/igt_kmod: add igt_kselftests documentation Tales Aparecida
@ 2022-08-03  6:00 ` Patchwork
  2022-08-03 13:29 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  5 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2022-08-03  6:00 UTC (permalink / raw)
  To: Tales Aparecida; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 5509 bytes --]

== Series Details ==

Series: add kselftest runner documentation
URL   : https://patchwork.freedesktop.org/series/106921/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_11964 -> IGTPW_7600
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (45 -> 44)
------------------------------

  Additional (2): fi-kbl-soraka bat-jsl-3 
  Missing    (3): fi-ctg-p8600 fi-bdw-samus fi-hsw-4200u 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_gttfill@basic:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][1] ([fdo#109271]) +8 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/fi-kbl-soraka/igt@gem_exec_gttfill@basic.html

  * igt@gem_huc_copy@huc-copy:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][2] ([fdo#109271] / [i915#2190])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/fi-kbl-soraka/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@basic:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][3] ([fdo#109271] / [i915#4613]) +3 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/fi-kbl-soraka/igt@gem_lmem_swapping@basic.html

  * igt@i915_selftest@live@gem:
    - fi-pnv-d510:        NOTRUN -> [DMESG-FAIL][4] ([i915#4528])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/fi-pnv-d510/igt@i915_selftest@live@gem.html

  * igt@i915_selftest@live@gt_pm:
    - fi-kbl-soraka:      NOTRUN -> [DMESG-FAIL][5] ([i915#1886])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/fi-kbl-soraka/igt@i915_selftest@live@gt_pm.html

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][6] ([fdo#109271] / [fdo#111827]) +7 similar issues
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/fi-kbl-soraka/igt@kms_chamelium@hdmi-hpd-fast.html

  
#### Possible fixes ####

  * igt@fbdev@read:
    - {bat-rpls-2}:       [SKIP][7] ([i915#2582]) -> [PASS][8] +4 similar issues
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/bat-rpls-2/igt@fbdev@read.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/bat-rpls-2/igt@fbdev@read.html

  * igt@gem_exec_suspend@basic-s3@smem:
    - {bat-adlm-1}:       [DMESG-WARN][9] ([i915#2867]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/bat-adlm-1/igt@gem_exec_suspend@basic-s3@smem.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/bat-adlm-1/igt@gem_exec_suspend@basic-s3@smem.html

  * igt@gem_ringfill@basic-all:
    - {bat-dg2-8}:        [FAIL][11] ([i915#5886]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/bat-dg2-8/igt@gem_ringfill@basic-all.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/bat-dg2-8/igt@gem_ringfill@basic-all.html

  * igt@i915_selftest@live@hugepages:
    - {bat-adlm-1}:       [DMESG-WARN][13] -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/bat-adlm-1/igt@i915_selftest@live@hugepages.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/bat-adlm-1/igt@i915_selftest@live@hugepages.html

  * igt@i915_selftest@live@requests:
    - fi-pnv-d510:        [DMESG-FAIL][15] ([i915#4528]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/fi-pnv-d510/igt@i915_selftest@live@requests.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/fi-pnv-d510/igt@i915_selftest@live@requests.html

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

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1886]: https://gitlab.freedesktop.org/drm/intel/issues/1886
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#2867]: https://gitlab.freedesktop.org/drm/intel/issues/2867
  [i915#3003]: https://gitlab.freedesktop.org/drm/intel/issues/3003
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4528]: https://gitlab.freedesktop.org/drm/intel/issues/4528
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#5270]: https://gitlab.freedesktop.org/drm/intel/issues/5270
  [i915#5886]: https://gitlab.freedesktop.org/drm/intel/issues/5886
  [i915#5903]: https://gitlab.freedesktop.org/drm/intel/issues/5903


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6610 -> IGTPW_7600

  CI-20190529: 20190529
  CI_DRM_11964: 856e330c2d6aa43e94bfca2d1b09369575f8f498 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_7600: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/index.html
  IGT_6610: c93f93dfe91a77e6a884f826d61f927106988b5f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/index.html

[-- Attachment #2: Type: text/html, Size: 6045 bytes --]

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

* Re: [igt-dev] [PATCH i-g-t 4/4] lib/igt_kmod: add igt_kselftests documentation
  2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 4/4] lib/igt_kmod: add igt_kselftests documentation Tales Aparecida
@ 2022-08-03  8:47   ` Petri Latvala
  2022-08-03 15:49     ` Tales
  0 siblings, 1 reply; 13+ messages in thread
From: Petri Latvala @ 2022-08-03  8:47 UTC (permalink / raw)
  To: Tales Aparecida
  Cc: siqueirajordao, magalilemes00, Chris Wilson, igt-dev,
	Isabella Basso, andrealmeid, Trevor Woerner

On Wed, Aug 03, 2022 at 02:26:54AM -0300, Tales Aparecida wrote:
> Add documentation for igt_kselftests functions and structs. Also adds
> comments to non trivial lines.
> 
> Signed-off-by: Tales Aparecida <tales.aparecida@gmail.com>
> ---
>  lib/igt_kmod.c | 107 +++++++++++++++++++++++++++++++++++++++++++++++++
>  lib/igt_kmod.h |  18 +++++++++
>  2 files changed, 125 insertions(+)
> 
> diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
> index 63636243..852112cc 100644
> --- a/lib/igt_kmod.c
> +++ b/lib/igt_kmod.c
> @@ -792,6 +792,12 @@ igt_amdgpu_driver_unload(void)
>  	return IGT_EXIT_SUCCESS;
>  }
>  
> +/*
> + * kmsg_dump:
> + * @fd: file descriptor for `/dev/kmsg` opened for reading
> + *
> + * Dump kmsg output into stderr.
> + */

The documentation comment needs to begin with /** (two *)

>  static void kmsg_dump(int fd)
>  {
>  	char record[4096 + 1];
> @@ -832,6 +838,13 @@ static void kmsg_dump(int fd)
>  	}
>  }
>  
> +/*
> + * tests_add:
> + * @tl: (in): test to be inserted
> + * @list: (inout): ordered list of tests sorted by test->number
> + *
> + * Insert test at the correct position in the ordered list
> + */

Same for this.

>  static void tests_add(struct igt_kselftest_list *tl, struct igt_list_head *list)
>  {
>  	struct igt_kselftest_list *pos;
> @@ -843,6 +856,14 @@ static void tests_add(struct igt_kselftest_list *tl, struct igt_list_head *list)
>  	igt_list_add_tail(&tl->link, &pos->link);
>  }
>  
> +/**
> + * igt_kselftest_get_tests:
> + * @kmod: (in): kernel module from which to parse module_params' names into IGT tests
> + * @filter: (in)(nullable): get only tests with a prefix matching this filter
> + * @tests: (inout): resulting ordered list of tests
> + *
> + * Get IGT tests' names from module_params' names, given a module.
> + */
>  void igt_kselftest_get_tests(struct kmod_module *kmod,
>  			     const char *filter,
>  			     struct igt_list_head *tests)
> @@ -856,25 +877,33 @@ void igt_kselftest_get_tests(struct kmod_module *kmod,
>  	if (!kmod_module_get_info(kmod, &pre))
>  		return;
>  
> +	/* iter through module infos trying to find tests, which should be
> +	 * named following the pattern: "igt__{test_number}__{test_name}:bool",
> +	 * e.g.: "igt__18__perf_engine_cs:bool" */

Multiline comments should have /* and */ on their own lines.

>  	kmod_list_foreach(d, pre) {
>  		const char *key, *val;
>  		char *colon;
>  		int offset;
>  
> +		/*  skip any info that is not a module param */

                  ^^  extra space there

>  		key = kmod_module_info_get_key(d);
>  		if (strcmp(key, "parmtype"))
>  			continue;
>  
> +		/* skip any module param that don't have the IGT test prefix */
>  		val = kmod_module_info_get_value(d);
>  		if (!val || strncmp(val, param_prefix, prefix_len))
>  			continue;
>  
> +		/* alloc list-node that will store the module_param name */
>  		offset = strlen(val) + 1;
>  		tl = malloc(sizeof(*tl) + offset);
>  		if (!tl)
>  			continue;
>  
>  		memcpy(tl->param, val, offset);
> +
> +		/* find and replace colon with \0 to discard module_param type */
>  		colon = strchr(tl->param, ':');
>  		*colon = '\0';
>  
> @@ -884,6 +913,7 @@ void igt_kselftest_get_tests(struct kmod_module *kmod,
>  			   &tl->number, &offset) == 1)
>  			tl->name += offset;
>  
> +		/* skip any test that doesn't match the prefix filter */
>  		if (filter && strncmp(tl->name, filter, strlen(filter))) {
>  			free(tl);
>  			continue;
> @@ -902,6 +932,22 @@ static int open_parameters(const char *module_name)
>  	return open(path, O_RDONLY);
>  }
>  
> +/**
> + * igt_kselftest_init:
> + * @tst: (inout): pointer of #igt_kselftest to be initialized
> + * @module_name: (in): name of the module with IGT tests declared as module_params
> + *
> + * Initialize the given struct igt_kselftest and the inner struct kmod_module.
> + *
> + * @Note: This function initialize @tst->kmsg with `-1`, call
> + * igt_kselftest_begin() to actually open the <filename>/dev/kmsg</filename> stream.
> + * @tst->module_name should be freed by the caller with free(), @tst->kmod 
> + * refcount needs to be decremented to be released using
> + * <function>kmod_module_unref</function>.
> + *
> + * Returns: 0 on success, non-zero otherwise. It fails if name is not a valid
> + * module name or if memory allocation failed.
> + */
>  int igt_kselftest_init(struct igt_kselftest *tst,
>  		       const char *module_name)
>  {
> @@ -922,6 +968,17 @@ int igt_kselftest_init(struct igt_kselftest *tst,
>  	return 0;
>  }
>  
> +/**
> + * igt_kselftest_begin:
> + * @tst: (inout): pointer to #igt_kselftest with `kmod_module` handler to unload
> + * 	and where the file descriptor for <filename>/dev/kmsg</filename> will be
> + * 	stored.
> + *
> + * Unload the module that will be tested and open kmsg to start reading it.
> + * If module is i915, unloads some of its dependencies as well.
> + *
> + * Returns: 0 on success, non-zero otherwise.
> + */
>  int igt_kselftest_begin(struct igt_kselftest *tst)
>  {
>  	int err;
> @@ -939,6 +996,21 @@ int igt_kselftest_begin(struct igt_kselftest *tst)
>  	return 0;
>  }
>  
> +/**
> + * igt_kselftest_execute:
> + * @tst: (in): handler for module to be tested and inner kmsg file descriptor
> + * @tl: (in): contains the name of the test to be executed
> + * @options: (in)(nullable): Extra parameters for the module. NULL in case no
> + * 	parameters are to be passed, or a '\0' terminated string otherwise.
> + * @result: (in)(nullable): NULL if the result of loading the module should be
> + * 	returned, or a '\0' terminated string with the name of the module_param
> + * 	holding the test's result, if that should be returned instead.
> + *
> + * Execute the given test by loading the module and asserts its success.
> + *
> + * Returns: 0 on success, non-zero otherwise. If @result is set, returns the
> + * value from the given module_param after running the test.
> + */
>  int igt_kselftest_execute(struct igt_kselftest *tst,
>  			  struct igt_kselftest_list *tl,
>  			  const char *options,
> @@ -952,6 +1024,7 @@ int igt_kselftest_execute(struct igt_kselftest *tst,
>  
>  	lseek(tst->kmsg, 0, SEEK_END);
>  
> +	/* prepare modprobe parameters to enable a test with extra options */
>  	snprintf(buf, sizeof(buf), "%s=1 %s", tl->param, options ?: "");
>  
>  	err = modprobe(tst->kmod, buf);
> @@ -977,18 +1050,40 @@ int igt_kselftest_execute(struct igt_kselftest *tst,
>  	return err;
>  }
>  
> +/**
> + * igt_kselftest_end:
> + * @tst: (in): handler for module to be unloaded and kmsg file descriptor
> + *
> + * Unload the module and close the kmsg file descriptor.
> + */
>  void igt_kselftest_end(struct igt_kselftest *tst)
>  {
>  	kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE);
>  	close(tst->kmsg);
>  }
>  
> +/**
> + * igt_kselftest_fini:
> + * @tst: (in): container of items to be freed
> + *
> + * Free memory from @tst->module_name and remove reference for @tst->kmod
> + */
>  void igt_kselftest_fini(struct igt_kselftest *tst)
>  {
>  	free(tst->module_name);
>  	kmod_module_unref(tst->kmod);
>  }
>  
> +/*
> + * unfilter:
> + * @filter: (in)(nullable): prefix to be removed
> + * @name: (in): string to be trimmed
> + *
> + * Remove prefix @filter from @name, removing an additional non-alpha char,
> + * if there's one.
> + *
> + * Returns: a pointer to the resulting string
> + */

Another doc block without /**


-- 
Petri Latvala


>  static const char *unfilter(const char *filter, const char *name)
>  {
>  	if (!filter)
> @@ -1001,6 +1096,18 @@ static const char *unfilter(const char *filter, const char *name)
>  	return name;
>  }
>  
> +/**
> + * igt_kselftests:
> + * @module_name: (in): name of the module to find and run tests for
> + * @options: (in)(nullable): Extra parameters for the module. NULL in case no
> + * 	parameters are to be passed, or a '\0' terminated string otherwise.
> + * @result: (in)(nullable): NULL if the result of loading the module should be
> + * 	returned, or a '\0' terminated string with the name of the module_param
> + * 	holding the test's result, if that should be returned instead.
> + * @filter: (in)(nullable): run only tests with a prefix matching this filter
> + *
> + * Find and execute kselftests defined as module_params of the given module.
> + */
>  void igt_kselftests(const char *module_name,
>  		    const char *options,
>  		    const char *result,
> diff --git a/lib/igt_kmod.h b/lib/igt_kmod.h
> index f98dd29f..4f81641b 100644
> --- a/lib/igt_kmod.h
> +++ b/lib/igt_kmod.h
> @@ -50,12 +50,30 @@ void igt_kselftests(const char *module_name,
>  		    const char *result_option,
>  		    const char *filter);
>  
> +/**
> + * igt_kselftest:
> + * @kmod: reference for <structname>kmod_module</structname> used to load and
> + * 	unload the module
> + * @module_name: name of the module containing the kselftests for IGT
> + * @kmsg: holds a file descriptor for <filename>/dev/kmsg</filename>
> + *
> + * Handle a kernel module with kselftests and their output
> + */
>  struct igt_kselftest {
>  	struct kmod_module *kmod;
>  	char *module_name;
>  	int kmsg;
>  };
>  
> +/**
> + * igt_kselftest_list:
> + * @link: doubly linked list attributes
> + * @number: defines the relative position of each element in the ordered list
> + * @name: pointer to the test's name, a suffix of <structfield>param</structfield>
> + * @param: name of the module_param that enables/disables the test
> + *
> + * Node of an ordered list of test names
> + */
>  struct igt_kselftest_list {
>  	struct igt_list_head link;
>  	unsigned int number;
> -- 
> 2.37.0
> 

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

* [igt-dev] ✓ Fi.CI.IGT: success for add kselftest runner documentation
  2022-08-03  5:26 [igt-dev] [PATCH i-g-t 0/4] add kselftest runner documentation Tales Aparecida
                   ` (4 preceding siblings ...)
  2022-08-03  6:00 ` [igt-dev] ✓ Fi.CI.BAT: success for add kselftest runner documentation Patchwork
@ 2022-08-03 13:29 ` Patchwork
  5 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2022-08-03 13:29 UTC (permalink / raw)
  To: Tales Aparecida; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 53818 bytes --]

== Series Details ==

Series: add kselftest runner documentation
URL   : https://patchwork.freedesktop.org/series/106921/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_11964_full -> IGTPW_7600_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (13 -> 10)
------------------------------

  Missing    (3): pig-skl-6260u pig-kbl-iris pig-glk-j5005 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@feature_discovery@display-4x:
    - shard-tglb:         NOTRUN -> [SKIP][1] ([i915#1839])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb3/igt@feature_discovery@display-4x.html
    - shard-iclb:         NOTRUN -> [SKIP][2] ([i915#1839])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb2/igt@feature_discovery@display-4x.html

  * igt@feature_discovery@psr2:
    - shard-iclb:         NOTRUN -> [SKIP][3] ([i915#658])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb3/igt@feature_discovery@psr2.html

  * igt@gem_ctx_isolation@preservation-s3@vecs0:
    - shard-tglb:         [PASS][4] -> [INCOMPLETE][5] ([i915#6021])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-tglb8/igt@gem_ctx_isolation@preservation-s3@vecs0.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb2/igt@gem_ctx_isolation@preservation-s3@vecs0.html

  * igt@gem_ctx_persistence@hostile:
    - shard-snb:          NOTRUN -> [SKIP][6] ([fdo#109271] / [i915#1099]) +1 similar issue
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-snb7/igt@gem_ctx_persistence@hostile.html

  * igt@gem_exec_balancer@parallel-keep-in-fence:
    - shard-iclb:         NOTRUN -> [SKIP][7] ([i915#4525])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb5/igt@gem_exec_balancer@parallel-keep-in-fence.html

  * igt@gem_exec_balancer@parallel-keep-submit-fence:
    - shard-iclb:         [PASS][8] -> [SKIP][9] ([i915#4525])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-iclb4/igt@gem_exec_balancer@parallel-keep-submit-fence.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb3/igt@gem_exec_balancer@parallel-keep-submit-fence.html

  * igt@gem_exec_balancer@parallel-ordering:
    - shard-kbl:          NOTRUN -> [FAIL][10] ([i915#6117])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl1/igt@gem_exec_balancer@parallel-ordering.html

  * igt@gem_exec_capture@capture-invisible@smem0:
    - shard-iclb:         NOTRUN -> [SKIP][11] ([i915#6334])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb7/igt@gem_exec_capture@capture-invisible@smem0.html
    - shard-tglb:         NOTRUN -> [SKIP][12] ([i915#6334])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb7/igt@gem_exec_capture@capture-invisible@smem0.html

  * igt@gem_exec_fair@basic-none-rrul@rcs0:
    - shard-glk:          NOTRUN -> [FAIL][13] ([i915#2842])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-glk3/igt@gem_exec_fair@basic-none-rrul@rcs0.html
    - shard-iclb:         NOTRUN -> [FAIL][14] ([i915#2842]) +1 similar issue
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb5/igt@gem_exec_fair@basic-none-rrul@rcs0.html
    - shard-tglb:         NOTRUN -> [FAIL][15] ([i915#2842])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb5/igt@gem_exec_fair@basic-none-rrul@rcs0.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-tglb:         [PASS][16] -> [FAIL][17] ([i915#2842])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-tglb7/igt@gem_exec_fair@basic-none-share@rcs0.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb8/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-none@vecs0:
    - shard-glk:          [PASS][18] -> [FAIL][19] ([i915#2842]) +1 similar issue
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-glk2/igt@gem_exec_fair@basic-none@vecs0.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-glk8/igt@gem_exec_fair@basic-none@vecs0.html

  * igt@gem_exec_fair@basic-pace@vcs0:
    - shard-iclb:         [PASS][20] -> [FAIL][21] ([i915#2842])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-iclb5/igt@gem_exec_fair@basic-pace@vcs0.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb4/igt@gem_exec_fair@basic-pace@vcs0.html

  * igt@gem_huc_copy@huc-copy:
    - shard-kbl:          NOTRUN -> [SKIP][22] ([fdo#109271] / [i915#2190])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl4/igt@gem_huc_copy@huc-copy.html
    - shard-apl:          NOTRUN -> [SKIP][23] ([fdo#109271] / [i915#2190])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-apl7/igt@gem_huc_copy@huc-copy.html
    - shard-glk:          NOTRUN -> [SKIP][24] ([fdo#109271] / [i915#2190])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-glk9/igt@gem_huc_copy@huc-copy.html
    - shard-iclb:         NOTRUN -> [SKIP][25] ([i915#2190])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb7/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@heavy-verify-multi:
    - shard-apl:          NOTRUN -> [SKIP][26] ([fdo#109271] / [i915#4613]) +2 similar issues
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-apl7/igt@gem_lmem_swapping@heavy-verify-multi.html
    - shard-tglb:         NOTRUN -> [SKIP][27] ([i915#4613])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb8/igt@gem_lmem_swapping@heavy-verify-multi.html
    - shard-glk:          NOTRUN -> [SKIP][28] ([fdo#109271] / [i915#4613])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-glk2/igt@gem_lmem_swapping@heavy-verify-multi.html
    - shard-iclb:         NOTRUN -> [SKIP][29] ([i915#4613])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb5/igt@gem_lmem_swapping@heavy-verify-multi.html

  * igt@gem_lmem_swapping@verify-ccs:
    - shard-kbl:          NOTRUN -> [SKIP][30] ([fdo#109271] / [i915#4613]) +3 similar issues
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl7/igt@gem_lmem_swapping@verify-ccs.html

  * igt@gem_pread@exhaustion:
    - shard-kbl:          NOTRUN -> [WARN][31] ([i915#2658])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl7/igt@gem_pread@exhaustion.html

  * igt@gem_pxp@verify-pxp-key-change-after-suspend-resume:
    - shard-iclb:         NOTRUN -> [SKIP][32] ([i915#4270])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb2/igt@gem_pxp@verify-pxp-key-change-after-suspend-resume.html

  * igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs:
    - shard-glk:          NOTRUN -> [SKIP][33] ([fdo#109271]) +77 similar issues
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-glk3/igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs.html
    - shard-iclb:         NOTRUN -> [SKIP][34] ([i915#768]) +2 similar issues
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb1/igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs.html

  * igt@gem_userptr_blits@vma-merge:
    - shard-kbl:          NOTRUN -> [FAIL][35] ([i915#3318])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl1/igt@gem_userptr_blits@vma-merge.html

  * igt@gem_workarounds@suspend-resume-context:
    - shard-apl:          [PASS][36] -> [DMESG-WARN][37] ([i915#180]) +2 similar issues
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-apl1/igt@gem_workarounds@suspend-resume-context.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-apl4/igt@gem_workarounds@suspend-resume-context.html

  * igt@gen9_exec_parse@cmd-crossing-page:
    - shard-tglb:         NOTRUN -> [SKIP][38] ([i915#2527] / [i915#2856])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb5/igt@gen9_exec_parse@cmd-crossing-page.html
    - shard-iclb:         NOTRUN -> [SKIP][39] ([i915#2856])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb1/igt@gen9_exec_parse@cmd-crossing-page.html

  * igt@i915_pm_rc6_residency@rc6-idle@rcs0:
    - shard-tglb:         NOTRUN -> [WARN][40] ([i915#2681]) +3 similar issues
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb2/igt@i915_pm_rc6_residency@rc6-idle@rcs0.html
    - shard-iclb:         NOTRUN -> [WARN][41] ([i915#2684]) +3 similar issues
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb4/igt@i915_pm_rc6_residency@rc6-idle@rcs0.html

  * igt@i915_pm_rpm@modeset-non-lpsp-stress:
    - shard-iclb:         NOTRUN -> [SKIP][42] ([fdo#110892])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb5/igt@i915_pm_rpm@modeset-non-lpsp-stress.html
    - shard-tglb:         NOTRUN -> [SKIP][43] ([fdo#111644] / [i915#1397] / [i915#2411])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb8/igt@i915_pm_rpm@modeset-non-lpsp-stress.html

  * igt@kms_big_fb@4-tiled-16bpp-rotate-90:
    - shard-iclb:         NOTRUN -> [SKIP][44] ([i915#5286]) +2 similar issues
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb6/igt@kms_big_fb@4-tiled-16bpp-rotate-90.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-270:
    - shard-tglb:         NOTRUN -> [SKIP][45] ([i915#5286]) +2 similar issues
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb1/igt@kms_big_fb@4-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@linear-32bpp-rotate-270:
    - shard-tglb:         NOTRUN -> [SKIP][46] ([fdo#111614]) +1 similar issue
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb8/igt@kms_big_fb@linear-32bpp-rotate-270.html
    - shard-iclb:         NOTRUN -> [SKIP][47] ([fdo#110725] / [fdo#111614]) +1 similar issue
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb7/igt@kms_big_fb@linear-32bpp-rotate-270.html

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-apl:          NOTRUN -> [SKIP][48] ([fdo#109271]) +166 similar issues
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-apl4/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@y-tiled-32bpp-rotate-0:
    - shard-glk:          [PASS][49] -> [DMESG-FAIL][50] ([i915#118] / [i915#1888])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-glk5/igt@kms_big_fb@y-tiled-32bpp-rotate-0.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-glk9/igt@kms_big_fb@y-tiled-32bpp-rotate-0.html

  * igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
    - shard-tglb:         NOTRUN -> [SKIP][51] ([fdo#111615]) +1 similar issue
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb7/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-iclb:         NOTRUN -> [SKIP][52] ([fdo#110723])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb7/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_ccs@pipe-b-crc-primary-rotation-180-4_tiled_dg2_rc_ccs_cc:
    - shard-tglb:         NOTRUN -> [SKIP][53] ([i915#6095])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb2/igt@kms_ccs@pipe-b-crc-primary-rotation-180-4_tiled_dg2_rc_ccs_cc.html

  * igt@kms_ccs@pipe-b-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs_cc:
    - shard-tglb:         NOTRUN -> [SKIP][54] ([i915#3689] / [i915#6095]) +2 similar issues
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb8/igt@kms_ccs@pipe-b-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs_cc.html

  * igt@kms_ccs@pipe-b-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs:
    - shard-apl:          NOTRUN -> [SKIP][55] ([fdo#109271] / [i915#3886]) +4 similar issues
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-apl6/igt@kms_ccs@pipe-b-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-b-missing-ccs-buffer-yf_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][56] ([fdo#111615] / [i915#3689])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb3/igt@kms_ccs@pipe-b-missing-ccs-buffer-yf_tiled_ccs.html

  * igt@kms_ccs@pipe-c-bad-rotation-90-y_tiled_gen12_rc_ccs_cc:
    - shard-kbl:          NOTRUN -> [SKIP][57] ([fdo#109271] / [i915#3886]) +11 similar issues
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl4/igt@kms_ccs@pipe-c-bad-rotation-90-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-c-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc:
    - shard-glk:          NOTRUN -> [SKIP][58] ([fdo#109271] / [i915#3886])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-glk1/igt@kms_ccs@pipe-c-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc.html
    - shard-iclb:         NOTRUN -> [SKIP][59] ([fdo#109278] / [i915#3886])
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb2/igt@kms_ccs@pipe-c-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-d-ccs-on-another-bo-y_tiled_gen12_mc_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][60] ([i915#3689]) +1 similar issue
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb8/igt@kms_ccs@pipe-d-ccs-on-another-bo-y_tiled_gen12_mc_ccs.html

  * igt@kms_cdclk@mode-transition:
    - shard-iclb:         NOTRUN -> [SKIP][61] ([i915#3742])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb5/igt@kms_cdclk@mode-transition.html
    - shard-tglb:         NOTRUN -> [SKIP][62] ([i915#3742])
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb8/igt@kms_cdclk@mode-transition.html

  * igt@kms_chamelium@vga-hpd-fast:
    - shard-kbl:          NOTRUN -> [SKIP][63] ([fdo#109271] / [fdo#111827]) +20 similar issues
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl1/igt@kms_chamelium@vga-hpd-fast.html

  * igt@kms_color_chamelium@pipe-b-degamma:
    - shard-apl:          NOTRUN -> [SKIP][64] ([fdo#109271] / [fdo#111827]) +5 similar issues
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-apl3/igt@kms_color_chamelium@pipe-b-degamma.html
    - shard-iclb:         NOTRUN -> [SKIP][65] ([fdo#109284] / [fdo#111827]) +1 similar issue
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb8/igt@kms_color_chamelium@pipe-b-degamma.html

  * igt@kms_color_chamelium@pipe-d-ctm-0-25:
    - shard-tglb:         NOTRUN -> [SKIP][66] ([fdo#109284] / [fdo#111827]) +2 similar issues
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb5/igt@kms_color_chamelium@pipe-d-ctm-0-25.html
    - shard-glk:          NOTRUN -> [SKIP][67] ([fdo#109271] / [fdo#111827]) +2 similar issues
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-glk3/igt@kms_color_chamelium@pipe-d-ctm-0-25.html
    - shard-iclb:         NOTRUN -> [SKIP][68] ([fdo#109278] / [fdo#109284] / [fdo#111827])
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb5/igt@kms_color_chamelium@pipe-d-ctm-0-25.html
    - shard-snb:          NOTRUN -> [SKIP][69] ([fdo#109271] / [fdo#111827]) +2 similar issues
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-snb4/igt@kms_color_chamelium@pipe-d-ctm-0-25.html

  * igt@kms_content_protection@legacy:
    - shard-apl:          NOTRUN -> [TIMEOUT][70] ([i915#1319]) +1 similar issue
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-apl6/igt@kms_content_protection@legacy.html
    - shard-tglb:         NOTRUN -> [SKIP][71] ([i915#1063])
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb8/igt@kms_content_protection@legacy.html
    - shard-iclb:         NOTRUN -> [SKIP][72] ([fdo#109300] / [fdo#111066])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb5/igt@kms_content_protection@legacy.html
    - shard-kbl:          NOTRUN -> [TIMEOUT][73] ([i915#1319]) +1 similar issue
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl4/igt@kms_content_protection@legacy.html

  * igt@kms_cursor_legacy@2x-cursor-vs-flip-atomic:
    - shard-tglb:         NOTRUN -> [SKIP][74] ([fdo#109274] / [fdo#111825])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb1/igt@kms_cursor_legacy@2x-cursor-vs-flip-atomic.html

  * igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy:
    - shard-iclb:         NOTRUN -> [SKIP][75] ([fdo#109274]) +1 similar issue
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb2/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html

  * igt@kms_draw_crc@draw-method-xrgb2101010-mmap-wc-4tiled:
    - shard-tglb:         NOTRUN -> [SKIP][76] ([i915#5287])
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb8/igt@kms_draw_crc@draw-method-xrgb2101010-mmap-wc-4tiled.html
    - shard-iclb:         NOTRUN -> [SKIP][77] ([i915#5287])
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb5/igt@kms_draw_crc@draw-method-xrgb2101010-mmap-wc-4tiled.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-kbl:          NOTRUN -> [FAIL][78] ([i915#4767])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl1/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-default-mode:
    - shard-iclb:         NOTRUN -> [SKIP][79] ([i915#2672]) +5 similar issues
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb2/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling@pipe-a-default-mode:
    - shard-iclb:         NOTRUN -> [SKIP][80] ([i915#2672] / [i915#3555]) +2 similar issues
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb3/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling@pipe-a-default-mode.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt:
    - shard-tglb:         NOTRUN -> [SKIP][81] ([i915#6497]) +4 similar issues
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-gtt:
    - shard-kbl:          NOTRUN -> [SKIP][82] ([fdo#109271]) +247 similar issues
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl7/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-pgflip-blt:
    - shard-iclb:         NOTRUN -> [SKIP][83] ([fdo#109280]) +10 similar issues
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb8/igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-pwrite:
    - shard-tglb:         NOTRUN -> [SKIP][84] ([fdo#109280] / [fdo#111825]) +9 similar issues
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb1/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-pwrite.html

  * igt@kms_hdr@static-swap:
    - shard-tglb:         NOTRUN -> [SKIP][85] ([i915#3555])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb2/igt@kms_hdr@static-swap.html
    - shard-iclb:         NOTRUN -> [SKIP][86] ([i915#3555])
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb8/igt@kms_hdr@static-swap.html

  * igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c:
    - shard-tglb:         NOTRUN -> [SKIP][87] ([fdo#109289]) +2 similar issues
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb3/igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c.html
    - shard-iclb:         NOTRUN -> [SKIP][88] ([fdo#109289]) +2 similar issues
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb2/igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c.html

  * igt@kms_plane_alpha_blend@pipe-b-alpha-opaque-fb:
    - shard-apl:          NOTRUN -> [FAIL][89] ([fdo#108145] / [i915#265]) +2 similar issues
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-apl8/igt@kms_plane_alpha_blend@pipe-b-alpha-opaque-fb.html

  * igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb:
    - shard-kbl:          NOTRUN -> [FAIL][90] ([fdo#108145] / [i915#265])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl4/igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb.html

  * igt@kms_plane_alpha_blend@pipe-c-alpha-transparent-fb:
    - shard-apl:          NOTRUN -> [FAIL][91] ([i915#265])
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-apl2/igt@kms_plane_alpha_blend@pipe-c-alpha-transparent-fb.html
    - shard-glk:          NOTRUN -> [FAIL][92] ([i915#265])
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-glk6/igt@kms_plane_alpha_blend@pipe-c-alpha-transparent-fb.html
    - shard-kbl:          NOTRUN -> [FAIL][93] ([i915#265])
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl4/igt@kms_plane_alpha_blend@pipe-c-alpha-transparent-fb.html

  * igt@kms_plane_multiple@atomic-pipe-b-tiling-4:
    - shard-tglb:         NOTRUN -> [SKIP][94] ([i915#5288])
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb8/igt@kms_plane_multiple@atomic-pipe-b-tiling-4.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-a-edp-1:
    - shard-iclb:         NOTRUN -> [SKIP][95] ([i915#5235]) +2 similar issues
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb2/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-a-edp-1.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-c-edp-1:
    - shard-tglb:         NOTRUN -> [SKIP][96] ([i915#5235]) +3 similar issues
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb3/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-c-edp-1.html

  * igt@kms_prime@basic-crc-hybrid:
    - shard-iclb:         NOTRUN -> [SKIP][97] ([i915#6524])
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb7/igt@kms_prime@basic-crc-hybrid.html
    - shard-tglb:         NOTRUN -> [SKIP][98] ([i915#6524])
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb8/igt@kms_prime@basic-crc-hybrid.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-kbl:          NOTRUN -> [SKIP][99] ([fdo#109271] / [i915#658]) +1 similar issue
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl7/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr@psr2_cursor_mmap_gtt:
    - shard-tglb:         NOTRUN -> [FAIL][100] ([i915#132] / [i915#3467]) +1 similar issue
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb8/igt@kms_psr@psr2_cursor_mmap_gtt.html

  * igt@kms_psr@psr2_primary_mmap_cpu:
    - shard-iclb:         [PASS][101] -> [SKIP][102] ([fdo#109441])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-iclb2/igt@kms_psr@psr2_primary_mmap_cpu.html
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb1/igt@kms_psr@psr2_primary_mmap_cpu.html

  * igt@kms_psr@psr2_sprite_mmap_gtt:
    - shard-iclb:         NOTRUN -> [SKIP][103] ([fdo#109441]) +1 similar issue
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb3/igt@kms_psr@psr2_sprite_mmap_gtt.html

  * igt@kms_tv_load_detect@load-detect:
    - shard-snb:          NOTRUN -> [SKIP][104] ([fdo#109271]) +130 similar issues
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-snb6/igt@kms_tv_load_detect@load-detect.html
    - shard-tglb:         NOTRUN -> [SKIP][105] ([fdo#109309])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb7/igt@kms_tv_load_detect@load-detect.html
    - shard-iclb:         NOTRUN -> [SKIP][106] ([fdo#109309])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb7/igt@kms_tv_load_detect@load-detect.html

  * igt@kms_vblank@pipe-d-wait-idle-hang:
    - shard-iclb:         NOTRUN -> [SKIP][107] ([fdo#109278]) +18 similar issues
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb3/igt@kms_vblank@pipe-d-wait-idle-hang.html

  * igt@kms_writeback@writeback-fb-id:
    - shard-kbl:          NOTRUN -> [SKIP][108] ([fdo#109271] / [i915#2437])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl4/igt@kms_writeback@writeback-fb-id.html

  * igt@nouveau_crc@ctx-flip-threshold-reset-after-capture:
    - shard-tglb:         NOTRUN -> [SKIP][109] ([i915#2530]) +1 similar issue
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb5/igt@nouveau_crc@ctx-flip-threshold-reset-after-capture.html
    - shard-iclb:         NOTRUN -> [SKIP][110] ([i915#2530])
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb5/igt@nouveau_crc@ctx-flip-threshold-reset-after-capture.html

  * igt@nouveau_crc@pipe-d-ctx-flip-skip-current-frame:
    - shard-iclb:         NOTRUN -> [SKIP][111] ([fdo#109278] / [i915#2530])
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb5/igt@nouveau_crc@pipe-d-ctx-flip-skip-current-frame.html

  * igt@prime_nv_api@nv_self_import_to_different_fd:
    - shard-iclb:         NOTRUN -> [SKIP][112] ([fdo#109291]) +1 similar issue
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb4/igt@prime_nv_api@nv_self_import_to_different_fd.html

  * igt@prime_nv_pcopy@test2:
    - shard-tglb:         NOTRUN -> [SKIP][113] ([fdo#109291]) +1 similar issue
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb8/igt@prime_nv_pcopy@test2.html

  * igt@prime_vgem@coherency-gtt:
    - shard-iclb:         NOTRUN -> [SKIP][114] ([fdo#109292] / [fdo#109295])
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb2/igt@prime_vgem@coherency-gtt.html
    - shard-tglb:         NOTRUN -> [SKIP][115] ([fdo#109295] / [fdo#111656])
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb2/igt@prime_vgem@coherency-gtt.html

  * igt@sysfs_clients@split-10:
    - shard-kbl:          NOTRUN -> [SKIP][116] ([fdo#109271] / [i915#2994]) +2 similar issues
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl7/igt@sysfs_clients@split-10.html

  
#### Possible fixes ####

  * igt@fbdev@info:
    - {shard-rkl}:        [SKIP][117] ([i915#2582]) -> [PASS][118]
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-rkl-5/igt@fbdev@info.html
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-rkl-6/igt@fbdev@info.html

  * igt@gem_ctx_isolation@preservation-s3@vcs0:
    - shard-kbl:          [DMESG-WARN][119] ([i915#180]) -> [PASS][120] +10 similar issues
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-kbl4/igt@gem_ctx_isolation@preservation-s3@vcs0.html
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl7/igt@gem_ctx_isolation@preservation-s3@vcs0.html

  * igt@gem_ctx_persistence@engines-hang@bcs0:
    - {shard-rkl}:        [SKIP][121] ([i915#6252]) -> [PASS][122]
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-rkl-5/igt@gem_ctx_persistence@engines-hang@bcs0.html
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-rkl-1/igt@gem_ctx_persistence@engines-hang@bcs0.html

  * igt@gem_ctx_persistence@engines-hostile@rcs0:
    - {shard-dg1}:        [FAIL][123] ([i915#4883]) -> [PASS][124]
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-dg1-15/igt@gem_ctx_persistence@engines-hostile@rcs0.html
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-dg1-15/igt@gem_ctx_persistence@engines-hostile@rcs0.html

  * igt@gem_exec_balancer@parallel-out-fence:
    - shard-iclb:         [SKIP][125] ([i915#4525]) -> [PASS][126] +1 similar issue
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-iclb3/igt@gem_exec_balancer@parallel-out-fence.html
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb4/igt@gem_exec_balancer@parallel-out-fence.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - {shard-tglu}:       [FAIL][127] ([i915#2842]) -> [PASS][128]
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-tglu-1/igt@gem_exec_fair@basic-none-share@rcs0.html
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglu-2/igt@gem_exec_fair@basic-none-share@rcs0.html
    - shard-glk:          [FAIL][129] ([i915#2842]) -> [PASS][130] +1 similar issue
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-glk1/igt@gem_exec_fair@basic-none-share@rcs0.html
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-glk6/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-none@vcs1:
    - shard-kbl:          [FAIL][131] ([i915#2842]) -> [PASS][132] +2 similar issues
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-kbl7/igt@gem_exec_fair@basic-none@vcs1.html
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl1/igt@gem_exec_fair@basic-none@vcs1.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-tglb:         [FAIL][133] ([i915#2842]) -> [PASS][134]
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-tglb2/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb8/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fair@basic-pace@vecs0:
    - shard-iclb:         [FAIL][135] ([i915#2842]) -> [PASS][136] +1 similar issue
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-iclb5/igt@gem_exec_fair@basic-pace@vecs0.html
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb4/igt@gem_exec_fair@basic-pace@vecs0.html

  * igt@gem_exec_fair@basic-throttle@rcs0:
    - shard-iclb:         [FAIL][137] ([i915#2849]) -> [PASS][138]
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-iclb8/igt@gem_exec_fair@basic-throttle@rcs0.html
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb2/igt@gem_exec_fair@basic-throttle@rcs0.html

  * igt@gem_exec_reloc@basic-gtt-read:
    - {shard-rkl}:        [SKIP][139] ([i915#3281]) -> [PASS][140] +5 similar issues
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-rkl-2/igt@gem_exec_reloc@basic-gtt-read.html
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-rkl-5/igt@gem_exec_reloc@basic-gtt-read.html

  * igt@gem_readwrite@beyond-eob:
    - {shard-rkl}:        [SKIP][141] ([i915#3282]) -> [PASS][142] +4 similar issues
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-rkl-1/igt@gem_readwrite@beyond-eob.html
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-rkl-5/igt@gem_readwrite@beyond-eob.html

  * igt@gem_workarounds@suspend-resume-context:
    - {shard-tglu}:       [DMESG-WARN][143] ([i915#5122]) -> [PASS][144]
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-tglu-6/igt@gem_workarounds@suspend-resume-context.html
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglu-4/igt@gem_workarounds@suspend-resume-context.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-apl:          [DMESG-WARN][145] ([i915#5566] / [i915#716]) -> [PASS][146]
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-apl8/igt@gen9_exec_parse@allowed-single.html
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-apl1/igt@gen9_exec_parse@allowed-single.html

  * igt@gen9_exec_parse@bb-start-out:
    - {shard-rkl}:        [SKIP][147] ([i915#2527]) -> [PASS][148] +1 similar issue
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-rkl-6/igt@gen9_exec_parse@bb-start-out.html
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-rkl-5/igt@gen9_exec_parse@bb-start-out.html

  * igt@i915_pm_dc@dc6-psr:
    - shard-iclb:         [FAIL][149] ([i915#454]) -> [PASS][150]
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-iclb6/igt@i915_pm_dc@dc6-psr.html
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb5/igt@i915_pm_dc@dc6-psr.html

  * igt@i915_pm_dc@dc9-dpms:
    - shard-apl:          [SKIP][151] ([fdo#109271]) -> [PASS][152]
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-apl6/igt@i915_pm_dc@dc9-dpms.html
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-apl8/igt@i915_pm_dc@dc9-dpms.html

  * igt@i915_pm_rpm@dpms-mode-unset-lpsp:
    - {shard-dg1}:        [SKIP][153] ([i915#1397]) -> [PASS][154]
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-dg1-12/igt@i915_pm_rpm@dpms-mode-unset-lpsp.html
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-dg1-18/igt@i915_pm_rpm@dpms-mode-unset-lpsp.html

  * igt@i915_pm_rps@basic-api:
    - {shard-dg1}:        [FAIL][155] ([i915#4032]) -> [PASS][156]
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-dg1-15/igt@i915_pm_rps@basic-api.html
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-dg1-18/igt@i915_pm_rps@basic-api.html

  * igt@i915_pm_rps@waitboost:
    - {shard-rkl}:        [FAIL][157] ([i915#4016]) -> [PASS][158]
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-rkl-1/igt@i915_pm_rps@waitboost.html
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-rkl-5/igt@i915_pm_rps@waitboost.html

  * igt@kms_big_fb@x-tiled-64bpp-rotate-180:
    - {shard-rkl}:        [SKIP][159] ([i915#1845] / [i915#4098]) -> [PASS][160] +9 similar issues
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-rkl-1/igt@kms_big_fb@x-tiled-64bpp-rotate-180.html
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-rkl-6/igt@kms_big_fb@x-tiled-64bpp-rotate-180.html

  * igt@kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-ytiled:
    - {shard-rkl}:        [SKIP][161] ([fdo#111314] / [i915#4098] / [i915#4369]) -> [PASS][162] +2 similar issues
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-rkl-1/igt@kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-ytiled.html
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-rkl-6/igt@kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-ytiled.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-cpu:
    - {shard-rkl}:        [SKIP][163] ([i915#1849] / [i915#4098]) -> [PASS][164] +3 similar issues
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-cpu.html
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-cpu.html

  * igt@kms_plane@pixel-format@pipe-a-planes:
    - {shard-rkl}:        [SKIP][165] ([i915#3558]) -> [PASS][166] +1 similar issue
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-rkl-1/igt@kms_plane@pixel-format@pipe-a-planes.html
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-rkl-6/igt@kms_plane@pixel-format@pipe-a-planes.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b-planes:
    - shard-apl:          [DMESG-WARN][167] ([i915#180]) -> [PASS][168]
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-apl1/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b-planes.html
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-apl1/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b-planes.html

  * igt@kms_plane_alpha_blend@pipe-b-alpha-opaque-fb:
    - {shard-rkl}:        [SKIP][169] ([i915#1849] / [i915#3546] / [i915#4070] / [i915#4098]) -> [PASS][170]
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-rkl-1/igt@kms_plane_alpha_blend@pipe-b-alpha-opaque-fb.html
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-rkl-6/igt@kms_plane_alpha_blend@pipe-b-alpha-opaque-fb.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-a-edp-1:
    - shard-iclb:         [SKIP][171] ([i915#5235]) -> [PASS][172] +2 similar issues
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-iclb2/igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-a-edp-1.html
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb5/igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-a-edp-1.html

  * igt@kms_properties@plane-properties-atomic:
    - {shard-rkl}:        [SKIP][173] ([i915#1849]) -> [PASS][174]
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-rkl-1/igt@kms_properties@plane-properties-atomic.html
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-rkl-6/igt@kms_properties@plane-properties-atomic.html

  * igt@kms_psr@psr2_basic:
    - shard-iclb:         [SKIP][175] ([fdo#109441]) -> [PASS][176] +1 similar issue
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-iclb7/igt@kms_psr@psr2_basic.html
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb2/igt@kms_psr@psr2_basic.html

  * igt@perf_pmu@all-busy-idle-check-all:
    - {shard-dg1}:        [FAIL][177] ([i915#5234]) -> [PASS][178]
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-dg1-16/igt@perf_pmu@all-busy-idle-check-all.html
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-dg1-14/igt@perf_pmu@all-busy-idle-check-all.html

  * igt@prime_vgem@basic-fence-read:
    - {shard-rkl}:        [SKIP][179] ([fdo#109295] / [i915#3291] / [i915#3708]) -> [PASS][180]
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-rkl-6/igt@prime_vgem@basic-fence-read.html
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-rkl-5/igt@prime_vgem@basic-fence-read.html

  
#### Warnings ####

  * igt@gem_exec_fair@basic-pace@vecs0:
    - shard-kbl:          [FAIL][181] ([i915#2842]) -> [SKIP][182] ([fdo#109271])
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-kbl7/igt@gem_exec_fair@basic-pace@vecs0.html
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl1/igt@gem_exec_fair@basic-pace@vecs0.html

  * igt@kms_content_protection@mei_interface:
    - shard-tglb:         [SKIP][183] ([fdo#109300]) -> [SKIP][184] ([i915#1063])
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-tglb3/igt@kms_content_protection@mei_interface.html
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-tglb1/igt@kms_content_protection@mei_interface.html
    - shard-iclb:         [SKIP][185] ([fdo#109300]) -> [SKIP][186] ([fdo#109300] / [fdo#111066])
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-iclb3/igt@kms_content_protection@mei_interface.html
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb4/igt@kms_content_protection@mei_interface.html

  * igt@kms_psr2_sf@cursor-plane-move-continuous-sf:
    - shard-iclb:         [SKIP][187] ([i915#658]) -> [SKIP][188] ([i915#2920]) +1 similar issue
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-iclb4/igt@kms_psr2_sf@cursor-plane-move-continuous-sf.html
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb2/igt@kms_psr2_sf@cursor-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area:
    - shard-iclb:         [SKIP][189] ([i915#2920]) -> [SKIP][190] ([fdo#111068] / [i915#658])
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-iclb2/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-iclb8/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html

  * igt@runner@aborted:
    - shard-kbl:          ([FAIL][191], [FAIL][192], [FAIL][193], [FAIL][194], [FAIL][195], [FAIL][196], [FAIL][197], [FAIL][198], [FAIL][199], [FAIL][200]) ([i915#180] / [i915#3002] / [i915#4312] / [i915#5257]) -> ([FAIL][201], [FAIL][202]) ([i915#3002] / [i915#4312] / [i915#5257])
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-kbl4/igt@runner@aborted.html
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-kbl4/igt@runner@aborted.html
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-kbl4/igt@runner@aborted.html
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-kbl4/igt@runner@aborted.html
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-kbl4/igt@runner@aborted.html
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-kbl4/igt@runner@aborted.html
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-kbl4/igt@runner@aborted.html
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-kbl7/igt@runner@aborted.html
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-kbl4/igt@runner@aborted.html
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11964/shard-kbl4/igt@runner@aborted.html
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl1/igt@runner@aborted.html
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/shard-kbl7/igt@runner@aborted.html

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

  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
  [fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291
  [fdo#109292]: https://bugs.freedesktop.org/show_bug.cgi?id=109292
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109300]: https://bugs.freedesktop.org/show_bug.cgi?id=109300
  [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308
  [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309
  [fdo#109313]: https://bugs.freedesktop.org/show_bug.cgi?id=109313
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110542]: https://bugs.freedesktop.org/show_bug.cgi?id=110542
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#110725]: https://bugs.freedesktop.org/show_bug.cgi?id=110725
  [fdo#110892]: https://bugs.freedesktop.org/show_bug.cgi?id=110892
  [fdo#111066]: https://bugs.freedesktop.org/show_bug.cgi?id=111066
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111314]: https://bugs.freedesktop.org/show_bug.cgi?id=111314
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111644]: https://bugs.freedesktop.org/show_bug.cgi?id=111644
  [fdo#111656]: https://bugs.freedesktop.org/show_bug.cgi?id=111656
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
  [i915#1063]: https://gitlab.freedesktop.org/drm/intel/issues/1063
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099
  [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
  [i915#1257]: https://gitlab.freedesktop.org/drm/intel/issues/1257
  [i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319
  [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#1755]: https://gitlab.freedesktop.org/drm/intel/issues/1755
  [i915#1769]: https://gitlab.freedesktop.org/drm/intel/issues/1769
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#1888]: https://gitlab.freedesktop.org/drm/intel/issues/1888
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2410]: https://gitlab.freedesktop.org/drm/intel/issues/2410
  [i915#2411]: https://gitlab.freedesktop.org/drm/intel/issues/2411
  [i915#2433]: https://gitlab.freedesktop.org/drm/intel/issues/2433
  [i915#2434]: https://gitlab.freedesktop.org/drm/intel/issues/2434
  [i915#2435]: https://gitlab.freedesktop.org/drm/intel/issues/2435
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2530]: https://gitlab.freedesktop.org/drm/intel/issues/2530
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
  [i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
  [i915#2684]: https://gitlab.freedesktop.org/drm/intel/issues/2684
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2846]: https://gitlab.freedesktop.org/drm/intel/issues/2846
  [i915#2849]: https://gitlab.freedesktop.org/drm/intel/issues/2849
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920
  [i915#2994]: https://gitlab.freedesktop.org/drm/intel/issues/2994
  [i915#3002]: https://gitlab.freedesktop.org/drm/intel/issues/3002
  [i915#3012]: https://gitlab.freedesktop.org/drm/intel/issues/3012
  [i915#3063]: https://gitlab.freedesktop.org/drm/intel/issues/3063
  [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318
  [i915#3323]: https://gitlab.freedesktop.org/drm/intel/issues/3323
  [i915#3361]: https://gitlab.freedesktop.org/drm/intel/issues/3361
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3467]: https://gitlab.freedesktop.org/drm/intel/issues/3467
  [i915#3469]: https://gitlab.freedesktop.org/drm/intel/issues/3469
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3558]: https://gitlab.freedesktop.org/drm/intel/issues/3558
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742
  [i915#3828]: https://gitlab.freedesktop.org/drm/intel/issues/3828
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
  [i915#4016]: https://gitlab.freedesktop.org/drm/intel/issues/4016
  [i915#4032]: https://gitlab.freedesktop.org/drm/intel/issues/4032
  [i915#404]: https://gitlab.freedesktop.org/drm/intel/issues/404
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#433]: https://gitlab.freedesktop.org/drm/intel/issues/433
  [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
  [i915#4369]: https://gitlab.freedesktop.org/drm/intel/issues/4369
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
  [i915#4565]: https://gitlab.freedesktop.org/drm/intel/issues/4565
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4767]: https://gitlab.freedesktop.org/drm/intel/issues/4767
  [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
  [i915#4833]: https://gitlab.freedesktop.org/drm/intel/issues/4833
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#4853]: https://gitlab.freedesktop.org/drm/intel/issues/4853
  [i915#4855]: https://gitlab.freedesktop.org/drm/intel/issues/4855
  [i915#4859]: https://gitlab.freedesktop.org/drm/intel/issues/4859
  [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
  [i915#4874]: https://gitlab.freedesktop.org/drm/intel/issues/4874
  [i915#4879]: https://gitlab.freedesktop.org/drm/intel/issues/4879
  [i915#4883]: https://gitlab.freedesktop.org/drm/intel/issues/4883
  [i915#4893]: https://gitlab.freedesktop.org/drm/intel/issues/4893
  [i915#4958]: https://gitlab.freedesktop.org/drm/intel/issues/4958
  [i915#5122]: https://gitlab.freedesktop.org/drm/intel/issues/5122
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5234]: https://gitlab.freedesktop.org/drm/intel/issues/5234
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5257]: https://gitlab.freedesktop.org/drm/intel/issues/5257
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5287]: https://gitlab.freedesktop.org/drm/intel/issues/5287
  [i915#5288]: https://gitlab.freedesktop.org/drm/intel/issues/5288
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
  [i915#5327]: https://gitlab.freedesktop.org/drm/intel/issues/5327
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5563]: https://gitlab.freedesktop.org/drm/intel/issues/5563
  [i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#6021]: https://gitlab.freedesktop.org/drm/intel/issues/6021
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6117]: https://gitlab.freedesktop.org/drm/intel/issues/6117
  [i915#6247]: https://gitlab.freedesktop.org/drm/intel/issues/6247
  [i915#6248]: https://gitlab.freedesktop.org/drm/intel/issues/6248
  [i915#6251]: https://gitlab.freedesktop.org/drm/intel/issues/6251
  [i915#6252]: https://gitlab.freedesktop.org/drm/intel/issues/6252
  [i915#6258]: https://gitlab.freedesktop.org/drm/intel/issues/6258
  [i915#6268]: https://gitlab.freedesktop.org/drm/intel/issues/6268
  [i915#6334]: https://gitlab.freedesktop.org/drm/intel/issues/6334
  [i915#6335]: https://gitlab.freedesktop.org/drm/intel/issues/6335
  [i915#6344]: https://gitlab.freedesktop.org/drm/intel/issues/6344
  [i915#6474]: https://gitlab.freedesktop.org/drm/intel/issues/6474
  [i915#6497]: https://gitlab.freedesktop.org/drm/intel/issues/6497
  [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716
  [i915#768]: https://gitlab.freedesktop.org/drm/intel/issues/768


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6610 -> IGTPW_7600
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_11964: 856e330c2d6aa43e94bfca2d1b09369575f8f498 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_7600: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/index.html
  IGT_6610: c93f93dfe91a77e6a884f826d61f927106988b5f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7600/index.html

[-- Attachment #2: Type: text/html, Size: 60999 bytes --]

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

* Re: [igt-dev] [PATCH i-g-t 4/4] lib/igt_kmod: add igt_kselftests documentation
  2022-08-03  8:47   ` Petri Latvala
@ 2022-08-03 15:49     ` Tales
  0 siblings, 0 replies; 13+ messages in thread
From: Tales @ 2022-08-03 15:49 UTC (permalink / raw)
  To: Petri Latvala
  Cc: siqueirajordao, Magali Lemes, Chris Wilson, igt-dev,
	Isabella Basso, André Almeida, Trevor Woerner

Em qua., 3 de ago. de 2022 às 05:48, Petri Latvala
<petri.latvala@intel.com> escreveu:
>
> On Wed, Aug 03, 2022 at 02:26:54AM -0300, Tales Aparecida wrote:
> > Add documentation for igt_kselftests functions and structs. Also adds
> > comments to non trivial lines.
> >
> > Signed-off-by: Tales Aparecida <tales.aparecida@gmail.com>
> > ---
> >  lib/igt_kmod.c | 107 +++++++++++++++++++++++++++++++++++++++++++++++++
> >  lib/igt_kmod.h |  18 +++++++++
> >  2 files changed, 125 insertions(+)
> >
> > diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
> > index 63636243..852112cc 100644
> > --- a/lib/igt_kmod.c
> > +++ b/lib/igt_kmod.c
> > @@ -792,6 +792,12 @@ igt_amdgpu_driver_unload(void)
> >       return IGT_EXIT_SUCCESS;
> >  }
> >
> > +/*
> > + * kmsg_dump:
> > + * @fd: file descriptor for `/dev/kmsg` opened for reading
> > + *
> > + * Dump kmsg output into stderr.
> > + */
>
> The documentation comment needs to begin with /** (two *)

I forgot to mention in the cover letter, but I've followed the
recommendation of using normal comments (without the 2nd '*' in the
first line) for static symbols from GtkDoc.It's at the end of this
page: https://developer-old.gnome.org/gtk-doc-manual/stable/documenting_syntax.html.en
WIth that said, I rather add the second *, as well, to enable syntax
highlighting.

>
> >  static void kmsg_dump(int fd)
> >  {
> >       char record[4096 + 1];
> > @@ -832,6 +838,13 @@ static void kmsg_dump(int fd)
> >       }
> >  }
> >
> > +/*
> > + * tests_add:
> > + * @tl: (in): test to be inserted
> > + * @list: (inout): ordered list of tests sorted by test->number
> > + *
> > + * Insert test at the correct position in the ordered list
> > + */
>
> Same for this.
>
> >  static void tests_add(struct igt_kselftest_list *tl, struct igt_list_head *list)
> >  {
> >       struct igt_kselftest_list *pos;
> > @@ -843,6 +856,14 @@ static void tests_add(struct igt_kselftest_list *tl, struct igt_list_head *list)
> >       igt_list_add_tail(&tl->link, &pos->link);
> >  }
> >
> > +/**
> > + * igt_kselftest_get_tests:
> > + * @kmod: (in): kernel module from which to parse module_params' names into IGT tests
> > + * @filter: (in)(nullable): get only tests with a prefix matching this filter
> > + * @tests: (inout): resulting ordered list of tests
> > + *
> > + * Get IGT tests' names from module_params' names, given a module.
> > + */
> >  void igt_kselftest_get_tests(struct kmod_module *kmod,
> >                            const char *filter,
> >                            struct igt_list_head *tests)
> > @@ -856,25 +877,33 @@ void igt_kselftest_get_tests(struct kmod_module *kmod,
> >       if (!kmod_module_get_info(kmod, &pre))
> >               return;
> >
> > +     /* iter through module infos trying to find tests, which should be
> > +      * named following the pattern: "igt__{test_number}__{test_name}:bool",
> > +      * e.g.: "igt__18__perf_engine_cs:bool" */
>
> Multiline comments should have /* and */ on their own lines.

You're absolutely right!

>
> >       kmod_list_foreach(d, pre) {
> >               const char *key, *val;
> >               char *colon;
> >               int offset;
> >
> > +             /*  skip any info that is not a module param */
>
>                   ^^  extra space there

Nice catch!

>
> >               key = kmod_module_info_get_key(d);
> >               if (strcmp(key, "parmtype"))
> >                       continue;
> >
> > +             /* skip any module param that don't have the IGT test prefix */
> >               val = kmod_module_info_get_value(d);
> >               if (!val || strncmp(val, param_prefix, prefix_len))
> >                       continue;
> >
> > +             /* alloc list-node that will store the module_param name */
> >               offset = strlen(val) + 1;
> >               tl = malloc(sizeof(*tl) + offset);
> >               if (!tl)
> >                       continue;
> >
> >               memcpy(tl->param, val, offset);
> > +
> > +             /* find and replace colon with \0 to discard module_param type */
> >               colon = strchr(tl->param, ':');
> >               *colon = '\0';
> >
> > @@ -884,6 +913,7 @@ void igt_kselftest_get_tests(struct kmod_module *kmod,
> >                          &tl->number, &offset) == 1)
> >                       tl->name += offset;
> >
> > +             /* skip any test that doesn't match the prefix filter */
> >               if (filter && strncmp(tl->name, filter, strlen(filter))) {
> >                       free(tl);
> >                       continue;
> > @@ -902,6 +932,22 @@ static int open_parameters(const char *module_name)
> >       return open(path, O_RDONLY);
> >  }
> >
> > +/**
> > + * igt_kselftest_init:
> > + * @tst: (inout): pointer of #igt_kselftest to be initialized
> > + * @module_name: (in): name of the module with IGT tests declared as module_params
> > + *
> > + * Initialize the given struct igt_kselftest and the inner struct kmod_module.
> > + *
> > + * @Note: This function initialize @tst->kmsg with `-1`, call
> > + * igt_kselftest_begin() to actually open the <filename>/dev/kmsg</filename> stream.
> > + * @tst->module_name should be freed by the caller with free(), @tst->kmod
> > + * refcount needs to be decremented to be released using
> > + * <function>kmod_module_unref</function>.
> > + *
> > + * Returns: 0 on success, non-zero otherwise. It fails if name is not a valid
> > + * module name or if memory allocation failed.
> > + */
> >  int igt_kselftest_init(struct igt_kselftest *tst,
> >                      const char *module_name)
> >  {
> > @@ -922,6 +968,17 @@ int igt_kselftest_init(struct igt_kselftest *tst,
> >       return 0;
> >  }
> >
> > +/**
> > + * igt_kselftest_begin:
> > + * @tst: (inout): pointer to #igt_kselftest with `kmod_module` handler to unload
> > + *   and where the file descriptor for <filename>/dev/kmsg</filename> will be
> > + *   stored.
> > + *
> > + * Unload the module that will be tested and open kmsg to start reading it.
> > + * If module is i915, unloads some of its dependencies as well.
> > + *
> > + * Returns: 0 on success, non-zero otherwise.
> > + */
> >  int igt_kselftest_begin(struct igt_kselftest *tst)
> >  {
> >       int err;
> > @@ -939,6 +996,21 @@ int igt_kselftest_begin(struct igt_kselftest *tst)
> >       return 0;
> >  }
> >
> > +/**
> > + * igt_kselftest_execute:
> > + * @tst: (in): handler for module to be tested and inner kmsg file descriptor
> > + * @tl: (in): contains the name of the test to be executed
> > + * @options: (in)(nullable): Extra parameters for the module. NULL in case no
> > + *   parameters are to be passed, or a '\0' terminated string otherwise.
> > + * @result: (in)(nullable): NULL if the result of loading the module should be
> > + *   returned, or a '\0' terminated string with the name of the module_param
> > + *   holding the test's result, if that should be returned instead.
> > + *
> > + * Execute the given test by loading the module and asserts its success.
> > + *
> > + * Returns: 0 on success, non-zero otherwise. If @result is set, returns the
> > + * value from the given module_param after running the test.
> > + */
> >  int igt_kselftest_execute(struct igt_kselftest *tst,
> >                         struct igt_kselftest_list *tl,
> >                         const char *options,
> > @@ -952,6 +1024,7 @@ int igt_kselftest_execute(struct igt_kselftest *tst,
> >
> >       lseek(tst->kmsg, 0, SEEK_END);
> >
> > +     /* prepare modprobe parameters to enable a test with extra options */
> >       snprintf(buf, sizeof(buf), "%s=1 %s", tl->param, options ?: "");
> >
> >       err = modprobe(tst->kmod, buf);
> > @@ -977,18 +1050,40 @@ int igt_kselftest_execute(struct igt_kselftest *tst,
> >       return err;
> >  }
> >
> > +/**
> > + * igt_kselftest_end:
> > + * @tst: (in): handler for module to be unloaded and kmsg file descriptor
> > + *
> > + * Unload the module and close the kmsg file descriptor.
> > + */
> >  void igt_kselftest_end(struct igt_kselftest *tst)
> >  {
> >       kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE);
> >       close(tst->kmsg);
> >  }
> >
> > +/**
> > + * igt_kselftest_fini:
> > + * @tst: (in): container of items to be freed
> > + *
> > + * Free memory from @tst->module_name and remove reference for @tst->kmod
> > + */
> >  void igt_kselftest_fini(struct igt_kselftest *tst)
> >  {
> >       free(tst->module_name);
> >       kmod_module_unref(tst->kmod);
> >  }
> >
> > +/*
> > + * unfilter:
> > + * @filter: (in)(nullable): prefix to be removed
> > + * @name: (in): string to be trimmed
> > + *
> > + * Remove prefix @filter from @name, removing an additional non-alpha char,
> > + * if there's one.
> > + *
> > + * Returns: a pointer to the resulting string
> > + */
>
> Another doc block without /**
>
>
> --
> Petri Latvala
>
>
> >  static const char *unfilter(const char *filter, const char *name)
> >  {
> >       if (!filter)
> > @@ -1001,6 +1096,18 @@ static const char *unfilter(const char *filter, const char *name)
> >       return name;
> >  }
> >
> > +/**
> > + * igt_kselftests:
> > + * @module_name: (in): name of the module to find and run tests for
> > + * @options: (in)(nullable): Extra parameters for the module. NULL in case no
> > + *   parameters are to be passed, or a '\0' terminated string otherwise.
> > + * @result: (in)(nullable): NULL if the result of loading the module should be
> > + *   returned, or a '\0' terminated string with the name of the module_param
> > + *   holding the test's result, if that should be returned instead.
> > + * @filter: (in)(nullable): run only tests with a prefix matching this filter
> > + *
> > + * Find and execute kselftests defined as module_params of the given module.
> > + */
> >  void igt_kselftests(const char *module_name,
> >                   const char *options,
> >                   const char *result,
> > diff --git a/lib/igt_kmod.h b/lib/igt_kmod.h
> > index f98dd29f..4f81641b 100644
> > --- a/lib/igt_kmod.h
> > +++ b/lib/igt_kmod.h
> > @@ -50,12 +50,30 @@ void igt_kselftests(const char *module_name,
> >                   const char *result_option,
> >                   const char *filter);
> >
> > +/**
> > + * igt_kselftest:
> > + * @kmod: reference for <structname>kmod_module</structname> used to load and
> > + *   unload the module
> > + * @module_name: name of the module containing the kselftests for IGT
> > + * @kmsg: holds a file descriptor for <filename>/dev/kmsg</filename>
> > + *
> > + * Handle a kernel module with kselftests and their output
> > + */
> >  struct igt_kselftest {
> >       struct kmod_module *kmod;
> >       char *module_name;
> >       int kmsg;
> >  };
> >
> > +/**
> > + * igt_kselftest_list:
> > + * @link: doubly linked list attributes
> > + * @number: defines the relative position of each element in the ordered list
> > + * @name: pointer to the test's name, a suffix of <structfield>param</structfield>
> > + * @param: name of the module_param that enables/disables the test
> > + *
> > + * Node of an ordered list of test names
> > + */
> >  struct igt_kselftest_list {
> >       struct igt_list_head link;
> >       unsigned int number;
> > --
> > 2.37.0
> >

Thanks for the review, Petri

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

* Re: [igt-dev] [PATCH i-g-t 3/4] lib/kselftests: return non-zero on open(kmsg) failure
  2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 3/4] lib/kselftests: return non-zero on open(kmsg) failure Tales Aparecida
@ 2022-08-03 17:11   ` Kamil Konieczny
  2022-08-03 20:04     ` Tales
  2022-08-04 18:09   ` Maíra Canal
  1 sibling, 1 reply; 13+ messages in thread
From: Kamil Konieczny @ 2022-08-03 17:11 UTC (permalink / raw)
  To: igt-dev; +Cc: Tales Aparecida

Hi Tales,

On 2022-08-03 at 02:26:53 -0300, Tales Aparecida wrote:
> Previously igt_kselftest_begin() always returned 0.
> Return non-zero if failed to open kmsg, instead.
> 
> Signed-off-by: Tales Aparecida <tales.aparecida@gmail.com>
> ---
>  lib/igt_kmod.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
> index bde0461a..63636243 100644
> --- a/lib/igt_kmod.c
> +++ b/lib/igt_kmod.c
> @@ -933,6 +933,8 @@ int igt_kselftest_begin(struct igt_kselftest *tst)
>  	igt_require(err == 0 || err == -ENOENT);
>  
>  	tst->kmsg = open("/dev/kmsg", O_RDONLY | O_NONBLOCK);
> +	if (tst->kmsg < 0)
> +		return 1;


This is used everywhere in dumping error messages, for example
in igt_kselftest_execute() there is:
	if (err)
		kmsg_dump(tst->kmsg);

so leaving this as is may be dangerous. So either fdup on stderr
or use
	igt_reguire(test->kmsg >= 0);

Regards,
Kamil

>  
>  	return 0;
>  }
> -- 
> 2.37.0
> 

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

* Re: [igt-dev] [PATCH i-g-t 1/4] lib/igt_kmod: fix trivial typos
  2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 1/4] lib/igt_kmod: fix trivial typos Tales Aparecida
@ 2022-08-03 17:13   ` Kamil Konieczny
  0 siblings, 0 replies; 13+ messages in thread
From: Kamil Konieczny @ 2022-08-03 17:13 UTC (permalink / raw)
  To: igt-dev; +Cc: Tales Aparecida

On 2022-08-03 at 02:26:51 -0300, Tales Aparecida wrote:
> existance -> existence
> kmcdline -> kcmdline
> 
> Signed-off-by: Tales Aparecida <tales.aparecida@gmail.com>
> ---
>  lib/igt_kmod.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
> index dfdcfcc5..bde0461a 100644
> --- a/lib/igt_kmod.c
> +++ b/lib/igt_kmod.c
> @@ -114,7 +114,7 @@ out:
>   *
>   * Returns: True in case the module has been found or false otherwise.
>   *
> - * Function to check the existance of module @mod_name in list of loaded kernel
> + * Function to check the existence of module @mod_name in list of loaded kernel
>   * modules.
>   *
>   */
> @@ -813,7 +813,7 @@ static void kmsg_dump(int fd)
>  				continue;
>  
>  			if (errno == EPIPE) {
> -				igt_warn("kmsg truncated: too many messages. You may want to increase log_buf_len in kmcdline\n");
> +				igt_warn("kmsg truncated: too many messages. You may want to increase log_buf_len in kcmdline\n");
>  				continue;

Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>

>  			}
>  
> -- 
> 2.37.0
> 

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

* Re: [igt-dev] [PATCH i-g-t 3/4] lib/kselftests: return non-zero on open(kmsg) failure
  2022-08-03 17:11   ` Kamil Konieczny
@ 2022-08-03 20:04     ` Tales
  0 siblings, 0 replies; 13+ messages in thread
From: Tales @ 2022-08-03 20:04 UTC (permalink / raw)
  To: Kamil Konieczny, igt-dev, Tales Aparecida

Hello, Kamil,

Em qua., 3 de ago. de 2022 às 14:11, Kamil Konieczny
<kamil.konieczny@linux.intel.com> escreveu:
>
> Hi Tales,
>
> On 2022-08-03 at 02:26:53 -0300, Tales Aparecida wrote:
> > Previously igt_kselftest_begin() always returned 0.
> > Return non-zero if failed to open kmsg, instead.
> >
> > Signed-off-by: Tales Aparecida <tales.aparecida@gmail.com>
> > ---
> >  lib/igt_kmod.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
> > index bde0461a..63636243 100644
> > --- a/lib/igt_kmod.c
> > +++ b/lib/igt_kmod.c
> > @@ -933,6 +933,8 @@ int igt_kselftest_begin(struct igt_kselftest *tst)
> >       igt_require(err == 0 || err == -ENOENT);
> >
> >       tst->kmsg = open("/dev/kmsg", O_RDONLY | O_NONBLOCK);
> > +     if (tst->kmsg < 0)
> > +             return 1;
>
>
> This is used everywhere in dumping error messages, for example
> in igt_kselftest_execute() there is:
>         if (err)
>                 kmsg_dump(tst->kmsg);
>
> so leaving this as is may be dangerous. So either fdup on stderr
> or use
>         igt_reguire(test->kmsg >= 0);
>
> Regards,
> Kamil
>
> >
> >       return 0;
> >  }
> > --
> > 2.37.0
> >

That's a great point! I guess I prefer the latter, using igt_require,
for it is simpler and I believe errors when opening kmsg are too
seldom to justify anything too complex.
With that said, I think that the function won't need to return, after all.

Thanks for the review!

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

* Re: [igt-dev] [PATCH i-g-t 3/4] lib/kselftests: return non-zero on open(kmsg) failure
  2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 3/4] lib/kselftests: return non-zero on open(kmsg) failure Tales Aparecida
  2022-08-03 17:11   ` Kamil Konieczny
@ 2022-08-04 18:09   ` Maíra Canal
  1 sibling, 0 replies; 13+ messages in thread
From: Maíra Canal @ 2022-08-04 18:09 UTC (permalink / raw)
  To: Tales Aparecida, igt-dev, Chris Wilson
  Cc: siqueirajordao, magalilemes00, Isabella Basso, andrealmeid,
	Trevor Woerner

Hi Tales,

On 8/3/22 02:26, Tales Aparecida wrote:
> Previously igt_kselftest_begin() always returned 0.
> Return non-zero if failed to open kmsg, instead.
> 
> Signed-off-by: Tales Aparecida <tales.aparecida@gmail.com>
> ---
>  lib/igt_kmod.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
> index bde0461a..63636243 100644
> --- a/lib/igt_kmod.c
> +++ b/lib/igt_kmod.c
> @@ -933,6 +933,8 @@ int igt_kselftest_begin(struct igt_kselftest *tst)
>  	igt_require(err == 0 || err == -ENOENT);
>  
>  	tst->kmsg = open("/dev/kmsg", O_RDONLY | O_NONBLOCK);
> +	if (tst->kmsg < 0)
> +		return 1;

Wouldn't be better to return the open() error? As open() returns an
errno, it would make it easier to identify what went wrong while opening
kmsg.

Best Regards,
- Maíra Canal

>  
>  	return 0;
>  }

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

end of thread, other threads:[~2022-08-04 18:09 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-03  5:26 [igt-dev] [PATCH i-g-t 0/4] add kselftest runner documentation Tales Aparecida
2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 1/4] lib/igt_kmod: fix trivial typos Tales Aparecida
2022-08-03 17:13   ` Kamil Konieczny
2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 2/4] CONTRIBUTING: Add reference for GTKDoc Tales Aparecida
2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 3/4] lib/kselftests: return non-zero on open(kmsg) failure Tales Aparecida
2022-08-03 17:11   ` Kamil Konieczny
2022-08-03 20:04     ` Tales
2022-08-04 18:09   ` Maíra Canal
2022-08-03  5:26 ` [igt-dev] [PATCH i-g-t 4/4] lib/igt_kmod: add igt_kselftests documentation Tales Aparecida
2022-08-03  8:47   ` Petri Latvala
2022-08-03 15:49     ` Tales
2022-08-03  6:00 ` [igt-dev] ✓ Fi.CI.BAT: success for add kselftest runner documentation Patchwork
2022-08-03 13:29 ` [igt-dev] ✓ Fi.CI.IGT: " 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.