Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t 0/3] igt_kmod and sysfs fixes
@ 2024-02-01  0:50 Lucas De Marchi
  2024-02-01  0:50 ` [PATCH i-g-t 1/3] lib/igt_kmod: stop using KMOD_REMOVE_FORCE Lucas De Marchi
                   ` (6 more replies)
  0 siblings, 7 replies; 22+ messages in thread
From: Lucas De Marchi @ 2024-02-01  0:50 UTC (permalink / raw)
  To: igt-dev; +Cc: Lucas De Marchi

Related to my review of
https://lore.kernel.org/igt-dev/20240131181156.80571-8-janusz.krzysztofik@linux.intel.com/

Lucas De Marchi (3):
  lib/igt_kmod: stop using KMOD_REMOVE_FORCE
  lib/igt_sysfs: make sure to write empty strings
  lib/igt_sysfs: Fix dir fd documentation

 lib/igt_kmod.c                 | 42 ++++++++++++++++------------------
 lib/igt_kmod.h                 |  2 +-
 lib/igt_sysfs.c                | 20 +++++++++++-----
 tests/intel/i915_module_load.c |  4 ++--
 tests/kms_content_protection.c |  2 +-
 tests/vgem_basic.c             |  2 +-
 6 files changed, 39 insertions(+), 33 deletions(-)

-- 
2.43.0


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

* [PATCH i-g-t 1/3] lib/igt_kmod: stop using KMOD_REMOVE_FORCE
  2024-02-01  0:50 [PATCH i-g-t 0/3] igt_kmod and sysfs fixes Lucas De Marchi
@ 2024-02-01  0:50 ` Lucas De Marchi
  2024-02-01 13:05   ` Kamil Konieczny
  2024-02-01  0:50 ` [PATCH i-g-t 2/3] lib/igt_sysfs: make sure to write empty strings Lucas De Marchi
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 22+ messages in thread
From: Lucas De Marchi @ 2024-02-01  0:50 UTC (permalink / raw)
  To: igt-dev; +Cc: Lucas De Marchi

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 lib/igt_kmod.c                 | 42 ++++++++++++++++------------------
 lib/igt_kmod.h                 |  2 +-
 tests/intel/i915_module_load.c |  4 ++--
 tests/kms_content_protection.c |  2 +-
 tests/vgem_basic.c             |  2 +-
 5 files changed, 25 insertions(+), 27 deletions(-)

diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
index 5709138c0..2fed6ed54 100644
--- a/lib/igt_kmod.c
+++ b/lib/igt_kmod.c
@@ -258,7 +258,7 @@ out:
 	return err < 0 ? err : 0;
 }
 
-static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
+static int igt_kmod_unload_r(struct kmod_module *kmod)
 {
 #define MAX_TRIES	20
 #define SLEEP_DURATION	500000
@@ -272,7 +272,7 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
 	holders = kmod_module_get_holders(kmod);
 	kmod_list_foreach(pos, holders) {
 		struct kmod_module *it = kmod_module_get_module(pos);
-		err = igt_kmod_unload_r(it, flags);
+		err = igt_kmod_unload_r(it);
 		kmod_module_unref(it);
 		if (err < 0)
 			break;
@@ -292,7 +292,7 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
 	}
 
 	for (tries = 0; tries < MAX_TRIES; tries++) {
-		err = kmod_module_remove_module(kmod, flags);
+		err = kmod_module_remove_module(kmod, 0);
 
 		/* Only loop in the following cases */
 		if (err != -EBUSY && err != -EAGAIN)
@@ -326,8 +326,6 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
 /**
  * igt_kmod_unload:
  * @mod_name: Module name.
- * @flags: flags are passed directly to libkmod and can be:
- * KMOD_REMOVE_FORCE or KMOD_REMOVE_NOWAIT.
  *
  * Returns: 0 in case of success or -errno otherwise.
  *
@@ -335,7 +333,7 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
  *
  */
 int
-igt_kmod_unload(const char *mod_name, unsigned int flags)
+igt_kmod_unload(const char *mod_name)
 {
 	struct kmod_ctx *ctx = kmod_ctx();
 	struct kmod_module *kmod;
@@ -348,7 +346,7 @@ igt_kmod_unload(const char *mod_name, unsigned int flags)
 		goto out;
 	}
 
-	err = igt_kmod_unload_r(kmod, flags);
+	err = igt_kmod_unload_r(kmod);
 	if (err < 0) {
 		igt_debug("Could not remove module %s (%s)\n", mod_name,
 			  strerror(-err));
@@ -525,7 +523,7 @@ static int igt_always_unload_audio_driver(char **who)
 			if (ret)
 				igt_warn("Failed to notify pipewire_pulse\n");
 			kick_snd_hda_intel();
-			ret = igt_kmod_unload(*m, 0);
+			ret = igt_kmod_unload(*m);
 			pipewire_pulse_stop_reserve();
 			if (ret) {
 				igt_warn("Could not unload audio driver %s\n", *m);
@@ -583,7 +581,7 @@ int __igt_intel_driver_unload(char **who, const char *driver)
 		if (!igt_kmod_is_loaded(*m))
 			continue;
 
-		ret = igt_kmod_unload(*m, 0);
+		ret = igt_kmod_unload(*m);
 		if (ret) {
 			if (who)
 				*who = strdup_realloc(*who, *m);
@@ -593,7 +591,7 @@ int __igt_intel_driver_unload(char **who, const char *driver)
 	}
 
 	if (igt_kmod_is_loaded(driver)) {
-		ret = igt_kmod_unload(driver, 0);
+		ret = igt_kmod_unload(driver);
 		if (ret) {
 			if (who)
 				*who = strdup_realloc(*who, driver);
@@ -629,10 +627,10 @@ igt_intel_driver_unload(const char *driver)
 	free(who);
 
 	if (igt_kmod_is_loaded("intel-gtt"))
-		igt_kmod_unload("intel-gtt", 0);
+		igt_kmod_unload("intel-gtt");
 
-	igt_kmod_unload("drm_kms_helper", 0);
-	igt_kmod_unload("drm", 0);
+	igt_kmod_unload("drm_kms_helper");
+	igt_kmod_unload("drm");
 
 	if (igt_kmod_is_loaded("driver")) {
 		igt_warn("%s.ko still loaded!\n", driver);
@@ -682,7 +680,7 @@ igt_amdgpu_driver_unload(void)
 	bind_fbcon(false);
 
 	if (igt_kmod_is_loaded("amdgpu")) {
-		if (igt_kmod_unload("amdgpu", 0)) {
+		if (igt_kmod_unload("amdgpu")) {
 			igt_warn("Could not unload amdgpu\n");
 			igt_kmod_list_loaded();
 			igt_lsof("/dev/dri");
@@ -690,8 +688,8 @@ igt_amdgpu_driver_unload(void)
 		}
 	}
 
-	igt_kmod_unload("drm_kms_helper", 0);
-	igt_kmod_unload("drm", 0);
+	igt_kmod_unload("drm_kms_helper");
+	igt_kmod_unload("drm");
 
 	if (igt_kmod_is_loaded("amdgpu")) {
 		igt_warn("amdgpu.ko still loaded!\n");
@@ -1158,8 +1156,8 @@ static void kunit_get_tests(struct igt_list_head *tests,
 		free(case_name);
 	}
 
-	igt_skip_on(kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE));
-	igt_skip_on(igt_kmod_unload("kunit", KMOD_REMOVE_FORCE));
+	igt_skip_on(kmod_module_remove_module(tst->kmod, 0));
+	igt_skip_on(igt_kmod_unload("kunit"));
 
 	igt_skip_on_f(err,
 		      "KTAP parser failed while getting a list of test cases\n");
@@ -1362,7 +1360,7 @@ void igt_kunit(const char *module_name, const char *name, const char *opts)
 		 * unload may fail if kunit base module is not loaded,
 		 * ignore any failures, we'll fail later if still loaded.
 		 */
-		igt_ignore_warn(igt_kmod_unload("kunit", KMOD_REMOVE_FORCE));
+		igt_ignore_warn(igt_kmod_unload("kunit"));
 
 		igt_assert(igt_list_empty(&tests));
 	}
@@ -1395,7 +1393,7 @@ void igt_kunit(const char *module_name, const char *name, const char *opts)
 		kunit_results_free(&tests, &suite_name, &case_name);
 
 		igt_ktest_end(&tst);
-		igt_debug_on(igt_kmod_unload("kunit", KMOD_REMOVE_FORCE));
+		igt_debug_on(igt_kmod_unload("kunit"));
 	}
 
 	igt_ktest_fini(&tst);
@@ -1438,7 +1436,7 @@ int igt_ktest_begin(struct igt_ktest *tst)
 	if (strcmp(tst->module_name, "i915") == 0)
 		igt_i915_driver_unload();
 
-	err = kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE);
+	err = kmod_module_remove_module(tst->kmod, 0);
 	igt_require(err == 0 || err == -ENOENT);
 
 	tst->kmsg = open("/dev/kmsg", O_RDONLY | O_NONBLOCK);
@@ -1486,7 +1484,7 @@ int igt_kselftest_execute(struct igt_ktest *tst,
 
 void igt_ktest_end(struct igt_ktest *tst)
 {
-	kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE);
+	kmod_module_remove_module(tst->kmod, 0);
 	close(tst->kmsg);
 }
 
diff --git a/lib/igt_kmod.h b/lib/igt_kmod.h
index 990e5309d..efb46da12 100644
--- a/lib/igt_kmod.h
+++ b/lib/igt_kmod.h
@@ -34,7 +34,7 @@ void igt_kmod_list_loaded(void);
 bool igt_kmod_has_param(const char *mod_name, const char *param);
 
 int igt_kmod_load(const char *mod_name, const char *opts);
-int igt_kmod_unload(const char *mod_name, unsigned int flags);
+int igt_kmod_unload(const char *mod_name);
 
 int igt_audio_driver_unload(char **whom);
 
diff --git a/tests/intel/i915_module_load.c b/tests/intel/i915_module_load.c
index 9fffe93d9..b72f3252a 100644
--- a/tests/intel/i915_module_load.c
+++ b/tests/intel/i915_module_load.c
@@ -216,7 +216,7 @@ static void unload_or_die(const char *module_name)
 
 	/* should be unloaded, so expect a no-op */
 	for (loop = 0;; loop++) {
-		err = igt_kmod_unload(module_name, 0);
+		err = igt_kmod_unload(module_name);
 		if (err == -ENOENT) /* -ENOENT == unloaded already */
 			err = 0;
 		if (!err || loop >= 10)
@@ -259,7 +259,7 @@ inject_fault(const char *module_name, const char *opt, int fault)
 	igt_debug("Loaded '%s %s', result=%d\n", module_name, buf, fault);
 
 	if (strcmp(module_name, "i915")) /* XXX better ideas! */
-		igt_kmod_unload(module_name, 0);
+		igt_kmod_unload(module_name);
 	else
 		igt_i915_driver_unload();
 
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 3fc575634..6858b22e2 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -396,7 +396,7 @@ static void test_content_protection_on_output(igt_output_t *output,
 	}
 
 	if (data.cp_tests & CP_MEI_RELOAD) {
-		igt_assert_f(!igt_kmod_unload("mei_hdcp", 0),
+		igt_assert_f(!igt_kmod_unload("mei_hdcp"),
 			     "mei_hdcp unload failed");
 
 		/* Expected to fail */
diff --git a/tests/vgem_basic.c b/tests/vgem_basic.c
index 63c5c0971..cfda908bc 100644
--- a/tests/vgem_basic.c
+++ b/tests/vgem_basic.c
@@ -438,7 +438,7 @@ static void test_debugfs_read(int fd)
 
 static int module_unload(void)
 {
-	return igt_kmod_unload("vgem", 0);
+	return igt_kmod_unload("vgem");
 }
 
 static void test_unload(void)
-- 
2.43.0


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

* [PATCH i-g-t 2/3] lib/igt_sysfs: make sure to write empty strings
  2024-02-01  0:50 [PATCH i-g-t 0/3] igt_kmod and sysfs fixes Lucas De Marchi
  2024-02-01  0:50 ` [PATCH i-g-t 1/3] lib/igt_kmod: stop using KMOD_REMOVE_FORCE Lucas De Marchi
@ 2024-02-01  0:50 ` Lucas De Marchi
  2024-02-01  3:11   ` [PATCH i-g-t v2] " Lucas De Marchi
  2024-02-01 13:15   ` [PATCH i-g-t 2/3] " Janusz Krzysztofik
  2024-02-01  0:50 ` [PATCH i-g-t 3/3] lib/igt_sysfs: Fix dir fd documentation Lucas De Marchi
                   ` (4 subsequent siblings)
  6 siblings, 2 replies; 22+ messages in thread
From: Lucas De Marchi @ 2024-02-01  0:50 UTC (permalink / raw)
  To: igt-dev; +Cc: Lucas De Marchi

	echo -n "" > /sys/module/<modulename>/parameters/<param>

doesn't really work as it will just create a open() + close() expecting
the file to be truncated. The same issue happens with igt as it will
stop writing when there are 0 chars to write. Special case the empty
string so it always write a '\0' and make sure igt_sysfs_set() accounts
for the extra null char.

Shell example:
	# echo -n "/foo" > /sys/module/firmware_class/parameters/path
	# cat /sys/module/firmware_class/parameters/path
	/foo
	# echo -n "" > /sys/module/firmware_class/parameters/path
	/foo
	# # make sure to actually write a \0:
	echo -ne "\0" > /sys/module/firmware_class/parameters/path
	# cat /sys/module/firmware_class/parameters/path
	/foo

Same thing happens when testing igt_sysfs_set():
       int dirfd = open("/sys/module/firmware_class/parameters", O_RDONLY);
       igt_sysfs_set(dirfd, "path", "");

Previously it was not really setting the param.

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 lib/igt_sysfs.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
index 567b4f6d5..814220ddb 100644
--- a/lib/igt_sysfs.c
+++ b/lib/igt_sysfs.c
@@ -406,7 +406,7 @@ int igt_sysfs_read(int dir, const char *attr, void *data, int len)
  */
 bool igt_sysfs_set(int dir, const char *attr, const char *value)
 {
-	int len = strlen(value);
+	int len = strlen(value) + 1;
 	return igt_sysfs_write(dir, attr, value, len) == len;
 }
 
@@ -513,8 +513,16 @@ int igt_sysfs_vprintf(int dir, const char *attr, const char *fmt, va_list ap)
 		return -errno;
 
 	va_copy(tmp, ap);
-	ret = vsnprintf(buf, sizeof(stack), fmt, tmp);
+	ret = vsnprintf(stack, sizeof(stack), fmt, tmp);
 	va_end(tmp);
+
+	/*
+	 * make sure to always issue a write() syscall, even if writing an empty string,
+	 * otherwise values in sysfs like module parameters don't really get overwritten
+	 */
+	if (igt_debug_on(ret = 0))
+		return igt_writen(fd, "", 1);
+
 	if (igt_debug_on(ret < 0))
 		return -EINVAL;
 
-- 
2.43.0


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

* [PATCH i-g-t 3/3] lib/igt_sysfs: Fix dir fd documentation
  2024-02-01  0:50 [PATCH i-g-t 0/3] igt_kmod and sysfs fixes Lucas De Marchi
  2024-02-01  0:50 ` [PATCH i-g-t 1/3] lib/igt_kmod: stop using KMOD_REMOVE_FORCE Lucas De Marchi
  2024-02-01  0:50 ` [PATCH i-g-t 2/3] lib/igt_sysfs: make sure to write empty strings Lucas De Marchi
@ 2024-02-01  0:50 ` Lucas De Marchi
  2024-02-01 13:05   ` Kamil Konieczny
  2024-02-01  2:56 ` ✗ Fi.CI.BAT: failure for igt_kmod and sysfs fixes Patchwork
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 22+ messages in thread
From: Lucas De Marchi @ 2024-02-01  0:50 UTC (permalink / raw)
  To: igt-dev; +Cc: Lucas De Marchi

These functions can be used for any path in sysfs, not exclusively to
attributes under igt_sysfs_open(). In fact, they are already used to
access other files like module parameters.

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 lib/igt_sysfs.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
index 814220ddb..bbcb16c81 100644
--- a/lib/igt_sysfs.c
+++ b/lib/igt_sysfs.c
@@ -343,7 +343,7 @@ int igt_sysfs_get_num_gt(int device)
 
 /**
  * igt_sysfs_write:
- * @dir: directory for the device from igt_sysfs_open()
+ * @dir: sysfs directory
  * @attr: name of the sysfs node to open
  * @data: the block to write from
  * @len: the length to write
@@ -369,7 +369,7 @@ int igt_sysfs_write(int dir, const char *attr, const void *data, int len)
 
 /**
  * igt_sysfs_read:
- * @dir: directory for the device from igt_sysfs_open()
+ * @dir: sysfs directory
  * @attr: name of the sysfs node to open
  * @data: the block to read into
  * @len: the maximum length to read
@@ -395,7 +395,7 @@ int igt_sysfs_read(int dir, const char *attr, void *data, int len)
 
 /**
  * igt_sysfs_set:
- * @dir: directory for the device from igt_sysfs_open()
+ * @dir: sysfs directory
  * @attr: name of the sysfs node to open
  * @value: the string to write
  *
@@ -412,7 +412,7 @@ bool igt_sysfs_set(int dir, const char *attr, const char *value)
 
 /**
  * igt_sysfs_get:
- * @dir: directory for the device from igt_sysfs_open()
+ * @dir: sysfs directory
  * @attr: name of the sysfs node to open
  *
  * This reads the value from the sysfs file.
-- 
2.43.0


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

* ✗ Fi.CI.BAT: failure for igt_kmod and sysfs fixes
  2024-02-01  0:50 [PATCH i-g-t 0/3] igt_kmod and sysfs fixes Lucas De Marchi
                   ` (2 preceding siblings ...)
  2024-02-01  0:50 ` [PATCH i-g-t 3/3] lib/igt_sysfs: Fix dir fd documentation Lucas De Marchi
@ 2024-02-01  2:56 ` Patchwork
  2024-02-01  3:08 ` ✗ CI.xeBAT: " Patchwork
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2024-02-01  2:56 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev

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

== Series Details ==

Series: igt_kmod and sysfs fixes
URL   : https://patchwork.freedesktop.org/series/129398/
State : failure

== Summary ==

CI Bug Log - changes from IGT_7699 -> IGTPW_10617
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_10617 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_10617, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

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

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

  Additional (2): bat-arls-1 bat-arls-2 
  Missing    (2): bat-mtlp-8 fi-snb-2520m 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_10617:

### IGT changes ###

#### Possible regressions ####

  * igt@core_auth@basic-auth:
    - bat-adlp-9:         [PASS][1] -> [FAIL][2] +97 other tests fail
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-9/igt@core_auth@basic-auth.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-9/igt@core_auth@basic-auth.html

  * igt@debugfs_test@read_all_entries:
    - fi-kbl-x1275:       [PASS][3] -> [FAIL][4] +92 other tests fail
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-x1275/igt@debugfs_test@read_all_entries.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-x1275/igt@debugfs_test@read_all_entries.html

  * igt@gem_basic@bad-close:
    - bat-adlp-6:         [PASS][5] -> [FAIL][6] +97 other tests fail
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-6/igt@gem_basic@bad-close.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-6/igt@gem_basic@bad-close.html

  * igt@gem_basic@create-close:
    - fi-elk-e7500:       [PASS][7] -> [FAIL][8] +98 other tests fail
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-elk-e7500/igt@gem_basic@create-close.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-elk-e7500/igt@gem_basic@create-close.html
    - bat-dg2-8:          [PASS][9] -> [FAIL][10] +79 other tests fail
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@gem_basic@create-close.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@gem_basic@create-close.html
    - fi-bsw-nick:        [PASS][11] -> [FAIL][12] +98 other tests fail
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-bsw-nick/igt@gem_basic@create-close.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-bsw-nick/igt@gem_basic@create-close.html

  * igt@gem_busy@busy:
    - fi-elk-e7500:       NOTRUN -> [FAIL][13] +21 other tests fail
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-elk-e7500/igt@gem_busy@busy.html
    - bat-dg2-8:          NOTRUN -> [FAIL][14] +22 other tests fail
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@gem_busy@busy.html
    - fi-kbl-guc:         NOTRUN -> [FAIL][15] +9 other tests fail
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-guc/igt@gem_busy@busy.html
    - bat-adlm-1:         NOTRUN -> [FAIL][16] +9 other tests fail
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlm-1/igt@gem_busy@busy.html
    - fi-tgl-1115g4:      NOTRUN -> [FAIL][17] +9 other tests fail
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-tgl-1115g4/igt@gem_busy@busy.html

  * igt@gem_ctx_create@basic-files:
    - fi-bsw-n3050:       [PASS][18] -> [FAIL][19] +98 other tests fail
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-bsw-n3050/igt@gem_ctx_create@basic-files.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-bsw-n3050/igt@gem_ctx_create@basic-files.html
    - bat-mtlp-6:         [PASS][20] -> [FAIL][21] +61 other tests fail
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-mtlp-6/igt@gem_ctx_create@basic-files.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-mtlp-6/igt@gem_ctx_create@basic-files.html

  * igt@gem_exec_basic@basic:
    - fi-ilk-650:         NOTRUN -> [FAIL][22] +21 other tests fail
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-ilk-650/igt@gem_exec_basic@basic.html
    - fi-bsw-n3050:       NOTRUN -> [FAIL][23] +21 other tests fail
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-bsw-n3050/igt@gem_exec_basic@basic.html

  * igt@gem_exec_fence@basic-await:
    - bat-adlp-6:         NOTRUN -> [FAIL][24] +22 other tests fail
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-6/igt@gem_exec_fence@basic-await.html

  * igt@gem_exec_fence@basic-busy:
    - bat-dg2-9:          NOTRUN -> [FAIL][25] +22 other tests fail
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@gem_exec_fence@basic-busy.html

  * igt@gem_exec_fence@basic-wait:
    - fi-kbl-7567u:       NOTRUN -> [FAIL][26] +21 other tests fail
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-7567u/igt@gem_exec_fence@basic-wait.html
    - bat-adln-1:         NOTRUN -> [FAIL][27] +22 other tests fail
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adln-1/igt@gem_exec_fence@basic-wait.html

  * igt@gem_exec_fence@nb-await:
    - fi-kbl-x1275:       NOTRUN -> [FAIL][28] +9 other tests fail
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-x1275/igt@gem_exec_fence@nb-await.html
    - bat-kbl-2:          NOTRUN -> [FAIL][29] +9 other tests fail
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-kbl-2/igt@gem_exec_fence@nb-await.html

  * igt@gem_exec_parallel@engines:
    - fi-skl-guc:         NOTRUN -> [FAIL][30] +21 other tests fail
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-skl-guc/igt@gem_exec_parallel@engines.html
    - bat-dg2-11:         NOTRUN -> [FAIL][31] +21 other tests fail
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@gem_exec_parallel@engines.html

  * igt@gem_flink_basic@bad-flink:
    - bat-adln-1:         [PASS][32] -> [FAIL][33] +97 other tests fail
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adln-1/igt@gem_flink_basic@bad-flink.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adln-1/igt@gem_flink_basic@bad-flink.html
    - fi-ivb-3770:        [PASS][34] -> [FAIL][35] +100 other tests fail
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-ivb-3770/igt@gem_flink_basic@bad-flink.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-ivb-3770/igt@gem_flink_basic@bad-flink.html

  * igt@gem_linear_blits@basic:
    - bat-rplp-1:         [PASS][36] -> [FAIL][37] +97 other tests fail
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-rplp-1/igt@gem_linear_blits@basic.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-rplp-1/igt@gem_linear_blits@basic.html

  * igt@gem_render_linear_blits@basic:
    - fi-rkl-11600:       [PASS][38] -> [FAIL][39] +97 other tests fail
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-rkl-11600/igt@gem_render_linear_blits@basic.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-rkl-11600/igt@gem_render_linear_blits@basic.html

  * igt@gem_softpin@allocator-basic:
    - bat-dg2-11:         [PASS][40] -> [FAIL][41] +79 other tests fail
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@gem_softpin@allocator-basic.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@gem_softpin@allocator-basic.html

  * igt@gem_sync@basic-each:
    - bat-atsm-1:         [PASS][42] -> [FAIL][43] +40 other tests fail
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-atsm-1/igt@gem_sync@basic-each.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@gem_sync@basic-each.html

  * igt@gem_tiled_blits@basic:
    - fi-kbl-guc:         [PASS][44] -> [FAIL][45] +94 other tests fail
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-guc/igt@gem_tiled_blits@basic.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-guc/igt@gem_tiled_blits@basic.html

  * igt@gem_tiled_pread_basic:
    - bat-kbl-2:          [PASS][46] -> [FAIL][47] +93 other tests fail
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-kbl-2/igt@gem_tiled_pread_basic.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-kbl-2/igt@gem_tiled_pread_basic.html

  * igt@gem_wait@busy:
    - bat-atsm-1:         NOTRUN -> [FAIL][48] +9 other tests fail
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@gem_wait@busy.html
    - bat-dg1-7:          NOTRUN -> [FAIL][49] +21 other tests fail
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@gem_wait@busy.html
    - bat-jsl-3:          NOTRUN -> [FAIL][50] +22 other tests fail
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-jsl-3/igt@gem_wait@busy.html

  * igt@gem_wait@wait:
    - fi-rkl-11600:       NOTRUN -> [FAIL][51] +21 other tests fail
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-rkl-11600/igt@gem_wait@wait.html

  * igt@i915_getparams_basic@basic-eu-total:
    - bat-dg1-7:          [PASS][52] -> [FAIL][53] +80 other tests fail
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@i915_getparams_basic@basic-eu-total.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@i915_getparams_basic@basic-eu-total.html

  * igt@i915_module_load@reload:
    - bat-mtlp-6:         NOTRUN -> [FAIL][54] +38 other tests fail
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-mtlp-6/igt@i915_module_load@reload.html

  * igt@kms_addfb_basic@addfb25-4-tiled:
    - fi-apl-guc:         [PASS][55] -> [FAIL][56] +98 other tests fail
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-apl-guc/igt@kms_addfb_basic@addfb25-4-tiled.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-apl-guc/igt@kms_addfb_basic@addfb25-4-tiled.html

  * igt@kms_addfb_basic@addfb25-bad-modifier:
    - bat-jsl-3:          [PASS][57] -> [FAIL][58] +101 other tests fail
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-jsl-3/igt@kms_addfb_basic@addfb25-bad-modifier.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-jsl-3/igt@kms_addfb_basic@addfb25-bad-modifier.html
    - fi-glk-j4005:       [PASS][59] -> [FAIL][60] +101 other tests fail
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-glk-j4005/igt@kms_addfb_basic@addfb25-bad-modifier.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-glk-j4005/igt@kms_addfb_basic@addfb25-bad-modifier.html

  * igt@kms_addfb_basic@bad-pitch-63:
    - bat-adlm-1:         [PASS][61] -> [FAIL][62] +89 other tests fail
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlm-1/igt@kms_addfb_basic@bad-pitch-63.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlm-1/igt@kms_addfb_basic@bad-pitch-63.html

  * igt@kms_addfb_basic@bo-too-small-due-to-tiling:
    - fi-blb-e6850:       [PASS][63] -> [FAIL][64] +92 other tests fail
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-blb-e6850/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-blb-e6850/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html

  * igt@kms_addfb_basic@invalid-set-prop:
    - fi-cfl-8109u:       [PASS][65] -> [FAIL][66] +101 other tests fail
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-cfl-8109u/igt@kms_addfb_basic@invalid-set-prop.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-cfl-8109u/igt@kms_addfb_basic@invalid-set-prop.html
    - fi-kbl-7567u:       [PASS][67] -> [FAIL][68] +99 other tests fail
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-7567u/igt@kms_addfb_basic@invalid-set-prop.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-7567u/igt@kms_addfb_basic@invalid-set-prop.html

  * igt@kms_addfb_basic@invalid-set-prop-any:
    - bat-dg2-9:          [PASS][69] -> [FAIL][70] +79 other tests fail
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@kms_addfb_basic@invalid-set-prop-any.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@kms_addfb_basic@invalid-set-prop-any.html

  * igt@kms_addfb_basic@size-max:
    - fi-cfl-guc:         [PASS][71] -> [FAIL][72] +102 other tests fail
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-cfl-guc/igt@kms_addfb_basic@size-max.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-cfl-guc/igt@kms_addfb_basic@size-max.html

  * igt@kms_addfb_basic@small-bo:
    - fi-skl-6600u:       [PASS][73] -> [FAIL][74] +101 other tests fail
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-skl-6600u/igt@kms_addfb_basic@small-bo.html
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-skl-6600u/igt@kms_addfb_basic@small-bo.html

  * igt@kms_addfb_basic@too-high:
    - fi-cfl-8700k:       [PASS][75] -> [FAIL][76] +101 other tests fail
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-cfl-8700k/igt@kms_addfb_basic@too-high.html
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-cfl-8700k/igt@kms_addfb_basic@too-high.html

  * igt@kms_busy@basic:
    - fi-ivb-3770:        NOTRUN -> [FAIL][77] +21 other tests fail
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-ivb-3770/igt@kms_busy@basic.html

  * igt@kms_flip@basic-flip-vs-dpms:
    - fi-cfl-guc:         NOTRUN -> [FAIL][78] +21 other tests fail
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-cfl-guc/igt@kms_flip@basic-flip-vs-dpms.html

  * igt@kms_flip@basic-flip-vs-modeset:
    - bat-jsl-1:          NOTRUN -> [FAIL][79] +131 other tests fail
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-jsl-1/igt@kms_flip@basic-flip-vs-modeset.html

  * igt@kms_flip@basic-flip-vs-wf_vblank:
    - fi-cfl-8700k:       NOTRUN -> [FAIL][80] +21 other tests fail
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-cfl-8700k/igt@kms_flip@basic-flip-vs-wf_vblank.html
    - fi-blb-e6850:       NOTRUN -> [FAIL][81] +21 other tests fail
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-blb-e6850/igt@kms_flip@basic-flip-vs-wf_vblank.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24:
    - fi-skl-6600u:       NOTRUN -> [FAIL][82] +22 other tests fail
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-skl-6600u/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24.html

  * igt@kms_pipe_crc_basic@hang-read-crc:
    - bat-rplp-1:         NOTRUN -> [FAIL][83] +22 other tests fail
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-rplp-1/igt@kms_pipe_crc_basic@hang-read-crc.html

  * igt@kms_pipe_crc_basic@nonblocking-crc:
    - fi-apl-guc:         NOTRUN -> [FAIL][84] +21 other tests fail
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-apl-guc/igt@kms_pipe_crc_basic@nonblocking-crc.html
    - fi-pnv-d510:        NOTRUN -> [FAIL][85] +21 other tests fail
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-pnv-d510/igt@kms_pipe_crc_basic@nonblocking-crc.html
    - fi-glk-j4005:       NOTRUN -> [FAIL][86] +21 other tests fail
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-glk-j4005/igt@kms_pipe_crc_basic@nonblocking-crc.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
    - bat-adlp-9:         NOTRUN -> [FAIL][87] +21 other tests fail
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-9/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html

  * igt@kms_pipe_crc_basic@read-crc:
    - fi-cfl-8109u:       NOTRUN -> [FAIL][88] +21 other tests fail
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-cfl-8109u/igt@kms_pipe_crc_basic@read-crc.html

  * igt@kms_pipe_crc_basic@read-crc-frame-sequence:
    - fi-bsw-nick:        NOTRUN -> [FAIL][89] +21 other tests fail
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-bsw-nick/igt@kms_pipe_crc_basic@read-crc-frame-sequence.html

  * igt@prime_self_import@basic-llseek-bad:
    - fi-ilk-650:         [PASS][90] -> [FAIL][91] +100 other tests fail
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-ilk-650/igt@prime_self_import@basic-llseek-bad.html
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-ilk-650/igt@prime_self_import@basic-llseek-bad.html
    - fi-tgl-1115g4:      [PASS][92] -> [FAIL][93] +93 other tests fail
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-tgl-1115g4/igt@prime_self_import@basic-llseek-bad.html
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-tgl-1115g4/igt@prime_self_import@basic-llseek-bad.html

  * igt@prime_vgem@basic-fence-mmap:
    - fi-pnv-d510:        [PASS][94] -> [FAIL][95] +89 other tests fail
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-pnv-d510/igt@prime_vgem@basic-fence-mmap.html
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-pnv-d510/igt@prime_vgem@basic-fence-mmap.html

  * igt@prime_vgem@basic-read:
    - fi-skl-guc:         [PASS][96] -> [FAIL][97] +102 other tests fail
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-skl-guc/igt@prime_vgem@basic-read.html
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-skl-guc/igt@prime_vgem@basic-read.html

  
#### Warnings ####

  * igt@debugfs_test@basic-hwmon:
    - bat-adlp-9:         [SKIP][98] ([i915#9318]) -> [FAIL][99]
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-9/igt@debugfs_test@basic-hwmon.html
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-9/igt@debugfs_test@basic-hwmon.html
    - bat-adlp-6:         [SKIP][100] ([i915#9318]) -> [FAIL][101]
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-6/igt@debugfs_test@basic-hwmon.html
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-6/igt@debugfs_test@basic-hwmon.html
    - bat-rplp-1:         [SKIP][102] ([i915#9318]) -> [FAIL][103]
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-rplp-1/igt@debugfs_test@basic-hwmon.html
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-rplp-1/igt@debugfs_test@basic-hwmon.html
    - fi-rkl-11600:       [SKIP][104] ([i915#9318]) -> [FAIL][105]
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-rkl-11600/igt@debugfs_test@basic-hwmon.html
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-rkl-11600/igt@debugfs_test@basic-hwmon.html
    - bat-jsl-3:          [SKIP][106] ([i915#9318]) -> [FAIL][107]
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-jsl-3/igt@debugfs_test@basic-hwmon.html
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-jsl-3/igt@debugfs_test@basic-hwmon.html
    - bat-adln-1:         [SKIP][108] ([i915#9318]) -> [FAIL][109]
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adln-1/igt@debugfs_test@basic-hwmon.html
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adln-1/igt@debugfs_test@basic-hwmon.html
    - bat-adlm-1:         [SKIP][110] ([i915#3826]) -> [FAIL][111]
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlm-1/igt@debugfs_test@basic-hwmon.html
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlm-1/igt@debugfs_test@basic-hwmon.html
    - fi-tgl-1115g4:      [SKIP][112] ([i915#9318]) -> [FAIL][113]
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-tgl-1115g4/igt@debugfs_test@basic-hwmon.html
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-tgl-1115g4/igt@debugfs_test@basic-hwmon.html
    - bat-mtlp-6:         [SKIP][114] ([i915#9318]) -> [FAIL][115]
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-mtlp-6/igt@debugfs_test@basic-hwmon.html
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-mtlp-6/igt@debugfs_test@basic-hwmon.html

  * igt@gem_huc_copy@huc-copy:
    - fi-cfl-8109u:       [SKIP][116] ([fdo#109271] / [i915#2190]) -> [FAIL][117]
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-cfl-8109u/igt@gem_huc_copy@huc-copy.html
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-cfl-8109u/igt@gem_huc_copy@huc-copy.html
    - fi-kbl-7567u:       [SKIP][118] ([fdo#109271] / [i915#2190]) -> [FAIL][119]
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-7567u/igt@gem_huc_copy@huc-copy.html
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-7567u/igt@gem_huc_copy@huc-copy.html
    - fi-ivb-3770:        [SKIP][120] ([fdo#109271]) -> [FAIL][121] +8 other tests fail
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-ivb-3770/igt@gem_huc_copy@huc-copy.html
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-ivb-3770/igt@gem_huc_copy@huc-copy.html
    - fi-elk-e7500:       [SKIP][122] ([fdo#109271]) -> [FAIL][123] +10 other tests fail
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-elk-e7500/igt@gem_huc_copy@huc-copy.html
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-elk-e7500/igt@gem_huc_copy@huc-copy.html
    - fi-bsw-nick:        [SKIP][124] ([fdo#109271]) -> [FAIL][125] +10 other tests fail
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-bsw-nick/igt@gem_huc_copy@huc-copy.html
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-bsw-nick/igt@gem_huc_copy@huc-copy.html
    - fi-ilk-650:         [SKIP][126] ([fdo#109271]) -> [FAIL][127] +8 other tests fail
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-ilk-650/igt@gem_huc_copy@huc-copy.html
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-ilk-650/igt@gem_huc_copy@huc-copy.html
    - fi-tgl-1115g4:      [SKIP][128] ([i915#2190]) -> [FAIL][129]
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-tgl-1115g4/igt@gem_huc_copy@huc-copy.html
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-tgl-1115g4/igt@gem_huc_copy@huc-copy.html
    - fi-cfl-8700k:       [SKIP][130] ([fdo#109271] / [i915#2190]) -> [FAIL][131]
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-cfl-8700k/igt@gem_huc_copy@huc-copy.html
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-cfl-8700k/igt@gem_huc_copy@huc-copy.html
    - fi-rkl-11600:       [SKIP][132] ([i915#2190]) -> [FAIL][133]
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-rkl-11600/igt@gem_huc_copy@huc-copy.html
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-rkl-11600/igt@gem_huc_copy@huc-copy.html
    - fi-skl-6600u:       [SKIP][134] ([fdo#109271] / [i915#2190]) -> [FAIL][135]
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-skl-6600u/igt@gem_huc_copy@huc-copy.html
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-skl-6600u/igt@gem_huc_copy@huc-copy.html
    - bat-jsl-3:          [SKIP][136] ([i915#2190]) -> [FAIL][137]
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-jsl-3/igt@gem_huc_copy@huc-copy.html
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-jsl-3/igt@gem_huc_copy@huc-copy.html
    - fi-glk-j4005:       [SKIP][138] ([fdo#109271] / [i915#2190]) -> [FAIL][139]
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-glk-j4005/igt@gem_huc_copy@huc-copy.html
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-glk-j4005/igt@gem_huc_copy@huc-copy.html
    - fi-kbl-x1275:       [SKIP][140] ([fdo#109271] / [i915#2190]) -> [FAIL][141]
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-x1275/igt@gem_huc_copy@huc-copy.html
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-x1275/igt@gem_huc_copy@huc-copy.html

  * igt@gem_mmap@basic:
    - bat-atsm-1:         [SKIP][142] ([i915#4083]) -> [FAIL][143]
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-atsm-1/igt@gem_mmap@basic.html
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@gem_mmap@basic.html
    - bat-dg1-7:          [SKIP][144] ([i915#4083]) -> [FAIL][145]
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@gem_mmap@basic.html
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@gem_mmap@basic.html
    - bat-dg2-9:          [SKIP][146] ([i915#4083]) -> [FAIL][147]
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@gem_mmap@basic.html
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@gem_mmap@basic.html
    - bat-dg2-11:         [SKIP][148] ([i915#4083]) -> [FAIL][149]
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@gem_mmap@basic.html
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@gem_mmap@basic.html
    - bat-dg2-8:          [SKIP][150] ([i915#4083]) -> [FAIL][151]
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@gem_mmap@basic.html
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@gem_mmap@basic.html
    - bat-mtlp-6:         [SKIP][152] ([i915#4083]) -> [FAIL][153]
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-mtlp-6/igt@gem_mmap@basic.html
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-mtlp-6/igt@gem_mmap@basic.html

  * igt@gem_mmap_gtt@basic:
    - bat-dg2-9:          [SKIP][154] ([i915#4077]) -> [FAIL][155] +2 other tests fail
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@gem_mmap_gtt@basic.html
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@gem_mmap_gtt@basic.html
    - bat-dg2-8:          [SKIP][156] ([i915#4077]) -> [FAIL][157] +2 other tests fail
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@gem_mmap_gtt@basic.html
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@gem_mmap_gtt@basic.html

  * igt@gem_render_tiled_blits@basic:
    - bat-dg2-9:          [SKIP][158] ([i915#4079]) -> [FAIL][159] +1 other test fail
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@gem_render_tiled_blits@basic.html
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@gem_render_tiled_blits@basic.html

  * igt@gem_tiled_blits@basic:
    - fi-bsw-n3050:       [SKIP][160] ([fdo#109271]) -> [FAIL][161] +10 other tests fail
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-bsw-n3050/igt@gem_tiled_blits@basic.html
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-bsw-n3050/igt@gem_tiled_blits@basic.html
    - bat-mtlp-6:         [SKIP][162] ([i915#4077]) -> [FAIL][163] +2 other tests fail
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-mtlp-6/igt@gem_tiled_blits@basic.html
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-mtlp-6/igt@gem_tiled_blits@basic.html

  * igt@gem_tiled_fence_blits@basic:
    - bat-atsm-1:         [SKIP][164] ([i915#4077]) -> [FAIL][165] +2 other tests fail
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-atsm-1/igt@gem_tiled_fence_blits@basic.html
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@gem_tiled_fence_blits@basic.html
    - bat-dg1-7:          [SKIP][166] ([i915#4077]) -> [FAIL][167] +2 other tests fail
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@gem_tiled_fence_blits@basic.html
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@gem_tiled_fence_blits@basic.html
    - bat-dg2-11:         [SKIP][168] ([i915#4077]) -> [FAIL][169] +2 other tests fail
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@gem_tiled_fence_blits@basic.html
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@gem_tiled_fence_blits@basic.html

  * igt@gem_tiled_pread_basic:
    - bat-adlp-6:         [SKIP][170] ([i915#3282]) -> [FAIL][171]
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-6/igt@gem_tiled_pread_basic.html
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-6/igt@gem_tiled_pread_basic.html
    - fi-rkl-11600:       [SKIP][172] ([i915#3282]) -> [FAIL][173]
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-rkl-11600/igt@gem_tiled_pread_basic.html
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-rkl-11600/igt@gem_tiled_pread_basic.html
    - bat-atsm-1:         [SKIP][174] ([i915#4079]) -> [FAIL][175] +1 other test fail
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-atsm-1/igt@gem_tiled_pread_basic.html
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@gem_tiled_pread_basic.html
    - bat-dg1-7:          [SKIP][176] ([i915#4079]) -> [FAIL][177] +1 other test fail
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@gem_tiled_pread_basic.html
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@gem_tiled_pread_basic.html
    - bat-adlp-9:         [SKIP][178] ([i915#3282]) -> [FAIL][179]
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-9/igt@gem_tiled_pread_basic.html
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-9/igt@gem_tiled_pread_basic.html
    - bat-dg2-11:         [SKIP][180] ([i915#4079]) -> [FAIL][181] +1 other test fail
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@gem_tiled_pread_basic.html
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@gem_tiled_pread_basic.html
    - bat-adln-1:         [SKIP][182] ([i915#3282]) -> [FAIL][183]
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adln-1/igt@gem_tiled_pread_basic.html
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adln-1/igt@gem_tiled_pread_basic.html
    - bat-dg2-8:          [SKIP][184] ([i915#4079]) -> [FAIL][185] +1 other test fail
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@gem_tiled_pread_basic.html
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@gem_tiled_pread_basic.html
    - bat-adlm-1:         [SKIP][186] ([i915#3282]) -> [FAIL][187]
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlm-1/igt@gem_tiled_pread_basic.html
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlm-1/igt@gem_tiled_pread_basic.html
    - bat-rplp-1:         [SKIP][188] ([i915#3282]) -> [FAIL][189]
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-rplp-1/igt@gem_tiled_pread_basic.html
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-rplp-1/igt@gem_tiled_pread_basic.html
    - bat-mtlp-6:         [SKIP][190] ([i915#4079]) -> [FAIL][191] +1 other test fail
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-mtlp-6/igt@gem_tiled_pread_basic.html
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-mtlp-6/igt@gem_tiled_pread_basic.html

  * igt@i915_pm_rps@basic-api:
    - bat-dg1-7:          [SKIP][192] ([i915#6621]) -> [FAIL][193]
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@i915_pm_rps@basic-api.html
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@i915_pm_rps@basic-api.html
    - bat-adlp-9:         [SKIP][194] ([i915#6621]) -> [FAIL][195]
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-9/igt@i915_pm_rps@basic-api.html
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-9/igt@i915_pm_rps@basic-api.html
    - bat-adlp-6:         [SKIP][196] ([i915#6621]) -> [FAIL][197]
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-6/igt@i915_pm_rps@basic-api.html
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-6/igt@i915_pm_rps@basic-api.html
    - bat-rplp-1:         [SKIP][198] ([i915#6621]) -> [FAIL][199]
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-rplp-1/igt@i915_pm_rps@basic-api.html
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-rplp-1/igt@i915_pm_rps@basic-api.html
    - bat-atsm-1:         [SKIP][200] ([i915#6621]) -> [FAIL][201]
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-atsm-1/igt@i915_pm_rps@basic-api.html
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@i915_pm_rps@basic-api.html
    - bat-dg2-9:          [SKIP][202] ([i915#6621]) -> [FAIL][203]
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@i915_pm_rps@basic-api.html
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@i915_pm_rps@basic-api.html
    - bat-dg2-11:         [SKIP][204] ([i915#6621]) -> [FAIL][205]
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@i915_pm_rps@basic-api.html
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@i915_pm_rps@basic-api.html
    - bat-adln-1:         [SKIP][206] ([i915#6621]) -> [FAIL][207]
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adln-1/igt@i915_pm_rps@basic-api.html
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adln-1/igt@i915_pm_rps@basic-api.html
    - bat-dg2-8:          [SKIP][208] ([i915#6621]) -> [FAIL][209]
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@i915_pm_rps@basic-api.html
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@i915_pm_rps@basic-api.html
    - bat-adlm-1:         [SKIP][210] ([i915#6621]) -> [FAIL][211]
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlm-1/igt@i915_pm_rps@basic-api.html
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlm-1/igt@i915_pm_rps@basic-api.html

  * igt@kms_addfb_basic@addfb25-x-tiled-legacy:
    - bat-mtlp-6:         [SKIP][212] ([i915#4212] / [i915#9792]) -> [FAIL][213] +8 other tests fail
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-mtlp-6/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-mtlp-6/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html

  * igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy:
    - bat-dg1-7:          [SKIP][214] ([i915#4212]) -> [FAIL][215] +7 other tests fail
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html
    - bat-dg2-11:         [SKIP][216] ([i915#4212]) -> [FAIL][217] +7 other tests fail
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-dg2-9:          [SKIP][218] ([i915#5190]) -> [FAIL][219]
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-dg2-8:          [SKIP][220] ([i915#5190]) -> [FAIL][221]
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-mtlp-6:         [SKIP][222] ([i915#5190] / [i915#9792]) -> [FAIL][223]
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-mtlp-6/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-mtlp-6/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-dg2-11:         [SKIP][224] ([i915#5190]) -> [FAIL][225]
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - bat-dg2-9:          [SKIP][226] ([i915#4215] / [i915#5190]) -> [FAIL][227]
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg2-8:          [SKIP][228] ([i915#4215] / [i915#5190]) -> [FAIL][229]
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg1-7:          [SKIP][230] ([i915#4215]) -> [FAIL][231]
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg2-11:         [SKIP][232] ([i915#4215] / [i915#5190]) -> [FAIL][233]
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_addfb_basic@framebuffer-vs-set-tiling:
    - bat-dg2-9:          [SKIP][234] ([i915#4212]) -> [FAIL][235] +7 other tests fail
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
    - bat-dg2-8:          [SKIP][236] ([i915#4212]) -> [FAIL][237] +7 other tests fail
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html

  * igt@kms_addfb_basic@size-max:
    - bat-atsm-1:         [SKIP][238] ([i915#6077]) -> [FAIL][239] +37 other tests fail
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-atsm-1/igt@kms_addfb_basic@size-max.html
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@kms_addfb_basic@size-max.html

  * igt@kms_busy@basic:
    - fi-tgl-1115g4:      [SKIP][240] ([i915#4303]) -> [FAIL][241]
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-tgl-1115g4/igt@kms_busy@basic.html
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-tgl-1115g4/igt@kms_busy@basic.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - fi-glk-j4005:       [SKIP][242] ([fdo#109271]) -> [FAIL][243] +6 other tests fail
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-glk-j4005/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-glk-j4005/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
    - bat-adlp-9:         [SKIP][244] ([i915#4103]) -> [FAIL][245] +1 other test fail
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-9/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-9/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
    - bat-dg2-11:         [SKIP][246] ([i915#4103] / [i915#4213]) -> [FAIL][247] +1 other test fail
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
    - bat-adln-1:         [SKIP][248] ([i915#4213]) -> [FAIL][249] +1 other test fail
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adln-1/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adln-1/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - bat-rplp-1:         [SKIP][250] ([i915#4103] / [i915#4213]) -> [FAIL][251] +1 other test fail
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-rplp-1/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-rplp-1/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - fi-rkl-11600:       [SKIP][252] ([i915#4103]) -> [FAIL][253] +1 other test fail
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-rkl-11600/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-rkl-11600/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - fi-cfl-guc:         [SKIP][254] ([fdo#109271]) -> [FAIL][255] +6 other tests fail
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-cfl-guc/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-cfl-guc/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - bat-jsl-3:          [SKIP][256] ([i915#4103]) -> [FAIL][257] +1 other test fail
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-jsl-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-jsl-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - bat-dg2-9:          [SKIP][258] ([i915#4103] / [i915#4213]) -> [FAIL][259] +1 other test fail
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - bat-dg2-8:          [SKIP][260] ([i915#4103] / [i915#4213]) -> [FAIL][261] +1 other test fail
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - bat-adlp-6:         [SKIP][262] ([i915#4103]) -> [FAIL][263] +1 other test fail
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - fi-skl-6600u:       [SKIP][264] ([fdo#109271]) -> [FAIL][265] +5 other tests fail
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-skl-6600u/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-skl-6600u/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - bat-dg1-7:          [SKIP][266] ([i915#4103] / [i915#4213]) -> [FAIL][267] +1 other test fail
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_cursor_legacy@basic-flip-after-cursor-atomic:
    - bat-atsm-1:         [SKIP][268] ([i915#6078]) -> [FAIL][269] +15 other tests fail
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-atsm-1/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
    - bat-mtlp-6:         [SKIP][270] ([i915#9792]) -> [FAIL][271] +9 other tests fail
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-mtlp-6/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-mtlp-6/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html

  * igt@kms_cursor_legacy@basic-flip-after-cursor-varying-size:
    - bat-adlm-1:         [SKIP][272] ([i915#9875] / [i915#9900]) -> [FAIL][273] +16 other tests fail
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlm-1/igt@kms_cursor_legacy@basic-flip-after-cursor-varying-size.html
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlm-1/igt@kms_cursor_legacy@basic-flip-after-cursor-varying-size.html
    - fi-tgl-1115g4:      [SKIP][274] ([i915#10158]) -> [FAIL][275] +15 other tests fail
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-tgl-1115g4/igt@kms_cursor_legacy@basic-flip-after-cursor-varying-size.html
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-tgl-1115g4/igt@kms_cursor_legacy@basic-flip-after-cursor-varying-size.html

  * igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size:
    - fi-kbl-guc:         [SKIP][276] ([fdo#109271]) -> [FAIL][277] +26 other tests fail
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-guc/igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size.html
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-guc/igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size.html

  * igt@kms_dsc@dsc-basic:
    - fi-skl-guc:         [SKIP][278] ([fdo#109271]) -> [FAIL][279] +6 other tests fail
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-skl-guc/igt@kms_dsc@dsc-basic.html
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-skl-guc/igt@kms_dsc@dsc-basic.html
    - bat-dg2-11:         [SKIP][280] ([i915#3555] / [i915#3840]) -> [FAIL][281]
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@kms_dsc@dsc-basic.html
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@kms_dsc@dsc-basic.html
    - bat-adln-1:         [SKIP][282] ([i915#3555] / [i915#3840]) -> [FAIL][283]
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adln-1/igt@kms_dsc@dsc-basic.html
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adln-1/igt@kms_dsc@dsc-basic.html
    - bat-rplp-1:         [SKIP][284] ([i915#3555] / [i915#3840]) -> [FAIL][285]
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-rplp-1/igt@kms_dsc@dsc-basic.html
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-rplp-1/igt@kms_dsc@dsc-basic.html
    - fi-rkl-11600:       [SKIP][286] ([i915#3555] / [i915#3840]) -> [FAIL][287]
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-rkl-11600/igt@kms_dsc@dsc-basic.html
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-rkl-11600/igt@kms_dsc@dsc-basic.html
    - bat-adlp-6:         [SKIP][288] ([i915#3555] / [i915#3840]) -> [FAIL][289]
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-6/igt@kms_dsc@dsc-basic.html
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-6/igt@kms_dsc@dsc-basic.html
    - bat-dg1-7:          [SKIP][290] ([i915#3555] / [i915#3840]) -> [FAIL][291]
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@kms_dsc@dsc-basic.html
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@kms_dsc@dsc-basic.html
    - bat-jsl-3:          [SKIP][292] ([i915#3555] / [i915#9886]) -> [FAIL][293]
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-jsl-3/igt@kms_dsc@dsc-basic.html
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-jsl-3/igt@kms_dsc@dsc-basic.html
    - bat-adlp-9:         [SKIP][294] ([i915#3555] / [i915#3840]) -> [FAIL][295]
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-9/igt@kms_dsc@dsc-basic.html
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-9/igt@kms_dsc@dsc-basic.html

  * igt@kms_flip@basic-flip-vs-dpms:
    - bat-mtlp-6:         [SKIP][296] ([i915#3637] / [i915#9792]) -> [FAIL][297] +3 other tests fail
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-mtlp-6/igt@kms_flip@basic-flip-vs-dpms.html
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-mtlp-6/igt@kms_flip@basic-flip-vs-dpms.html

  * igt@kms_flip@basic-plain-flip:
    - bat-adlm-1:         [SKIP][298] ([i915#3637]) -> [FAIL][299] +3 other tests fail
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlm-1/igt@kms_flip@basic-plain-flip.html
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlm-1/igt@kms_flip@basic-plain-flip.html
    - fi-tgl-1115g4:      [SKIP][300] ([i915#3637]) -> [FAIL][301] +3 other tests fail
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-tgl-1115g4/igt@kms_flip@basic-plain-flip.html
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-tgl-1115g4/igt@kms_flip@basic-plain-flip.html

  * igt@kms_force_connector_basic@force-load-detect:
    - fi-kbl-7567u:       [SKIP][302] ([fdo#109271]) -> [FAIL][303] +6 other tests fail
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-7567u/igt@kms_force_connector_basic@force-load-detect.html
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-7567u/igt@kms_force_connector_basic@force-load-detect.html
    - bat-adln-1:         [SKIP][304] ([fdo#109285]) -> [FAIL][305]
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adln-1/igt@kms_force_connector_basic@force-load-detect.html
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adln-1/igt@kms_force_connector_basic@force-load-detect.html
    - fi-cfl-8700k:       [SKIP][306] ([fdo#109271]) -> [FAIL][307] +6 other tests fail
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-cfl-8700k/igt@kms_force_connector_basic@force-load-detect.html
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-cfl-8700k/igt@kms_force_connector_basic@force-load-detect.html
    - bat-adlm-1:         [SKIP][308] ([fdo#109285]) -> [FAIL][309]
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlm-1/igt@kms_force_connector_basic@force-load-detect.html
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlm-1/igt@kms_force_connector_basic@force-load-detect.html
    - bat-rplp-1:         [SKIP][310] ([fdo#109285]) -> [FAIL][311]
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-rplp-1/igt@kms_force_connector_basic@force-load-detect.html
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-rplp-1/igt@kms_force_connector_basic@force-load-detect.html
    - fi-rkl-11600:       [SKIP][312] ([fdo#109285]) -> [FAIL][313]
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-rkl-11600/igt@kms_force_connector_basic@force-load-detect.html
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-rkl-11600/igt@kms_force_connector_basic@force-load-detect.html
    - fi-tgl-1115g4:      [SKIP][314] ([fdo#109285]) -> [FAIL][315]
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-tgl-1115g4/igt@kms_force_connector_basic@force-load-detect.html
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-tgl-1115g4/igt@kms_force_connector_basic@force-load-detect.html
    - bat-jsl-3:          [SKIP][316] ([fdo#109285]) -> [FAIL][317]
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-jsl-3/igt@kms_force_connector_basic@force-load-detect.html
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-jsl-3/igt@kms_force_connector_basic@force-load-detect.html
    - bat-dg2-9:          [SKIP][318] ([fdo#109285]) -> [FAIL][319]
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@kms_force_connector_basic@force-load-detect.html
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@kms_force_connector_basic@force-load-detect.html
    - bat-dg2-8:          [SKIP][320] ([fdo#109285]) -> [FAIL][321]
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@kms_force_connector_basic@force-load-detect.html
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@kms_force_connector_basic@force-load-detect.html
    - bat-adlp-6:         [SKIP][322] ([fdo#109285]) -> [FAIL][323]
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-6/igt@kms_force_connector_basic@force-load-detect.html
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-6/igt@kms_force_connector_basic@force-load-detect.html
    - bat-dg1-7:          [SKIP][324] ([fdo#109285]) -> [FAIL][325]
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@kms_force_connector_basic@force-load-detect.html
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@kms_force_connector_basic@force-load-detect.html
    - bat-adlp-9:         [SKIP][326] ([fdo#109285]) -> [FAIL][327]
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-9/igt@kms_force_connector_basic@force-load-detect.html
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-9/igt@kms_force_connector_basic@force-load-detect.html
    - bat-dg2-11:         [SKIP][328] ([fdo#109285]) -> [FAIL][329]
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@kms_force_connector_basic@force-load-detect.html
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - bat-atsm-1:         [SKIP][330] ([i915#6093]) -> [FAIL][331] +4 other tests fail
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-atsm-1/igt@kms_force_connector_basic@prune-stale-modes.html
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@kms_force_connector_basic@prune-stale-modes.html
    - bat-dg2-9:          [SKIP][332] ([i915#5274]) -> [FAIL][333]
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@kms_force_connector_basic@prune-stale-modes.html
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@kms_force_connector_basic@prune-stale-modes.html
    - bat-dg2-11:         [SKIP][334] ([i915#5274]) -> [FAIL][335]
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@kms_force_connector_basic@prune-stale-modes.html
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@kms_force_connector_basic@prune-stale-modes.html
    - bat-dg2-8:          [SKIP][336] ([i915#5274]) -> [FAIL][337]
   [336]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@kms_force_connector_basic@prune-stale-modes.html
   [337]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_frontbuffer_tracking@basic:
    - bat-adlm-1:         [SKIP][338] ([i915#1849] / [i915#4342]) -> [FAIL][339]
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlm-1/igt@kms_frontbuffer_tracking@basic.html
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlm-1/igt@kms_frontbuffer_tracking@basic.html
    - fi-tgl-1115g4:      [SKIP][340] ([i915#1849]) -> [FAIL][341]
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-tgl-1115g4/igt@kms_frontbuffer_tracking@basic.html
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-tgl-1115g4/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_hdmi_inject@inject-audio:
    - fi-apl-guc:         [SKIP][342] ([fdo#109271]) -> [FAIL][343] +10 other tests fail
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-apl-guc/igt@kms_hdmi_inject@inject-audio.html
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-apl-guc/igt@kms_hdmi_inject@inject-audio.html
    - fi-pnv-d510:        [SKIP][344] ([fdo#109271]) -> [FAIL][345] +19 other tests fail
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-pnv-d510/igt@kms_hdmi_inject@inject-audio.html
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-pnv-d510/igt@kms_hdmi_inject@inject-audio.html
    - bat-dg1-7:          [SKIP][346] ([i915#433]) -> [FAIL][347]
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@kms_hdmi_inject@inject-audio.html
   [347]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24:
    - bat-atsm-1:         [SKIP][348] ([i915#1836]) -> [FAIL][349] +6 other tests fail
   [348]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-atsm-1/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24.html
   [349]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24.html

  * igt@kms_pipe_crc_basic@read-crc:
    - fi-kbl-x1275:       [SKIP][350] ([fdo#109271]) -> [FAIL][351] +27 other tests fail
   [350]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-x1275/igt@kms_pipe_crc_basic@read-crc.html
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-x1275/igt@kms_pipe_crc_basic@read-crc.html

  * igt@kms_pm_backlight@basic-brightness:
    - fi-blb-e6850:       [SKIP][352] ([fdo#109271]) -> [FAIL][353] +16 other tests fail
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-blb-e6850/igt@kms_pm_backlight@basic-brightness.html
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-blb-e6850/igt@kms_pm_backlight@basic-brightness.html
    - bat-kbl-2:          [SKIP][354] ([fdo#109271]) -> [FAIL][355] +27 other tests fail
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-kbl-2/igt@kms_pm_backlight@basic-brightness.html
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-kbl-2/igt@kms_pm_backlight@basic-brightness.html
    - fi-rkl-11600:       [SKIP][356] ([i915#5354]) -> [FAIL][357]
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-rkl-11600/igt@kms_pm_backlight@basic-brightness.html
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-rkl-11600/igt@kms_pm_backlight@basic-brightness.html
    - bat-dg1-7:          [SKIP][358] ([i915#5354]) -> [FAIL][359]
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@kms_pm_backlight@basic-brightness.html
   [359]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@kms_pm_backlight@basic-brightness.html
    - bat-dg2-11:         [SKIP][360] ([i915#5354]) -> [FAIL][361]
   [360]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@kms_pm_backlight@basic-brightness.html
   [361]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@kms_pm_backlight@basic-brightness.html
    - fi-cfl-8109u:       [SKIP][362] ([fdo#109271]) -> [FAIL][363] +6 other tests fail
   [362]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-cfl-8109u/igt@kms_pm_backlight@basic-brightness.html
   [363]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-cfl-8109u/igt@kms_pm_backlight@basic-brightness.html
    - bat-dg2-8:          [SKIP][364] ([i915#5354]) -> [FAIL][365]
   [364]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@kms_pm_backlight@basic-brightness.html
   [365]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@kms_pm_backlight@basic-brightness.html
    - bat-adlm-1:         [SKIP][366] ([i915#5354]) -> [FAIL][367]
   [366]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlm-1/igt@kms_pm_backlight@basic-brightness.html
   [367]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlm-1/igt@kms_pm_backlight@basic-brightness.html
    - fi-tgl-1115g4:      [SKIP][368] ([i915#9812]) -> [FAIL][369]
   [368]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-tgl-1115g4/igt@kms_pm_backlight@basic-brightness.html
   [369]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-tgl-1115g4/igt@kms_pm_backlight@basic-brightness.html
    - bat-dg2-9:          [SKIP][370] ([i915#5354]) -> [FAIL][371]
   [370]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@kms_pm_backlight@basic-brightness.html
   [371]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@kms_pm_backlight@basic-brightness.html
    - bat-adlp-9:         [SKIP][372] ([i915#9812]) -> [FAIL][373]
   [372]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-9/igt@kms_pm_backlight@basic-brightness.html
   [373]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-9/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_prop_blob@basic:
    - bat-atsm-1:         [SKIP][374] ([i915#7357]) -> [FAIL][375]
   [374]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-atsm-1/igt@kms_prop_blob@basic.html
   [375]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@kms_prop_blob@basic.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-adlp-9:         [SKIP][376] ([i915#3555]) -> [FAIL][377]
   [376]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-9/igt@kms_setmode@basic-clone-single-crtc.html
   [377]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-9/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-adlp-6:         [SKIP][378] ([i915#3555]) -> [FAIL][379]
   [378]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-6/igt@kms_setmode@basic-clone-single-crtc.html
   [379]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-6/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-rplp-1:         [SKIP][380] ([i915#3555]) -> [FAIL][381]
   [380]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-rplp-1/igt@kms_setmode@basic-clone-single-crtc.html
   [381]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-rplp-1/igt@kms_setmode@basic-clone-single-crtc.html
    - fi-rkl-11600:       [SKIP][382] ([i915#3555]) -> [FAIL][383]
   [382]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-rkl-11600/igt@kms_setmode@basic-clone-single-crtc.html
   [383]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-rkl-11600/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-atsm-1:         [SKIP][384] ([i915#6094]) -> [FAIL][385]
   [384]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-atsm-1/igt@kms_setmode@basic-clone-single-crtc.html
   [385]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-jsl-3:          [SKIP][386] ([i915#3555]) -> [FAIL][387]
   [386]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-jsl-3/igt@kms_setmode@basic-clone-single-crtc.html
   [387]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-jsl-3/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-dg2-9:          [SKIP][388] ([i915#3555]) -> [FAIL][389]
   [388]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@kms_setmode@basic-clone-single-crtc.html
   [389]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-dg2-11:         [SKIP][390] ([i915#3555]) -> [FAIL][391]
   [390]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@kms_setmode@basic-clone-single-crtc.html
   [391]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-adln-1:         [SKIP][392] ([i915#3555]) -> [FAIL][393]
   [392]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adln-1/igt@kms_setmode@basic-clone-single-crtc.html
   [393]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adln-1/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-dg2-8:          [SKIP][394] ([i915#3555]) -> [FAIL][395]
   [394]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@kms_setmode@basic-clone-single-crtc.html
   [395]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-adlm-1:         [SKIP][396] ([i915#3555]) -> [FAIL][397]
   [396]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlm-1/igt@kms_setmode@basic-clone-single-crtc.html
   [397]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlm-1/igt@kms_setmode@basic-clone-single-crtc.html
    - fi-tgl-1115g4:      [SKIP][398] ([i915#3555]) -> [FAIL][399]
   [398]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-tgl-1115g4/igt@kms_setmode@basic-clone-single-crtc.html
   [399]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-tgl-1115g4/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-dg1-7:          [SKIP][400] ([i915#3555]) -> [FAIL][401]
   [400]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@kms_setmode@basic-clone-single-crtc.html
   [401]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-flip:
    - bat-atsm-1:         [SKIP][402] ([fdo#109295] / [i915#6078]) -> [FAIL][403]
   [402]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-atsm-1/igt@prime_vgem@basic-fence-flip.html
   [403]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@prime_vgem@basic-fence-flip.html
    - bat-dg1-7:          [SKIP][404] ([i915#3708]) -> [FAIL][405] +3 other tests fail
   [404]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@prime_vgem@basic-fence-flip.html
   [405]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@prime_vgem@basic-fence-flip.html
    - bat-dg2-9:          [SKIP][406] ([i915#3708]) -> [FAIL][407]
   [406]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@prime_vgem@basic-fence-flip.html
   [407]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@prime_vgem@basic-fence-flip.html
    - bat-dg2-11:         [SKIP][408] ([i915#3708]) -> [FAIL][409]
   [408]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@prime_vgem@basic-fence-flip.html
   [409]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@prime_vgem@basic-fence-flip.html
    - bat-dg2-8:          [SKIP][410] ([i915#3708]) -> [FAIL][411]
   [410]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@prime_vgem@basic-fence-flip.html
   [411]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@prime_vgem@basic-fence-flip.html
    - bat-adlm-1:         [SKIP][412] ([i915#3708] / [i915#9900]) -> [FAIL][413]
   [412]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlm-1/igt@prime_vgem@basic-fence-flip.html
   [413]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlm-1/igt@prime_vgem@basic-fence-flip.html
    - fi-tgl-1115g4:      [SKIP][414] ([fdo#109295]) -> [FAIL][415]
   [414]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-tgl-1115g4/igt@prime_vgem@basic-fence-flip.html
   [415]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-tgl-1115g4/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-fence-mmap:
    - bat-atsm-1:         [SKIP][416] ([fdo#109295] / [i915#4077]) -> [FAIL][417] +1 other test fail
   [416]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-atsm-1/igt@prime_vgem@basic-fence-mmap.html
   [417]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@prime_vgem@basic-fence-mmap.html
    - bat-dg1-7:          [SKIP][418] ([i915#3708] / [i915#4077]) -> [FAIL][419] +1 other test fail
   [418]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@prime_vgem@basic-fence-mmap.html
   [419]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@prime_vgem@basic-fence-mmap.html
    - bat-dg2-11:         [SKIP][420] ([i915#3708] / [i915#4077]) -> [FAIL][421] +1 other test fail
   [420]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@prime_vgem@basic-fence-mmap.html
   [421]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@prime_vgem@basic-fence-mmap.html
    - bat-dg2-8:          [SKIP][422] ([i915#3708] / [i915#4077]) -> [FAIL][423] +1 other test fail
   [422]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@prime_vgem@basic-fence-mmap.html
   [423]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@prime_vgem@basic-fence-mmap.html
    - bat-dg2-9:          [SKIP][424] ([i915#3708] / [i915#4077]) -> [FAIL][425] +1 other test fail
   [424]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@prime_vgem@basic-fence-mmap.html
   [425]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@prime_vgem@basic-fence-mmap.html

  * igt@prime_vgem@basic-fence-read:
    - bat-adlp-9:         [SKIP][426] ([fdo#109295] / [i915#3291] / [i915#3708]) -> [FAIL][427] +2 other tests fail
   [426]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-9/igt@prime_vgem@basic-fence-read.html
   [427]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-9/igt@prime_vgem@basic-fence-read.html
    - bat-adlp-6:         [SKIP][428] ([fdo#109295] / [i915#3291] / [i915#3708]) -> [FAIL][429] +2 other tests fail
   [428]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-6/igt@prime_vgem@basic-fence-read.html
   [429]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-6/igt@prime_vgem@basic-fence-read.html

  * igt@prime_vgem@basic-read:
    - bat-dg2-11:         [SKIP][430] ([i915#3291] / [i915#3708]) -> [FAIL][431] +2 other tests fail
   [430]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@prime_vgem@basic-read.html
   [431]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@prime_vgem@basic-read.html
    - bat-rplp-1:         [SKIP][432] ([i915#3708]) -> [FAIL][433] +2 other tests fail
   [432]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-rplp-1/igt@prime_vgem@basic-read.html
   [433]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-rplp-1/igt@prime_vgem@basic-read.html
    - fi-rkl-11600:       [SKIP][434] ([fdo#109295] / [i915#3291] / [i915#3708]) -> [FAIL][435] +2 other tests fail
   [434]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-rkl-11600/igt@prime_vgem@basic-read.html
   [435]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-rkl-11600/igt@prime_vgem@basic-read.html

  * igt@prime_vgem@basic-write:
    - bat-atsm-1:         [SKIP][436] ([fdo#109295]) -> [FAIL][437] +2 other tests fail
   [436]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-atsm-1/igt@prime_vgem@basic-write.html
   [437]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@prime_vgem@basic-write.html
    - bat-dg2-9:          [SKIP][438] ([i915#3291] / [i915#3708]) -> [FAIL][439] +2 other tests fail
   [438]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@prime_vgem@basic-write.html
   [439]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@prime_vgem@basic-write.html
    - bat-adln-1:         [SKIP][440] ([fdo#109295] / [i915#3291]) -> [FAIL][441] +2 other tests fail
   [440]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adln-1/igt@prime_vgem@basic-write.html
   [441]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adln-1/igt@prime_vgem@basic-write.html
    - bat-dg2-8:          [SKIP][442] ([i915#3291] / [i915#3708]) -> [FAIL][443] +2 other tests fail
   [442]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@prime_vgem@basic-write.html
   [443]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@prime_vgem@basic-write.html
    - bat-adlm-1:         [SKIP][444] ([i915#3708]) -> [FAIL][445] +2 other tests fail
   [444]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlm-1/igt@prime_vgem@basic-write.html
   [445]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlm-1/igt@prime_vgem@basic-write.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@core_hotunplug@unbind-rebind:
    - {bat-arls-1}:       NOTRUN -> [SKIP][446] +144 other tests skip
   [446]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-arls-1/igt@core_hotunplug@unbind-rebind.html

  * igt@debugfs_test@basic-hwmon:
    - {bat-adls-6}:       [SKIP][447] ([i915#9318]) -> [FAIL][448]
   [447]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adls-6/igt@debugfs_test@basic-hwmon.html
   [448]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adls-6/igt@debugfs_test@basic-hwmon.html

  * igt@gem_busy@busy:
    - {bat-adls-6}:       NOTRUN -> [FAIL][449] +21 other tests fail
   [449]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adls-6/igt@gem_busy@busy.html

  * igt@gem_lmem_swapping@verify-random:
    - {bat-arls-2}:       NOTRUN -> [SKIP][450] +3 other tests skip
   [450]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-arls-2/igt@gem_lmem_swapping@verify-random.html

  * igt@gem_mmap@basic:
    - {bat-dg2-14}:       [SKIP][451] ([i915#4083]) -> [FAIL][452]
   [451]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@gem_mmap@basic.html
   [452]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@gem_mmap@basic.html

  * igt@gem_render_tiled_blits@basic:
    - {bat-dg2-14}:       [SKIP][453] ([i915#4079]) -> [FAIL][454] +1 other test fail
   [453]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@gem_render_tiled_blits@basic.html
   [454]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@gem_render_tiled_blits@basic.html

  * igt@gem_tiled_fence_blits@basic:
    - {bat-dg2-14}:       [SKIP][455] ([i915#4077]) -> [FAIL][456] +2 other tests fail
   [455]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@gem_tiled_fence_blits@basic.html
   [456]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@gem_tiled_fence_blits@basic.html

  * igt@gem_tiled_pread_basic:
    - {bat-adls-6}:       [SKIP][457] ([i915#3282]) -> [FAIL][458]
   [457]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adls-6/igt@gem_tiled_pread_basic.html
   [458]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adls-6/igt@gem_tiled_pread_basic.html

  * igt@i915_pm_rps@basic-api:
    - {bat-dg2-14}:       [SKIP][459] ([i915#6621]) -> [FAIL][460]
   [459]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@i915_pm_rps@basic-api.html
   [460]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@i915_pm_rps@basic-api.html

  * igt@i915_selftest@live@gt_timelines:
    - {bat-arls-2}:       NOTRUN -> [DMESG-WARN][461] +14 other tests dmesg-warn
   [461]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-arls-2/igt@i915_selftest@live@gt_timelines.html

  * igt@i915_selftest@live@objects:
    - {bat-arls-1}:       NOTRUN -> [DMESG-FAIL][462] +38 other tests dmesg-fail
   [462]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-arls-1/igt@i915_selftest@live@objects.html
    - {bat-arls-2}:       NOTRUN -> [ABORT][463]
   [463]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-arls-2/igt@i915_selftest@live@objects.html

  * igt@kms_addfb_basic@addfb25-modifier-no-flag:
    - {bat-arls-2}:       NOTRUN -> [FAIL][464] +135 other tests fail
   [464]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-arls-2/igt@kms_addfb_basic@addfb25-modifier-no-flag.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - {bat-dg2-14}:       [SKIP][465] ([i915#5190]) -> [FAIL][466]
   [465]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [466]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@basic-x-tiled-legacy:
    - {bat-dg2-14}:       [SKIP][467] ([i915#4212]) -> [FAIL][468] +7 other tests fail
   [467]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@kms_addfb_basic@basic-x-tiled-legacy.html
   [468]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@kms_addfb_basic@basic-x-tiled-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - {bat-dg2-14}:       [SKIP][469] ([i915#4215] / [i915#5190]) -> [FAIL][470]
   [469]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [470]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_addfb_basic@unused-offsets:
    - {bat-dg2-14}:       [PASS][471] -> [FAIL][472] +79 other tests fail
   [471]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@kms_addfb_basic@unused-offsets.html
   [472]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@kms_addfb_basic@unused-offsets.html

  * igt@kms_chamelium_hpd@dp-hpd-fast:
    - {bat-dg2-13}:       [SKIP][473] ([Intel XE#484]) -> [FAIL][474] +2 other tests fail
   [473]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-13/igt@kms_chamelium_hpd@dp-hpd-fast.html
   [474]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-13/igt@kms_chamelium_hpd@dp-hpd-fast.html

  * igt@kms_chamelium_hpd@hdmi-hpd-fast:
    - {bat-dg2-13}:       [PASS][475] -> [FAIL][476] +4 other tests fail
   [475]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-13/igt@kms_chamelium_hpd@hdmi-hpd-fast.html
   [476]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-13/igt@kms_chamelium_hpd@hdmi-hpd-fast.html

  * igt@kms_chamelium_hpd@vga-hpd-fast:
    - {bat-dg2-13}:       [SKIP][477] ([Intel XE#484] / [i915#4550]) -> [FAIL][478] +1 other test fail
   [477]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-13/igt@kms_chamelium_hpd@vga-hpd-fast.html
   [478]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-13/igt@kms_chamelium_hpd@vga-hpd-fast.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - {bat-dg2-14}:       [SKIP][479] ([i915#4103] / [i915#4213]) -> [FAIL][480] +1 other test fail
   [479]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [480]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - {bat-adls-6}:       [SKIP][481] ([i915#4103]) -> [FAIL][482] +1 other test fail
   [481]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adls-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [482]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adls-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - {bat-dg2-14}:       [SKIP][483] ([i915#3555] / [i915#3840]) -> [FAIL][484]
   [483]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@kms_dsc@dsc-basic.html
   [484]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@kms_dsc@dsc-basic.html
    - {bat-adls-6}:       [SKIP][485] ([i915#3555] / [i915#3840]) -> [FAIL][486]
   [485]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adls-6/igt@kms_dsc@dsc-basic.html
   [486]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adls-6/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@force-connector-state:
    - {bat-adls-6}:       [PASS][487] -> [FAIL][488] +98 other tests fail
   [487]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adls-6/igt@kms_force_connector_basic@force-connector-state.html
   [488]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adls-6/igt@kms_force_connector_basic@force-connector-state.html

  * igt@kms_force_connector_basic@force-load-detect:
    - {bat-dg2-14}:       [SKIP][489] ([fdo#109285]) -> [FAIL][490]
   [489]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@kms_force_connector_basic@force-load-detect.html
   [490]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@kms_force_connector_basic@force-load-detect.html
    - {bat-adls-6}:       [SKIP][491] ([fdo#109285]) -> [FAIL][492]
   [491]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adls-6/igt@kms_force_connector_basic@force-load-detect.html
   [492]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adls-6/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - {bat-dg2-14}:       [SKIP][493] ([i915#5274]) -> [FAIL][494]
   [493]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@kms_force_connector_basic@prune-stale-modes.html
   [494]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_pipe_crc_basic@read-crc-frame-sequence:
    - {bat-dg2-14}:       NOTRUN -> [FAIL][495] +21 other tests fail
   [495]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@kms_pipe_crc_basic@read-crc-frame-sequence.html

  * igt@kms_pm_backlight@basic-brightness:
    - {bat-dg2-14}:       [SKIP][496] ([i915#5354]) -> [FAIL][497]
   [496]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@kms_pm_backlight@basic-brightness.html
   [497]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@kms_pm_backlight@basic-brightness.html
    - {bat-adls-6}:       [SKIP][498] ([i915#5354]) -> [FAIL][499]
   [498]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adls-6/igt@kms_pm_backlight@basic-brightness.html
   [499]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adls-6/igt@kms_pm_backlight@basic-brightness.html

  * {igt@kms_psr@psr-cursor-plane-move}:
    - fi-cfl-guc:         [SKIP][500] ([fdo#109271]) -> [FAIL][501] +3 other tests fail
   [500]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-cfl-guc/igt@kms_psr@psr-cursor-plane-move.html
   [501]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-cfl-guc/igt@kms_psr@psr-cursor-plane-move.html
    - bat-mtlp-6:         NOTRUN -> [FAIL][502] +3 other tests fail
   [502]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-mtlp-6/igt@kms_psr@psr-cursor-plane-move.html
    - fi-skl-6600u:       NOTRUN -> [FAIL][503] +3 other tests fail
   [503]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-skl-6600u/igt@kms_psr@psr-cursor-plane-move.html
    - fi-pnv-d510:        [SKIP][504] ([fdo#109271]) -> [FAIL][505] +3 other tests fail
   [504]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-pnv-d510/igt@kms_psr@psr-cursor-plane-move.html
   [505]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-pnv-d510/igt@kms_psr@psr-cursor-plane-move.html
    - fi-blb-e6850:       [SKIP][506] ([fdo#109271]) -> [FAIL][507] +3 other tests fail
   [506]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-blb-e6850/igt@kms_psr@psr-cursor-plane-move.html
   [507]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-blb-e6850/igt@kms_psr@psr-cursor-plane-move.html
    - bat-adlp-6:         NOTRUN -> [FAIL][508] +3 other tests fail
   [508]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-6/igt@kms_psr@psr-cursor-plane-move.html
    - fi-apl-guc:         [SKIP][509] ([fdo#109271]) -> [FAIL][510] +3 other tests fail
   [509]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-apl-guc/igt@kms_psr@psr-cursor-plane-move.html
   [510]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-apl-guc/igt@kms_psr@psr-cursor-plane-move.html

  * {igt@kms_psr@psr-primary-mmap-gtt}:
    - fi-bsw-n3050:       [SKIP][511] ([fdo#109271]) -> [FAIL][512] +3 other tests fail
   [511]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-bsw-n3050/igt@kms_psr@psr-primary-mmap-gtt.html
   [512]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-bsw-n3050/igt@kms_psr@psr-primary-mmap-gtt.html
    - {bat-adls-6}:       [SKIP][513] ([i915#9732]) -> [FAIL][514] +3 other tests fail
   [513]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adls-6/igt@kms_psr@psr-primary-mmap-gtt.html
   [514]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adls-6/igt@kms_psr@psr-primary-mmap-gtt.html

  * {igt@kms_psr@psr-primary-page-flip}:
    - bat-dg1-7:          [SKIP][515] ([i915#9732]) -> [FAIL][516] +3 other tests fail
   [515]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg1-7/igt@kms_psr@psr-primary-page-flip.html
   [516]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg1-7/igt@kms_psr@psr-primary-page-flip.html
    - fi-glk-j4005:       [SKIP][517] ([fdo#109271]) -> [FAIL][518] +3 other tests fail
   [517]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-glk-j4005/igt@kms_psr@psr-primary-page-flip.html
   [518]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-glk-j4005/igt@kms_psr@psr-primary-page-flip.html

  * {igt@kms_psr@psr-sprite-plane-onoff}:
    - bat-adlp-9:         [SKIP][519] ([i915#9673] / [i915#9732]) -> [FAIL][520] +3 other tests fail
   [519]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlp-9/igt@kms_psr@psr-sprite-plane-onoff.html
   [520]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlp-9/igt@kms_psr@psr-sprite-plane-onoff.html
    - fi-skl-guc:         [SKIP][521] ([fdo#109271]) -> [FAIL][522] +3 other tests fail
   [521]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-skl-guc/igt@kms_psr@psr-sprite-plane-onoff.html
   [522]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-skl-guc/igt@kms_psr@psr-sprite-plane-onoff.html
    - bat-dg2-11:         [SKIP][523] ([i915#9732]) -> [FAIL][524] +3 other tests fail
   [523]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-11/igt@kms_psr@psr-sprite-plane-onoff.html
   [524]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-11/igt@kms_psr@psr-sprite-plane-onoff.html
    - fi-kbl-7567u:       [SKIP][525] ([fdo#109271]) -> [FAIL][526] +3 other tests fail
   [525]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-7567u/igt@kms_psr@psr-sprite-plane-onoff.html
   [526]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-7567u/igt@kms_psr@psr-sprite-plane-onoff.html
    - fi-cfl-8700k:       [SKIP][527] ([fdo#109271]) -> [FAIL][528] +3 other tests fail
   [527]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-cfl-8700k/igt@kms_psr@psr-sprite-plane-onoff.html
   [528]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-cfl-8700k/igt@kms_psr@psr-sprite-plane-onoff.html
    - {bat-dg2-14}:       [SKIP][529] ([i915#9732]) -> [FAIL][530] +3 other tests fail
   [529]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@kms_psr@psr-sprite-plane-onoff.html
   [530]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@kms_psr@psr-sprite-plane-onoff.html
    - fi-bsw-nick:        [SKIP][531] ([fdo#109271]) -> [FAIL][532] +3 other tests fail
   [531]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-bsw-nick/igt@kms_psr@psr-sprite-plane-onoff.html
   [532]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-bsw-nick/igt@kms_psr@psr-sprite-plane-onoff.html
    - bat-kbl-2:          [SKIP][533] ([fdo#109271]) -> [FAIL][534] +3 other tests fail
   [533]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-kbl-2/igt@kms_psr@psr-sprite-plane-onoff.html
   [534]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-kbl-2/igt@kms_psr@psr-sprite-plane-onoff.html
    - bat-rplp-1:         [SKIP][535] ([i915#9673] / [i915#9732]) -> [FAIL][536] +3 other tests fail
   [535]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-rplp-1/igt@kms_psr@psr-sprite-plane-onoff.html
   [536]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-rplp-1/igt@kms_psr@psr-sprite-plane-onoff.html
    - fi-rkl-11600:       [SKIP][537] ([i915#9732]) -> [FAIL][538] +3 other tests fail
   [537]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-rkl-11600/igt@kms_psr@psr-sprite-plane-onoff.html
   [538]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-rkl-11600/igt@kms_psr@psr-sprite-plane-onoff.html
    - bat-atsm-1:         [SKIP][539] ([i915#6078]) -> [FAIL][540] +3 other tests fail
   [539]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-atsm-1/igt@kms_psr@psr-sprite-plane-onoff.html
   [540]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-atsm-1/igt@kms_psr@psr-sprite-plane-onoff.html
    - bat-jsl-3:          NOTRUN -> [FAIL][541] +3 other tests fail
   [541]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-jsl-3/igt@kms_psr@psr-sprite-plane-onoff.html
    - bat-dg2-9:          [SKIP][542] ([i915#9673] / [i915#9732]) -> [FAIL][543] +3 other tests fail
   [542]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-9/igt@kms_psr@psr-sprite-plane-onoff.html
   [543]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-9/igt@kms_psr@psr-sprite-plane-onoff.html
    - fi-kbl-x1275:       [SKIP][544] ([fdo#109271]) -> [FAIL][545] +3 other tests fail
   [544]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-x1275/igt@kms_psr@psr-sprite-plane-onoff.html
   [545]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-x1275/igt@kms_psr@psr-sprite-plane-onoff.html
    - fi-cfl-8109u:       [SKIP][546] ([fdo#109271]) -> [FAIL][547] +3 other tests fail
   [546]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-cfl-8109u/igt@kms_psr@psr-sprite-plane-onoff.html
   [547]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-cfl-8109u/igt@kms_psr@psr-sprite-plane-onoff.html
    - bat-adln-1:         NOTRUN -> [FAIL][548] +3 other tests fail
   [548]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adln-1/igt@kms_psr@psr-sprite-plane-onoff.html
    - fi-ivb-3770:        [SKIP][549] ([fdo#109271]) -> [FAIL][550] +3 other tests fail
   [549]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-ivb-3770/igt@kms_psr@psr-sprite-plane-onoff.html
   [550]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-ivb-3770/igt@kms_psr@psr-sprite-plane-onoff.html
    - fi-elk-e7500:       [SKIP][551] ([fdo#109271]) -> [FAIL][552] +3 other tests fail
   [551]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-elk-e7500/igt@kms_psr@psr-sprite-plane-onoff.html
   [552]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-elk-e7500/igt@kms_psr@psr-sprite-plane-onoff.html
    - bat-dg2-8:          [SKIP][553] ([i915#9673] / [i915#9732]) -> [FAIL][554] +3 other tests fail
   [553]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-8/igt@kms_psr@psr-sprite-plane-onoff.html
   [554]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-8/igt@kms_psr@psr-sprite-plane-onoff.html
    - fi-kbl-guc:         [SKIP][555] ([fdo#109271]) -> [FAIL][556] +3 other tests fail
   [555]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-guc/igt@kms_psr@psr-sprite-plane-onoff.html
   [556]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-guc/igt@kms_psr@psr-sprite-plane-onoff.html
    - bat-adlm-1:         [SKIP][557] ([i915#9673] / [i915#9732]) -> [FAIL][558] +3 other tests fail
   [557]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adlm-1/igt@kms_psr@psr-sprite-plane-onoff.html
   [558]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adlm-1/igt@kms_psr@psr-sprite-plane-onoff.html
    - fi-ilk-650:         [SKIP][559] ([fdo#109271]) -> [FAIL][560] +3 other tests fail
   [559]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-ilk-650/igt@kms_psr@psr-sprite-plane-onoff.html
   [560]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-ilk-650/igt@kms_psr@psr-sprite-plane-onoff.html
    - bat-jsl-1:          NOTRUN -> [FAIL][561] +3 other tests fail
   [561]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-jsl-1/igt@kms_psr@psr-sprite-plane-onoff.html
    - fi-tgl-1115g4:      [SKIP][562] ([i915#9732]) -> [FAIL][563] +3 other tests fail
   [562]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-tgl-1115g4/igt@kms_psr@psr-sprite-plane-onoff.html
   [563]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-tgl-1115g4/igt@kms_psr@psr-sprite-plane-onoff.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - {bat-dg2-14}:       [SKIP][564] ([i915#3555]) -> [FAIL][565]
   [564]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@kms_setmode@basic-clone-single-crtc.html
   [565]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@kms_setmode@basic-clone-single-crtc.html
    - {bat-adls-6}:       [SKIP][566] ([i915#3555]) -> [FAIL][567]
   [566]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adls-6/igt@kms_setmode@basic-clone-single-crtc.html
   [567]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adls-6/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-flip:
    - {bat-dg2-14}:       [SKIP][568] ([i915#3708]) -> [FAIL][569]
   [568]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@prime_vgem@basic-fence-flip.html
   [569]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-fence-mmap:
    - {bat-dg2-14}:       [SKIP][570] ([i915#3708] / [i915#4077]) -> [FAIL][571] +1 other test fail
   [570]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@prime_vgem@basic-fence-mmap.html
   [571]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@prime_vgem@basic-fence-mmap.html

  * igt@prime_vgem@basic-fence-read:
    - {bat-adls-6}:       [SKIP][572] ([fdo#109295] / [i915#3291]) -> [FAIL][573] +2 other tests fail
   [572]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-adls-6/igt@prime_vgem@basic-fence-read.html
   [573]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-adls-6/igt@prime_vgem@basic-fence-read.html

  * igt@prime_vgem@basic-read:
    - {bat-dg2-14}:       [SKIP][574] ([i915#3291] / [i915#3708]) -> [FAIL][575] +2 other tests fail
   [574]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-14/igt@prime_vgem@basic-read.html
   [575]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-dg2-14/igt@prime_vgem@basic-read.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_lmem_swapping@verify-random:
    - bat-mtlp-6:         NOTRUN -> [SKIP][576] ([i915#4613]) +3 other tests skip
   [576]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-mtlp-6/igt@gem_lmem_swapping@verify-random.html
    - bat-jsl-1:          NOTRUN -> [SKIP][577] ([i915#4613]) +3 other tests skip
   [577]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/bat-jsl-1/igt@gem_lmem_swapping@verify-random.html

  * igt@i915_module_load@reload:
    - fi-kbl-7567u:       [PASS][578] -> [DMESG-FAIL][579] ([i915#180]) +1 other test dmesg-fail
   [578]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-7567u/igt@i915_module_load@reload.html
   [579]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-7567u/igt@i915_module_load@reload.html

  * igt@i915_selftest@live@sanitycheck:
    - fi-kbl-7567u:       [PASS][580] -> [DMESG-WARN][581] ([i915#9730]) +36 other tests dmesg-warn
   [580]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-7567u/igt@i915_selftest@live@sanitycheck.html
   [581]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-7567u/igt@i915_selftest@live@sanitycheck.html

  * igt@kms_pm_rpm@basic-pci-d3-state:
    - fi-kbl-7567u:       [PASS][582] -> [DMESG-WARN][583] ([i915#180] / [i915#8585]) +2 other tests dmesg-warn
   [582]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-7567u/igt@kms_pm_rpm@basic-pci-d3-state.html
   [583]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/fi-kbl-7567u/igt@kms_pm_rpm@basic-pci-d3-state.html

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

  [Intel XE#484]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/484
  [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
  [i915#10158]: https://gitlab.freedesktop.org/drm/intel/issues/10158
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1836]: https://gitlab.freedesktop.org/drm/intel/issues/1836
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3826]: https://gitlab.freedesktop.org/drm/intel/issues/3826
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/intel/issues/4215
  [i915#4303]: https://gitlab.freedesktop.org/drm/intel/issues/4303
  [i915#433]: https://gitlab.freedesktop.org/drm/intel/issues/433
  [i915#4342]: https://gitlab.freedesktop.org/drm/intel/issues/4342
  [i915#4550]: https://gitlab.freedesktop.org/drm/intel/issues/4550
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
  [i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#6077]: https://gitlab.freedesktop.org/drm/intel/issues/6077
  [i915#6078]: https://gitlab.freedesktop.org/drm/intel/issues/6078
  [i915#6093]: https://gitlab.freedesktop.org/drm/intel/issues/6093
  [i915#6094]: https://gitlab.freedesktop.org/drm/intel/issues/6094
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#7357]: https://gitlab.freedesktop.org/drm/intel/issues/7357
  [i915#8585]: https://gitlab.freedesktop.org/drm/intel/issues/8585
  [i915#9318]: https://gitlab.freedesktop.org/drm/intel/issues/9318
  [i915#9673]: https://gitlab.freedesktop.org/drm/intel/issues/9673
  [i915#9730]: https://gitlab.freedesktop.org/drm/intel/issues/9730
  [i915#9732]: https://gitlab.freedesktop.org/drm/intel/issues/9732
  [i915#9792]: https://gitlab.freedesktop.org/drm/intel/issues/9792
  [i915#9812]: https://gitlab.freedesktop.org/drm/intel/issues/9812
  [i915#9875]: https://gitlab.freedesktop.org/drm/intel/issues/9875
  [i915#9886]: https://gitlab.freedesktop.org/drm/intel/issues/9886
  [i915#9900]: https://gitlab.freedesktop.org/drm/intel/issues/9900


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7699 -> IGTPW_10617

  CI-20190529: 20190529
  CI_DRM_14193: c655e0fd280

== Logs ==

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

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

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

* ✗ CI.xeBAT: failure for igt_kmod and sysfs fixes
  2024-02-01  0:50 [PATCH i-g-t 0/3] igt_kmod and sysfs fixes Lucas De Marchi
                   ` (3 preceding siblings ...)
  2024-02-01  2:56 ` ✗ Fi.CI.BAT: failure for igt_kmod and sysfs fixes Patchwork
@ 2024-02-01  3:08 ` Patchwork
  2024-02-01  3:41 ` ✗ CI.xeBAT: failure for igt_kmod and sysfs fixes (rev2) Patchwork
  2024-02-01  4:05 ` ✗ Fi.CI.BAT: " Patchwork
  6 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2024-02-01  3:08 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev

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

== Series Details ==

Series: igt_kmod and sysfs fixes
URL   : https://patchwork.freedesktop.org/series/129398/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_7699_BAT -> XEIGTPW_10617_BAT
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with XEIGTPW_10617_BAT absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in XEIGTPW_10617_BAT, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (4 -> 4)
------------------------------

  No changes in participating hosts

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in XEIGTPW_10617_BAT:

### IGT changes ###

#### Possible regressions ####

  * igt@xe_sysfs_scheduler@job_timeout_ms-min-max@rcs:
    - bat-dg2-oem2:       [PASS][1] -> [FAIL][2] +17 other tests fail
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@xe_sysfs_scheduler@job_timeout_ms-min-max@rcs.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-dg2-oem2/igt@xe_sysfs_scheduler@job_timeout_ms-min-max@rcs.html

  * igt@xe_sysfs_scheduler@preempt_timeout_us-min-max@ccs:
    - bat-pvc-2:          [PASS][3] -> [FAIL][4] +8 other tests fail
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-pvc-2/igt@xe_sysfs_scheduler@preempt_timeout_us-min-max@ccs.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-pvc-2/igt@xe_sysfs_scheduler@preempt_timeout_us-min-max@ccs.html

  * igt@xe_sysfs_scheduler@preempt_timeout_us-min-max@vcs:
    - bat-atsm-2:         [PASS][5] -> [FAIL][6] +17 other tests fail
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-atsm-2/igt@xe_sysfs_scheduler@preempt_timeout_us-min-max@vcs.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-atsm-2/igt@xe_sysfs_scheduler@preempt_timeout_us-min-max@vcs.html

  * igt@xe_sysfs_scheduler@preempt_timeout_us-min-max@vecs:
    - bat-adlp-7:         [PASS][7] -> [FAIL][8] +14 other tests fail
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@xe_sysfs_scheduler@preempt_timeout_us-min-max@vecs.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-adlp-7/igt@xe_sysfs_scheduler@preempt_timeout_us-min-max@vecs.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * {igt@xe_gt_freq@freq_basic_api}:
    - bat-adlp-7:         [PASS][9] -> [FAIL][10] +2 other tests fail
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@xe_gt_freq@freq_basic_api.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-adlp-7/igt@xe_gt_freq@freq_basic_api.html
    - bat-pvc-2:          [PASS][11] -> [FAIL][12]
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-pvc-2/igt@xe_gt_freq@freq_basic_api.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-pvc-2/igt@xe_gt_freq@freq_basic_api.html
    - bat-dg2-oem2:       [PASS][13] -> [FAIL][14] +2 other tests fail
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@xe_gt_freq@freq_basic_api.html
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-dg2-oem2/igt@xe_gt_freq@freq_basic_api.html

  * {igt@xe_gt_freq@freq_fixed_idle}:
    - bat-atsm-2:         [PASS][15] -> [FAIL][16] +2 other tests fail
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-atsm-2/igt@xe_gt_freq@freq_fixed_idle.html
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-atsm-2/igt@xe_gt_freq@freq_fixed_idle.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_addfb_basic@invalid-set-prop:
    - bat-adlp-7:         [PASS][17] -> [SKIP][18] ([i915#6077]) +30 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@kms_addfb_basic@invalid-set-prop.html
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-adlp-7/igt@kms_addfb_basic@invalid-set-prop.html

  * igt@kms_flip@basic-flip-vs-dpms:
    - bat-adlp-7:         [PASS][19] -> [SKIP][20] ([Intel XE#1219]) +9 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@kms_flip@basic-flip-vs-dpms.html
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-adlp-7/igt@kms_flip@basic-flip-vs-dpms.html

  * igt@kms_force_connector_basic@force-connector-state:
    - bat-adlp-7:         [PASS][21] -> [SKIP][22] ([Intel XE#540]) +3 other tests skip
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@kms_force_connector_basic@force-connector-state.html
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-adlp-7/igt@kms_force_connector_basic@force-connector-state.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
    - bat-adlp-7:         [PASS][23] -> [SKIP][24] ([Intel XE#829]) +6 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-adlp-7/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html

  * igt@kms_prop_blob@basic:
    - bat-adlp-7:         [PASS][25] -> [SKIP][26] ([Intel XE#780])
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@kms_prop_blob@basic.html
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-adlp-7/igt@kms_prop_blob@basic.html

  
#### Possible fixes ####

  * igt@xe_module_load@load:
    - bat-pvc-2:          [SKIP][27] ([Intel XE#378]) -> [PASS][28]
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-pvc-2/igt@xe_module_load@load.html
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-pvc-2/igt@xe_module_load@load.html

  
#### Warnings ####

  * igt@kms_dsc@dsc-basic:
    - bat-adlp-7:         [SKIP][29] ([Intel XE#455]) -> [SKIP][30] ([Intel XE#1219])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@kms_dsc@dsc-basic.html
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-adlp-7/igt@kms_dsc@dsc-basic.html

  * igt@kms_frontbuffer_tracking@basic:
    - bat-adlp-7:         [DMESG-FAIL][31] ([Intel XE#1033]) -> [SKIP][32] ([Intel XE#783])
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@kms_frontbuffer_tracking@basic.html
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/bat-adlp-7/igt@kms_frontbuffer_tracking@basic.html

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

  [Intel XE#1033]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1033
  [Intel XE#1219]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1219
  [Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/540
  [Intel XE#780]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/780
  [Intel XE#783]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/783
  [Intel XE#829]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/829
  [i915#6077]: https://gitlab.freedesktop.org/drm/intel/issues/6077


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

  * IGT: IGT_7699 -> IGTPW_10617
  * Linux: xe-699-c655e0fd28045dbaa581d04bf7cc266eec1c3457 -> xe-712-cba66c6a2af4df1b9b420fbad0a9ac1e68f14030

  IGTPW_10617: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10617/index.html
  IGT_7699: 7699
  xe-699-c655e0fd28045dbaa581d04bf7cc266eec1c3457: c655e0fd28045dbaa581d04bf7cc266eec1c3457
  xe-712-cba66c6a2af4df1b9b420fbad0a9ac1e68f14030: cba66c6a2af4df1b9b420fbad0a9ac1e68f14030

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10617/index.html

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

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

* [PATCH i-g-t v2] lib/igt_sysfs: make sure to write empty strings
  2024-02-01  0:50 ` [PATCH i-g-t 2/3] lib/igt_sysfs: make sure to write empty strings Lucas De Marchi
@ 2024-02-01  3:11   ` Lucas De Marchi
  2024-02-01 13:12     ` Kamil Konieczny
  2024-02-01 13:15   ` [PATCH i-g-t 2/3] " Janusz Krzysztofik
  1 sibling, 1 reply; 22+ messages in thread
From: Lucas De Marchi @ 2024-02-01  3:11 UTC (permalink / raw)
  To: igt-dev; +Cc: Lucas De Marchi

	echo -n "" > /sys/module/<modulename>/parameters/<param>

doesn't really work as it will just create a open() + close() expecting
the file to be truncated. The same issue happens with igt as it will
stop writing when there are 0 chars to write. Special case the empty
string so it always write a '\0' and make sure igt_sysfs_set() accounts
for the extra null char.

Shell example:
	# echo -n "/foo" > /sys/module/firmware_class/parameters/path
	# cat /sys/module/firmware_class/parameters/path
	/foo
	# echo -n "" > /sys/module/firmware_class/parameters/path
	/foo
	# # make sure to actually write a \0:
	echo -ne "\0" > /sys/module/firmware_class/parameters/path
	# cat /sys/module/firmware_class/parameters/path
	/foo

Same thing happens when testing igt_sysfs_set():
       int dirfd = open("/sys/module/firmware_class/parameters", O_RDONLY);
       igt_sysfs_set(dirfd, "path", "");

Previously it was not really setting the param.

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 lib/igt_sysfs.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
index 567b4f6d5..64c2aaabb 100644
--- a/lib/igt_sysfs.c
+++ b/lib/igt_sysfs.c
@@ -406,7 +406,7 @@ int igt_sysfs_read(int dir, const char *attr, void *data, int len)
  */
 bool igt_sysfs_set(int dir, const char *attr, const char *value)
 {
-	int len = strlen(value);
+	int len = strlen(value) + 1;
 	return igt_sysfs_write(dir, attr, value, len) == len;
 }
 
@@ -513,8 +513,16 @@ int igt_sysfs_vprintf(int dir, const char *attr, const char *fmt, va_list ap)
 		return -errno;
 
 	va_copy(tmp, ap);
-	ret = vsnprintf(buf, sizeof(stack), fmt, tmp);
+	ret = vsnprintf(stack, sizeof(stack), fmt, tmp);
 	va_end(tmp);
+
+	/*
+	 * make sure to always issue a write() syscall, even if writing an empty string,
+	 * otherwise values in sysfs like module parameters don't really get overwritten
+	 */
+	if (igt_debug_on(ret == 0))
+		return igt_writen(fd, "", 1);
+
 	if (igt_debug_on(ret < 0))
 		return -EINVAL;
 
-- 
2.43.0


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

* ✗ CI.xeBAT: failure for igt_kmod and sysfs fixes (rev2)
  2024-02-01  0:50 [PATCH i-g-t 0/3] igt_kmod and sysfs fixes Lucas De Marchi
                   ` (4 preceding siblings ...)
  2024-02-01  3:08 ` ✗ CI.xeBAT: " Patchwork
@ 2024-02-01  3:41 ` Patchwork
  2024-02-01  4:05 ` ✗ Fi.CI.BAT: " Patchwork
  6 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2024-02-01  3:41 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev

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

== Series Details ==

Series: igt_kmod and sysfs fixes (rev2)
URL   : https://patchwork.freedesktop.org/series/129398/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_7699_BAT -> XEIGTPW_10618_BAT
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with XEIGTPW_10618_BAT absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in XEIGTPW_10618_BAT, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (4 -> 4)
------------------------------

  No changes in participating hosts

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in XEIGTPW_10618_BAT:

### IGT changes ###

#### Possible regressions ####

  * igt@xe_live_ktest@bo@xe_bo-xe_ccs_migrate_kunit:
    - bat-dg2-oem2:       [PASS][1] -> [SKIP][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@xe_live_ktest@bo@xe_bo-xe_ccs_migrate_kunit.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-dg2-oem2/igt@xe_live_ktest@bo@xe_bo-xe_ccs_migrate_kunit.html

  * igt@xe_module_load@load:
    - bat-dg2-oem2:       [PASS][3] -> [FAIL][4]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@xe_module_load@load.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-dg2-oem2/igt@xe_module_load@load.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * {igt@xe_exec_atomic@basic-dec-all}:
    - bat-dg2-oem2:       [PASS][5] -> [SKIP][6] +1 other test skip
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@xe_exec_atomic@basic-dec-all.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-dg2-oem2/igt@xe_exec_atomic@basic-dec-all.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@core_hotunplug@unbind-rebind:
    - bat-dg2-oem2:       [PASS][7] -> [SKIP][8] ([Intel XE#1136])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@core_hotunplug@unbind-rebind.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-dg2-oem2/igt@core_hotunplug@unbind-rebind.html

  * igt@kms_addfb_basic@bad-pitch-128:
    - bat-dg2-oem2:       [PASS][9] -> [SKIP][10] ([i915#2575]) +50 other tests skip
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@kms_addfb_basic@bad-pitch-128.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-dg2-oem2/igt@kms_addfb_basic@bad-pitch-128.html

  * igt@kms_addfb_basic@invalid-set-prop:
    - bat-adlp-7:         [PASS][11] -> [SKIP][12] ([i915#6077]) +30 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@kms_addfb_basic@invalid-set-prop.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-adlp-7/igt@kms_addfb_basic@invalid-set-prop.html

  * igt@kms_flip@basic-flip-vs-dpms:
    - bat-adlp-7:         [PASS][13] -> [SKIP][14] ([Intel XE#1219]) +9 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@kms_flip@basic-flip-vs-dpms.html
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-adlp-7/igt@kms_flip@basic-flip-vs-dpms.html

  * igt@kms_force_connector_basic@force-connector-state:
    - bat-adlp-7:         [PASS][15] -> [SKIP][16] ([Intel XE#540]) +3 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@kms_force_connector_basic@force-connector-state.html
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-adlp-7/igt@kms_force_connector_basic@force-connector-state.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
    - bat-adlp-7:         [PASS][17] -> [SKIP][18] ([Intel XE#829]) +6 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-adlp-7/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html

  * igt@kms_prop_blob@basic:
    - bat-adlp-7:         [PASS][19] -> [SKIP][20] ([Intel XE#780])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@kms_prop_blob@basic.html
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-adlp-7/igt@kms_prop_blob@basic.html

  * igt@xe_intel_bb@create-in-region:
    - bat-dg2-oem2:       [PASS][21] -> [SKIP][22] ([Intel XE#1130]) +147 other tests skip
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@xe_intel_bb@create-in-region.html
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-dg2-oem2/igt@xe_intel_bb@create-in-region.html

  * igt@xe_live_ktest@bo@xe_bo-xe_bo_evict_kunit:
    - bat-dg2-oem2:       [PASS][23] -> [SKIP][24] ([Intel XE#455]) +5 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@xe_live_ktest@bo@xe_bo-xe_bo_evict_kunit.html
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-dg2-oem2/igt@xe_live_ktest@bo@xe_bo-xe_bo_evict_kunit.html

  
#### Possible fixes ####

  * igt@xe_module_load@load:
    - bat-pvc-2:          [SKIP][25] ([Intel XE#378]) -> [PASS][26]
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-pvc-2/igt@xe_module_load@load.html
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-pvc-2/igt@xe_module_load@load.html

  
#### Warnings ####

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-dg2-oem2:       [SKIP][27] ([Intel XE#623]) -> [SKIP][28] ([i915#2575])
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-dg2-oem2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-dg2-oem2:       [SKIP][29] ([Intel XE#455]) -> [SKIP][30] ([Intel XE#1134])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@kms_dsc@dsc-basic.html
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-dg2-oem2/igt@kms_dsc@dsc-basic.html
    - bat-adlp-7:         [SKIP][31] ([Intel XE#455]) -> [SKIP][32] ([Intel XE#1219])
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@kms_dsc@dsc-basic.html
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-adlp-7/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - bat-dg2-oem2:       [SKIP][33] ([i915#5274]) -> [SKIP][34] ([i915#2575])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@kms_force_connector_basic@prune-stale-modes.html
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-dg2-oem2/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_frontbuffer_tracking@basic:
    - bat-adlp-7:         [DMESG-FAIL][35] ([Intel XE#1033]) -> [SKIP][36] ([Intel XE#783])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-adlp-7/igt@kms_frontbuffer_tracking@basic.html
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-adlp-7/igt@kms_frontbuffer_tracking@basic.html
    - bat-dg2-oem2:       [FAIL][37] ([Intel XE#608]) -> [SKIP][38] ([Intel XE#1134])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@kms_frontbuffer_tracking@basic.html
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-dg2-oem2/igt@kms_frontbuffer_tracking@basic.html

  * igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-invalidate:
    - bat-dg2-oem2:       [SKIP][39] ([Intel XE#288]) -> [SKIP][40] ([Intel XE#1130]) +32 other tests skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-invalidate.html
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-dg2-oem2/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-invalidate.html

  * igt@xe_huc_copy@huc_copy:
    - bat-dg2-oem2:       [SKIP][41] ([Intel XE#255]) -> [SKIP][42] ([Intel XE#1130])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@xe_huc_copy@huc_copy.html
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-dg2-oem2/igt@xe_huc_copy@huc_copy.html

  * igt@xe_pat@pat-index-xe2:
    - bat-dg2-oem2:       [SKIP][43] ([Intel XE#977]) -> [SKIP][44] ([Intel XE#1130])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@xe_pat@pat-index-xe2.html
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-dg2-oem2/igt@xe_pat@pat-index-xe2.html

  * igt@xe_pat@pat-index-xehpc:
    - bat-dg2-oem2:       [SKIP][45] ([Intel XE#979]) -> [SKIP][46] ([Intel XE#1130]) +1 other test skip
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7699/bat-dg2-oem2/igt@xe_pat@pat-index-xehpc.html
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/bat-dg2-oem2/igt@xe_pat@pat-index-xehpc.html

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

  [Intel XE#1033]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1033
  [Intel XE#1130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1130
  [Intel XE#1134]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1134
  [Intel XE#1136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1136
  [Intel XE#1219]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1219
  [Intel XE#255]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/255
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/540
  [Intel XE#608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/608
  [Intel XE#623]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/623
  [Intel XE#780]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/780
  [Intel XE#783]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/783
  [Intel XE#829]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/829
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274
  [i915#6077]: https://gitlab.freedesktop.org/drm/intel/issues/6077


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

  * IGT: IGT_7699 -> IGTPW_10618
  * Linux: xe-699-c655e0fd28045dbaa581d04bf7cc266eec1c3457 -> xe-712-cba66c6a2af4df1b9b420fbad0a9ac1e68f14030

  IGTPW_10618: 10618
  IGT_7699: 7699
  xe-699-c655e0fd28045dbaa581d04bf7cc266eec1c3457: c655e0fd28045dbaa581d04bf7cc266eec1c3457
  xe-712-cba66c6a2af4df1b9b420fbad0a9ac1e68f14030: cba66c6a2af4df1b9b420fbad0a9ac1e68f14030

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10618/index.html

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

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

* ✗ Fi.CI.BAT: failure for igt_kmod and sysfs fixes (rev2)
  2024-02-01  0:50 [PATCH i-g-t 0/3] igt_kmod and sysfs fixes Lucas De Marchi
                   ` (5 preceding siblings ...)
  2024-02-01  3:41 ` ✗ CI.xeBAT: failure for igt_kmod and sysfs fixes (rev2) Patchwork
@ 2024-02-01  4:05 ` Patchwork
  6 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2024-02-01  4:05 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev

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

== Series Details ==

Series: igt_kmod and sysfs fixes (rev2)
URL   : https://patchwork.freedesktop.org/series/129398/
State : failure

== Summary ==

CI Bug Log - changes from IGT_7699 -> IGTPW_10618
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_10618 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_10618, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

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

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

  Additional (1): bat-arls-1 
  Missing    (1): fi-snb-2520m 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_10618:

### IGT changes ###

#### Possible regressions ####

  * igt@i915_selftest@live@gt_timelines:
    - fi-glk-j4005:       [PASS][1] -> [DMESG-FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-glk-j4005/igt@i915_selftest@live@gt_timelines.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/fi-glk-j4005/igt@i915_selftest@live@gt_timelines.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@core_hotunplug@unbind-rebind:
    - {bat-arls-1}:       NOTRUN -> [SKIP][3] +144 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-arls-1/igt@core_hotunplug@unbind-rebind.html

  * igt@i915_selftest@live@objects:
    - {bat-arls-1}:       NOTRUN -> [DMESG-FAIL][4] +38 other tests dmesg-fail
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-arls-1/igt@i915_selftest@live@objects.html

  * igt@kms_chamelium_hpd@common-hpd-after-suspend:
    - {bat-dg2-13}:       [PASS][5] -> [FAIL][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/bat-dg2-13/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-dg2-13/igt@kms_chamelium_hpd@common-hpd-after-suspend.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@debugfs_test@basic-hwmon:
    - bat-jsl-1:          NOTRUN -> [SKIP][7] ([i915#9318])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-jsl-1/igt@debugfs_test@basic-hwmon.html

  * igt@gem_huc_copy@huc-copy:
    - bat-jsl-1:          NOTRUN -> [SKIP][8] ([i915#2190])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-jsl-1/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@verify-random:
    - bat-mtlp-6:         NOTRUN -> [SKIP][9] ([i915#4613]) +3 other tests skip
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-mtlp-6/igt@gem_lmem_swapping@verify-random.html
    - bat-jsl-1:          NOTRUN -> [SKIP][10] ([i915#4613]) +3 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-jsl-1/igt@gem_lmem_swapping@verify-random.html

  * igt@i915_module_load@reload:
    - fi-kbl-7567u:       [PASS][11] -> [DMESG-WARN][12] ([i915#180] / [i915#1982] / [i915#8585])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-7567u/igt@i915_module_load@reload.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/fi-kbl-7567u/igt@i915_module_load@reload.html

  * igt@i915_pm_rps@basic-api:
    - bat-mtlp-6:         NOTRUN -> [SKIP][13] ([i915#6621])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-mtlp-6/igt@i915_pm_rps@basic-api.html

  * igt@i915_selftest@live@sanitycheck:
    - fi-kbl-7567u:       [PASS][14] -> [DMESG-WARN][15] ([i915#9730]) +36 other tests dmesg-warn
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-7567u/igt@i915_selftest@live@sanitycheck.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/fi-kbl-7567u/igt@i915_selftest@live@sanitycheck.html

  * igt@kms_addfb_basic@invalid-set-prop:
    - fi-kbl-7567u:       [PASS][16] -> [DMESG-WARN][17] ([i915#8585]) +41 other tests dmesg-warn
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-7567u/igt@kms_addfb_basic@invalid-set-prop.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/fi-kbl-7567u/igt@kms_addfb_basic@invalid-set-prop.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - bat-jsl-1:          NOTRUN -> [SKIP][18] ([i915#4103]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-jsl-1/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-jsl-1:          NOTRUN -> [SKIP][19] ([i915#3555] / [i915#9886])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-jsl-1/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@force-load-detect:
    - bat-mtlp-6:         NOTRUN -> [SKIP][20] ([fdo#109285] / [i915#9792])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-mtlp-6/igt@kms_force_connector_basic@force-load-detect.html
    - bat-jsl-1:          NOTRUN -> [SKIP][21] ([fdo#109285])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-jsl-1/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - bat-mtlp-6:         NOTRUN -> [SKIP][22] ([i915#5274] / [i915#9792])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-mtlp-6/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_frontbuffer_tracking@basic:
    - bat-mtlp-6:         NOTRUN -> [SKIP][23] ([i915#4342] / [i915#5354] / [i915#9792])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-mtlp-6/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_pipe_crc_basic@hang-read-crc:
    - bat-mtlp-6:         NOTRUN -> [SKIP][24] ([i915#9792]) +6 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-mtlp-6/igt@kms_pipe_crc_basic@hang-read-crc.html

  * igt@kms_pm_backlight@basic-brightness:
    - bat-mtlp-6:         NOTRUN -> [SKIP][25] ([i915#5354] / [i915#9792])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-mtlp-6/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_pm_rpm@basic-pci-d3-state:
    - fi-kbl-7567u:       [PASS][26] -> [DMESG-WARN][27] ([i915#180] / [i915#8585]) +44 other tests dmesg-warn
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7699/fi-kbl-7567u/igt@kms_pm_rpm@basic-pci-d3-state.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/fi-kbl-7567u/igt@kms_pm_rpm@basic-pci-d3-state.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-jsl-1:          NOTRUN -> [SKIP][28] ([i915#3555])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-jsl-1/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-mtlp-6:         NOTRUN -> [SKIP][29] ([i915#3555] / [i915#8809] / [i915#9792])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-mtlp-6/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-flip:
    - bat-mtlp-6:         NOTRUN -> [SKIP][30] ([i915#3708] / [i915#9792])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-mtlp-6/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-fence-mmap:
    - bat-mtlp-6:         NOTRUN -> [SKIP][31] ([i915#3708] / [i915#4077]) +1 other test skip
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-mtlp-6/igt@prime_vgem@basic-fence-mmap.html

  * igt@prime_vgem@basic-write:
    - bat-mtlp-6:         NOTRUN -> [SKIP][32] ([i915#3708]) +2 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10618/bat-mtlp-6/igt@prime_vgem@basic-write.html

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

  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4342]: https://gitlab.freedesktop.org/drm/intel/issues/4342
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#8585]: https://gitlab.freedesktop.org/drm/intel/issues/8585
  [i915#8809]: https://gitlab.freedesktop.org/drm/intel/issues/8809
  [i915#9318]: https://gitlab.freedesktop.org/drm/intel/issues/9318
  [i915#9673]: https://gitlab.freedesktop.org/drm/intel/issues/9673
  [i915#9730]: https://gitlab.freedesktop.org/drm/intel/issues/9730
  [i915#9732]: https://gitlab.freedesktop.org/drm/intel/issues/9732
  [i915#9792]: https://gitlab.freedesktop.org/drm/intel/issues/9792
  [i915#9886]: https://gitlab.freedesktop.org/drm/intel/issues/9886


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7699 -> IGTPW_10618

  CI-20190529: 20190529
  CI_DRM_14193: c655e0fd28045dbaa581d04bf7cc266eec1c3457 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_10618: 10618
  IGT_7699: 7699

== Logs ==

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

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

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

* Re: [PATCH i-g-t 1/3] lib/igt_kmod: stop using KMOD_REMOVE_FORCE
  2024-02-01  0:50 ` [PATCH i-g-t 1/3] lib/igt_kmod: stop using KMOD_REMOVE_FORCE Lucas De Marchi
@ 2024-02-01 13:05   ` Kamil Konieczny
  2024-02-01 14:03     ` Lucas De Marchi
  0 siblings, 1 reply; 22+ messages in thread
From: Kamil Konieczny @ 2024-02-01 13:05 UTC (permalink / raw)
  To: igt-dev; +Cc: Lucas De Marchi, Janusz Krzysztofik

Hi Lucas,
On 2024-01-31 at 16:50:28 -0800, Lucas De Marchi wrote:

Missing commit description - please add one.

Do we really need this remove?

Regards,
Kamil

+cc Janusz Krzysztofik

> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
> ---
>  lib/igt_kmod.c                 | 42 ++++++++++++++++------------------
>  lib/igt_kmod.h                 |  2 +-
>  tests/intel/i915_module_load.c |  4 ++--
>  tests/kms_content_protection.c |  2 +-
>  tests/vgem_basic.c             |  2 +-
>  5 files changed, 25 insertions(+), 27 deletions(-)
> 
> diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
> index 5709138c0..2fed6ed54 100644
> --- a/lib/igt_kmod.c
> +++ b/lib/igt_kmod.c
> @@ -258,7 +258,7 @@ out:
>  	return err < 0 ? err : 0;
>  }
>  
> -static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
> +static int igt_kmod_unload_r(struct kmod_module *kmod)
>  {
>  #define MAX_TRIES	20
>  #define SLEEP_DURATION	500000
> @@ -272,7 +272,7 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
>  	holders = kmod_module_get_holders(kmod);
>  	kmod_list_foreach(pos, holders) {
>  		struct kmod_module *it = kmod_module_get_module(pos);
> -		err = igt_kmod_unload_r(it, flags);
> +		err = igt_kmod_unload_r(it);
>  		kmod_module_unref(it);
>  		if (err < 0)
>  			break;
> @@ -292,7 +292,7 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
>  	}
>  
>  	for (tries = 0; tries < MAX_TRIES; tries++) {
> -		err = kmod_module_remove_module(kmod, flags);
> +		err = kmod_module_remove_module(kmod, 0);
>  
>  		/* Only loop in the following cases */
>  		if (err != -EBUSY && err != -EAGAIN)
> @@ -326,8 +326,6 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
>  /**
>   * igt_kmod_unload:
>   * @mod_name: Module name.
> - * @flags: flags are passed directly to libkmod and can be:
> - * KMOD_REMOVE_FORCE or KMOD_REMOVE_NOWAIT.
>   *
>   * Returns: 0 in case of success or -errno otherwise.
>   *
> @@ -335,7 +333,7 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
>   *
>   */
>  int
> -igt_kmod_unload(const char *mod_name, unsigned int flags)
> +igt_kmod_unload(const char *mod_name)
>  {
>  	struct kmod_ctx *ctx = kmod_ctx();
>  	struct kmod_module *kmod;
> @@ -348,7 +346,7 @@ igt_kmod_unload(const char *mod_name, unsigned int flags)
>  		goto out;
>  	}
>  
> -	err = igt_kmod_unload_r(kmod, flags);
> +	err = igt_kmod_unload_r(kmod);
>  	if (err < 0) {
>  		igt_debug("Could not remove module %s (%s)\n", mod_name,
>  			  strerror(-err));
> @@ -525,7 +523,7 @@ static int igt_always_unload_audio_driver(char **who)
>  			if (ret)
>  				igt_warn("Failed to notify pipewire_pulse\n");
>  			kick_snd_hda_intel();
> -			ret = igt_kmod_unload(*m, 0);
> +			ret = igt_kmod_unload(*m);
>  			pipewire_pulse_stop_reserve();
>  			if (ret) {
>  				igt_warn("Could not unload audio driver %s\n", *m);
> @@ -583,7 +581,7 @@ int __igt_intel_driver_unload(char **who, const char *driver)
>  		if (!igt_kmod_is_loaded(*m))
>  			continue;
>  
> -		ret = igt_kmod_unload(*m, 0);
> +		ret = igt_kmod_unload(*m);
>  		if (ret) {
>  			if (who)
>  				*who = strdup_realloc(*who, *m);
> @@ -593,7 +591,7 @@ int __igt_intel_driver_unload(char **who, const char *driver)
>  	}
>  
>  	if (igt_kmod_is_loaded(driver)) {
> -		ret = igt_kmod_unload(driver, 0);
> +		ret = igt_kmod_unload(driver);
>  		if (ret) {
>  			if (who)
>  				*who = strdup_realloc(*who, driver);
> @@ -629,10 +627,10 @@ igt_intel_driver_unload(const char *driver)
>  	free(who);
>  
>  	if (igt_kmod_is_loaded("intel-gtt"))
> -		igt_kmod_unload("intel-gtt", 0);
> +		igt_kmod_unload("intel-gtt");
>  
> -	igt_kmod_unload("drm_kms_helper", 0);
> -	igt_kmod_unload("drm", 0);
> +	igt_kmod_unload("drm_kms_helper");
> +	igt_kmod_unload("drm");
>  
>  	if (igt_kmod_is_loaded("driver")) {
>  		igt_warn("%s.ko still loaded!\n", driver);
> @@ -682,7 +680,7 @@ igt_amdgpu_driver_unload(void)
>  	bind_fbcon(false);
>  
>  	if (igt_kmod_is_loaded("amdgpu")) {
> -		if (igt_kmod_unload("amdgpu", 0)) {
> +		if (igt_kmod_unload("amdgpu")) {
>  			igt_warn("Could not unload amdgpu\n");
>  			igt_kmod_list_loaded();
>  			igt_lsof("/dev/dri");
> @@ -690,8 +688,8 @@ igt_amdgpu_driver_unload(void)
>  		}
>  	}
>  
> -	igt_kmod_unload("drm_kms_helper", 0);
> -	igt_kmod_unload("drm", 0);
> +	igt_kmod_unload("drm_kms_helper");
> +	igt_kmod_unload("drm");
>  
>  	if (igt_kmod_is_loaded("amdgpu")) {
>  		igt_warn("amdgpu.ko still loaded!\n");
> @@ -1158,8 +1156,8 @@ static void kunit_get_tests(struct igt_list_head *tests,
>  		free(case_name);
>  	}
>  
> -	igt_skip_on(kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE));
> -	igt_skip_on(igt_kmod_unload("kunit", KMOD_REMOVE_FORCE));
> +	igt_skip_on(kmod_module_remove_module(tst->kmod, 0));
> +	igt_skip_on(igt_kmod_unload("kunit"));
>  
>  	igt_skip_on_f(err,
>  		      "KTAP parser failed while getting a list of test cases\n");
> @@ -1362,7 +1360,7 @@ void igt_kunit(const char *module_name, const char *name, const char *opts)
>  		 * unload may fail if kunit base module is not loaded,
>  		 * ignore any failures, we'll fail later if still loaded.
>  		 */
> -		igt_ignore_warn(igt_kmod_unload("kunit", KMOD_REMOVE_FORCE));
> +		igt_ignore_warn(igt_kmod_unload("kunit"));
>  
>  		igt_assert(igt_list_empty(&tests));
>  	}
> @@ -1395,7 +1393,7 @@ void igt_kunit(const char *module_name, const char *name, const char *opts)
>  		kunit_results_free(&tests, &suite_name, &case_name);
>  
>  		igt_ktest_end(&tst);
> -		igt_debug_on(igt_kmod_unload("kunit", KMOD_REMOVE_FORCE));
> +		igt_debug_on(igt_kmod_unload("kunit"));
>  	}
>  
>  	igt_ktest_fini(&tst);
> @@ -1438,7 +1436,7 @@ int igt_ktest_begin(struct igt_ktest *tst)
>  	if (strcmp(tst->module_name, "i915") == 0)
>  		igt_i915_driver_unload();
>  
> -	err = kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE);
> +	err = kmod_module_remove_module(tst->kmod, 0);
>  	igt_require(err == 0 || err == -ENOENT);
>  
>  	tst->kmsg = open("/dev/kmsg", O_RDONLY | O_NONBLOCK);
> @@ -1486,7 +1484,7 @@ int igt_kselftest_execute(struct igt_ktest *tst,
>  
>  void igt_ktest_end(struct igt_ktest *tst)
>  {
> -	kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE);
> +	kmod_module_remove_module(tst->kmod, 0);
>  	close(tst->kmsg);
>  }
>  
> diff --git a/lib/igt_kmod.h b/lib/igt_kmod.h
> index 990e5309d..efb46da12 100644
> --- a/lib/igt_kmod.h
> +++ b/lib/igt_kmod.h
> @@ -34,7 +34,7 @@ void igt_kmod_list_loaded(void);
>  bool igt_kmod_has_param(const char *mod_name, const char *param);
>  
>  int igt_kmod_load(const char *mod_name, const char *opts);
> -int igt_kmod_unload(const char *mod_name, unsigned int flags);
> +int igt_kmod_unload(const char *mod_name);
>  
>  int igt_audio_driver_unload(char **whom);
>  
> diff --git a/tests/intel/i915_module_load.c b/tests/intel/i915_module_load.c
> index 9fffe93d9..b72f3252a 100644
> --- a/tests/intel/i915_module_load.c
> +++ b/tests/intel/i915_module_load.c
> @@ -216,7 +216,7 @@ static void unload_or_die(const char *module_name)
>  
>  	/* should be unloaded, so expect a no-op */
>  	for (loop = 0;; loop++) {
> -		err = igt_kmod_unload(module_name, 0);
> +		err = igt_kmod_unload(module_name);
>  		if (err == -ENOENT) /* -ENOENT == unloaded already */
>  			err = 0;
>  		if (!err || loop >= 10)
> @@ -259,7 +259,7 @@ inject_fault(const char *module_name, const char *opt, int fault)
>  	igt_debug("Loaded '%s %s', result=%d\n", module_name, buf, fault);
>  
>  	if (strcmp(module_name, "i915")) /* XXX better ideas! */
> -		igt_kmod_unload(module_name, 0);
> +		igt_kmod_unload(module_name);
>  	else
>  		igt_i915_driver_unload();
>  
> diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
> index 3fc575634..6858b22e2 100644
> --- a/tests/kms_content_protection.c
> +++ b/tests/kms_content_protection.c
> @@ -396,7 +396,7 @@ static void test_content_protection_on_output(igt_output_t *output,
>  	}
>  
>  	if (data.cp_tests & CP_MEI_RELOAD) {
> -		igt_assert_f(!igt_kmod_unload("mei_hdcp", 0),
> +		igt_assert_f(!igt_kmod_unload("mei_hdcp"),
>  			     "mei_hdcp unload failed");
>  
>  		/* Expected to fail */
> diff --git a/tests/vgem_basic.c b/tests/vgem_basic.c
> index 63c5c0971..cfda908bc 100644
> --- a/tests/vgem_basic.c
> +++ b/tests/vgem_basic.c
> @@ -438,7 +438,7 @@ static void test_debugfs_read(int fd)
>  
>  static int module_unload(void)
>  {
> -	return igt_kmod_unload("vgem", 0);
> +	return igt_kmod_unload("vgem");
>  }
>  
>  static void test_unload(void)
> -- 
> 2.43.0
> 

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

* Re: [PATCH i-g-t 3/3] lib/igt_sysfs: Fix dir fd documentation
  2024-02-01  0:50 ` [PATCH i-g-t 3/3] lib/igt_sysfs: Fix dir fd documentation Lucas De Marchi
@ 2024-02-01 13:05   ` Kamil Konieczny
  0 siblings, 0 replies; 22+ messages in thread
From: Kamil Konieczny @ 2024-02-01 13:05 UTC (permalink / raw)
  To: igt-dev; +Cc: Lucas De Marchi

Hi Lucas,
On 2024-01-31 at 16:50:30 -0800, Lucas De Marchi wrote:
> These functions can be used for any path in sysfs, not exclusively to
> attributes under igt_sysfs_open(). In fact, they are already used to
> access other files like module parameters.
> 
> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>

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

> ---
>  lib/igt_sysfs.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
> index 814220ddb..bbcb16c81 100644
> --- a/lib/igt_sysfs.c
> +++ b/lib/igt_sysfs.c
> @@ -343,7 +343,7 @@ int igt_sysfs_get_num_gt(int device)
>  
>  /**
>   * igt_sysfs_write:
> - * @dir: directory for the device from igt_sysfs_open()
> + * @dir: sysfs directory
>   * @attr: name of the sysfs node to open
>   * @data: the block to write from
>   * @len: the length to write
> @@ -369,7 +369,7 @@ int igt_sysfs_write(int dir, const char *attr, const void *data, int len)
>  
>  /**
>   * igt_sysfs_read:
> - * @dir: directory for the device from igt_sysfs_open()
> + * @dir: sysfs directory
>   * @attr: name of the sysfs node to open
>   * @data: the block to read into
>   * @len: the maximum length to read
> @@ -395,7 +395,7 @@ int igt_sysfs_read(int dir, const char *attr, void *data, int len)
>  
>  /**
>   * igt_sysfs_set:
> - * @dir: directory for the device from igt_sysfs_open()
> + * @dir: sysfs directory
>   * @attr: name of the sysfs node to open
>   * @value: the string to write
>   *
> @@ -412,7 +412,7 @@ bool igt_sysfs_set(int dir, const char *attr, const char *value)
>  
>  /**
>   * igt_sysfs_get:
> - * @dir: directory for the device from igt_sysfs_open()
> + * @dir: sysfs directory
>   * @attr: name of the sysfs node to open
>   *
>   * This reads the value from the sysfs file.
> -- 
> 2.43.0
> 

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

* Re: [PATCH i-g-t v2] lib/igt_sysfs: make sure to write empty strings
  2024-02-01  3:11   ` [PATCH i-g-t v2] " Lucas De Marchi
@ 2024-02-01 13:12     ` Kamil Konieczny
  2024-02-01 13:59       ` Lucas De Marchi
  2024-02-07 16:18       ` Kamil Konieczny
  0 siblings, 2 replies; 22+ messages in thread
From: Kamil Konieczny @ 2024-02-01 13:12 UTC (permalink / raw)
  To: igt-dev; +Cc: Lucas De Marchi

Hi Lucas,
On 2024-01-31 at 19:11:56 -0800, Lucas De Marchi wrote:
> 	echo -n "" > /sys/module/<modulename>/parameters/<param>
> 
> doesn't really work as it will just create a open() + close() expecting
> the file to be truncated. The same issue happens with igt as it will
> stop writing when there are 0 chars to write. Special case the empty
> string so it always write a '\0' and make sure igt_sysfs_set() accounts
> for the extra null char.
> 
> Shell example:
> 	# echo -n "/foo" > /sys/module/firmware_class/parameters/path
> 	# cat /sys/module/firmware_class/parameters/path
> 	/foo
> 	# echo -n "" > /sys/module/firmware_class/parameters/path
> 	/foo
> 	# # make sure to actually write a \0:
> 	echo -ne "\0" > /sys/module/firmware_class/parameters/path
> 	# cat /sys/module/firmware_class/parameters/path
> 	/foo
> 
> Same thing happens when testing igt_sysfs_set():
>        int dirfd = open("/sys/module/firmware_class/parameters", O_RDONLY);
>        igt_sysfs_set(dirfd, "path", "");
> 
> Previously it was not really setting the param.
> 
> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
> ---
>  lib/igt_sysfs.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
> index 567b4f6d5..64c2aaabb 100644
> --- a/lib/igt_sysfs.c
> +++ b/lib/igt_sysfs.c
> @@ -406,7 +406,7 @@ int igt_sysfs_read(int dir, const char *attr, void *data, int len)
>   */
>  bool igt_sysfs_set(int dir, const char *attr, const char *value)
>  {
> -	int len = strlen(value);
> +	int len = strlen(value) + 1;
>  	return igt_sysfs_write(dir, attr, value, len) == len;

Why not adding write "\n" at end?

>  }
>  
> @@ -513,8 +513,16 @@ int igt_sysfs_vprintf(int dir, const char *attr, const char *fmt, va_list ap)
>  		return -errno;
>  
>  	va_copy(tmp, ap);
> -	ret = vsnprintf(buf, sizeof(stack), fmt, tmp);
> +	ret = vsnprintf(stack, sizeof(stack), fmt, tmp);
------------------- ^^^^^
Nice catch and looks like a separate bug fix, please send
as separate patch.

Regards,
Kamil

>  	va_end(tmp);
> +
> +	/*
> +	 * make sure to always issue a write() syscall, even if writing an empty string,
> +	 * otherwise values in sysfs like module parameters don't really get overwritten
> +	 */
> +	if (igt_debug_on(ret == 0))
> +		return igt_writen(fd, "", 1);
> +
>  	if (igt_debug_on(ret < 0))
>  		return -EINVAL;
>  
> -- 
> 2.43.0
> 

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

* Re: [PATCH i-g-t 2/3] lib/igt_sysfs: make sure to write empty strings
  2024-02-01  0:50 ` [PATCH i-g-t 2/3] lib/igt_sysfs: make sure to write empty strings Lucas De Marchi
  2024-02-01  3:11   ` [PATCH i-g-t v2] " Lucas De Marchi
@ 2024-02-01 13:15   ` Janusz Krzysztofik
  2024-02-01 13:51     ` Lucas De Marchi
  1 sibling, 1 reply; 22+ messages in thread
From: Janusz Krzysztofik @ 2024-02-01 13:15 UTC (permalink / raw)
  To: igt-dev, Lucas De Marchi; +Cc: Lucas De Marchi

On Thursday, 1 February 2024 01:50:29 CET Lucas De Marchi wrote:
> 	echo -n "" > /sys/module/<modulename>/parameters/<param>
> 
> doesn't really work as it will just create a open() + close() expecting
> the file to be truncated. The same issue happens with igt as it will
> stop writing when there are 0 chars to write. Special case the empty
> string so it always write a '\0' and make sure igt_sysfs_set() accounts
> for the extra null char.
> 
> Shell example:
> 	# echo -n "/foo" > /sys/module/firmware_class/parameters/path
> 	# cat /sys/module/firmware_class/parameters/path
> 	/foo
> 	# echo -n "" > /sys/module/firmware_class/parameters/path
> 	/foo
> 	# # make sure to actually write a \0:
> 	echo -ne "\0" > /sys/module/firmware_class/parameters/path
> 	# cat /sys/module/firmware_class/parameters/path
> 	/foo

Still not overwritten?  Isn't that a mistake?

> 
> Same thing happens when testing igt_sysfs_set():
>        int dirfd = open("/sys/module/firmware_class/parameters", O_RDONLY);
>        igt_sysfs_set(dirfd, "path", "");
> 
> Previously it was not really setting the param.
> 
> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
> ---
>  lib/igt_sysfs.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
> index 567b4f6d5..814220ddb 100644
> --- a/lib/igt_sysfs.c
> +++ b/lib/igt_sysfs.c
> @@ -406,7 +406,7 @@ int igt_sysfs_read(int dir, const char *attr, void 
*data, int len)
>   */
>  bool igt_sysfs_set(int dir, const char *attr, const char *value)
>  {
> -	int len = strlen(value);
> +	int len = strlen(value) + 1;
>  	return igt_sysfs_write(dir, attr, value, len) == len;
>  }
>  
> @@ -513,8 +513,16 @@ int igt_sysfs_vprintf(int dir, const char *attr, const 
char *fmt, va_list ap)
>  		return -errno;
>  
>  	va_copy(tmp, ap);
> -	ret = vsnprintf(buf, sizeof(stack), fmt, tmp);
> +	ret = vsnprintf(stack, sizeof(stack), fmt, tmp);

Looks not related.

>  	va_end(tmp);
> +
> +	/*
> +	 * make sure to always issue a write() syscall, even if writing an 
empty string,
> +	 * otherwise values in sysfs like module parameters don't really get 
overwritten
> +	 */
> +	if (igt_debug_on(ret = 0))
> +		return igt_writen(fd, "", 1);

I think users may know that an empty string is going to be written, then may 
expect return value of 0, not 1.  Also, what value should we return to the 
user if (unlikely) we got 0 from igt_writen()?  write(2) says: "If count is 
zero and fd refers to a file other than a regular file, the results are not 
specified."

While resolving two instances of one and the same issue, you use two different 
approaches:
1) always increase the number of characters to be written by 1 when writing 
   strings, so at least the terminating null byte is always written,
2) divert to a separate call to igt_writen() that writes just the terminating 
   null byte when the string to be written is empty.
While both methods can work correctly, I think it would be more clear if you 
selected one of them and stuck to it, or provide a justification if not.

Thanks,
Janusz


> +
>  	if (igt_debug_on(ret < 0))
>  		return -EINVAL;
>  
> 





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

* Re: Re: [PATCH i-g-t 2/3] lib/igt_sysfs: make sure to write empty strings
  2024-02-01 13:15   ` [PATCH i-g-t 2/3] " Janusz Krzysztofik
@ 2024-02-01 13:51     ` Lucas De Marchi
  2024-02-06 15:25       ` Janusz Krzysztofik
  0 siblings, 1 reply; 22+ messages in thread
From: Lucas De Marchi @ 2024-02-01 13:51 UTC (permalink / raw)
  To: Janusz Krzysztofik; +Cc: igt-dev

On Thu, Feb 01, 2024 at 02:15:53PM +0100, Janusz Krzysztofik wrote:
>On Thursday, 1 February 2024 01:50:29 CET Lucas De Marchi wrote:
>> 	echo -n "" > /sys/module/<modulename>/parameters/<param>
>>
>> doesn't really work as it will just create a open() + close() expecting
>> the file to be truncated. The same issue happens with igt as it will
>> stop writing when there are 0 chars to write. Special case the empty
>> string so it always write a '\0' and make sure igt_sysfs_set() accounts
>> for the extra null char.
>>
>> Shell example:
>> 	# echo -n "/foo" > /sys/module/firmware_class/parameters/path
>> 	# cat /sys/module/firmware_class/parameters/path
>> 	/foo
>> 	# echo -n "" > /sys/module/firmware_class/parameters/path
>> 	/foo
>> 	# # make sure to actually write a \0:
>> 	echo -ne "\0" > /sys/module/firmware_class/parameters/path
>> 	# cat /sys/module/firmware_class/parameters/path
>> 	/foo
>
>Still not overwritten?  Isn't that a mistake?

in the commit message. Yes. It was supposed to be show the real effect
of that, i.e. we do write  "".


>
>>
>> Same thing happens when testing igt_sysfs_set():
>>        int dirfd = open("/sys/module/firmware_class/parameters", O_RDONLY);
>>        igt_sysfs_set(dirfd, "path", "");
>>
>> Previously it was not really setting the param.
>>
>> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>> ---
>>  lib/igt_sysfs.c | 12 ++++++++++--
>>  1 file changed, 10 insertions(+), 2 deletions(-)
>>
>> diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
>> index 567b4f6d5..814220ddb 100644
>> --- a/lib/igt_sysfs.c
>> +++ b/lib/igt_sysfs.c
>> @@ -406,7 +406,7 @@ int igt_sysfs_read(int dir, const char *attr, void
>*data, int len)
>>   */
>>  bool igt_sysfs_set(int dir, const char *attr, const char *value)
>>  {
>> -	int len = strlen(value);
>> +	int len = strlen(value) + 1;
>>  	return igt_sysfs_write(dir, attr, value, len) == len;
>>  }
>>
>> @@ -513,8 +513,16 @@ int igt_sysfs_vprintf(int dir, const char *attr, const
>char *fmt, va_list ap)
>>  		return -errno;
>>
>>  	va_copy(tmp, ap);
>> -	ret = vsnprintf(buf, sizeof(stack), fmt, tmp);
>> +	ret = vsnprintf(stack, sizeof(stack), fmt, tmp);
>
>Looks not related.

I will add a line in the commit message for this sneaking in.

>
>>  	va_end(tmp);
>> +
>> +	/*
>> +	 * make sure to always issue a write() syscall, even if writing an
>empty string,
>> +	 * otherwise values in sysfs like module parameters don't really get
>overwritten
>> +	 */
>> +	if (igt_debug_on(ret = 0))
>> +		return igt_writen(fd, "", 1);
>
>I think users may know that an empty string is going to be written, then may
>expect return value of 0, not 1.  Also, what value should we return to the
>user if (unlikely) we got 0 from igt_writen()?  write(2) says: "If count is
>zero and fd refers to a file other than a regular file, the results are not
>specified."

we are passing 1 so we don't fall in the case of passing 0 that write(2)
refers to. If the return value is 0, then we return whatever write()
returned and the user deals with it like it had done before.

>
>While resolving two instances of one and the same issue, you use two different
>approaches:
>1) always increase the number of characters to be written by 1 when writing
>   strings, so at least the terminating null byte is always written,
>2) divert to a separate call to igt_writen() that writes just the terminating
>   null byte when the string to be written is empty.

if you look with a different angle, both are actually passing len + 1.
One goes directly to igt_written() vs igt_sysfs_write() because of the
arguments it has at hand and is consistent with the layer the specific
function is operating on.

	if (igt_debug_on(ret == 0))
		return igt_writen(fd, stack, ret + 1);

to be similar would equally work, but slightly harder to understand
what's going on.

Lucas De Marchi

>While both methods can work correctly, I think it would be more clear if you
>selected one of them and stuck to it, or provide a justification if not.


>
>Thanks,
>Janusz
>
>
>> +
>>  	if (igt_debug_on(ret < 0))
>>  		return -EINVAL;
>>
>>
>
>
>
>

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

* Re: Re: [PATCH i-g-t v2] lib/igt_sysfs: make sure to write empty strings
  2024-02-01 13:12     ` Kamil Konieczny
@ 2024-02-01 13:59       ` Lucas De Marchi
  2024-02-07 16:18       ` Kamil Konieczny
  1 sibling, 0 replies; 22+ messages in thread
From: Lucas De Marchi @ 2024-02-01 13:59 UTC (permalink / raw)
  To: Kamil Konieczny, igt-dev, Lucas De Marchi

On Thu, Feb 01, 2024 at 02:12:04PM +0100, Kamil Konieczny wrote:
>Hi Lucas,
>On 2024-01-31 at 19:11:56 -0800, Lucas De Marchi wrote:
>> 	echo -n "" > /sys/module/<modulename>/parameters/<param>
>>
>> doesn't really work as it will just create a open() + close() expecting
>> the file to be truncated. The same issue happens with igt as it will
>> stop writing when there are 0 chars to write. Special case the empty
>> string so it always write a '\0' and make sure igt_sysfs_set() accounts
>> for the extra null char.
>>
>> Shell example:
>> 	# echo -n "/foo" > /sys/module/firmware_class/parameters/path
>> 	# cat /sys/module/firmware_class/parameters/path
>> 	/foo
>> 	# echo -n "" > /sys/module/firmware_class/parameters/path
>> 	/foo
>> 	# # make sure to actually write a \0:
>> 	echo -ne "\0" > /sys/module/firmware_class/parameters/path
>> 	# cat /sys/module/firmware_class/parameters/path
>> 	/foo
>>
>> Same thing happens when testing igt_sysfs_set():
>>        int dirfd = open("/sys/module/firmware_class/parameters", O_RDONLY);
>>        igt_sysfs_set(dirfd, "path", "");
>>
>> Previously it was not really setting the param.
>>
>> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>> ---
>>  lib/igt_sysfs.c | 12 ++++++++++--
>>  1 file changed, 10 insertions(+), 2 deletions(-)
>>
>> diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
>> index 567b4f6d5..64c2aaabb 100644
>> --- a/lib/igt_sysfs.c
>> +++ b/lib/igt_sysfs.c
>> @@ -406,7 +406,7 @@ int igt_sysfs_read(int dir, const char *attr, void *data, int len)
>>   */
>>  bool igt_sysfs_set(int dir, const char *attr, const char *value)
>>  {
>> -	int len = strlen(value);
>> +	int len = strlen(value) + 1;
>>  	return igt_sysfs_write(dir, attr, value, len) == len;
>
>Why not adding write "\n" at end?

because it's not what we want. On the kernel side it will have different
effect depending what sysfs file you are writing to. "foo\n" != "foo"
and sysfs won't strip '\n' (while it always guarantee a \0 at the end).

Try this and see the extra newline at the end as part of the value:

	# echo -ne "/foo\n" > /sys/module/firmware_class/parameters/path
	# hexdump /sys/module/firmware_class/parameters/path
	0000000 662f 6f6f 0a0a                         
	0000006
	# echo -ne "/foo" > /sys/module/firmware_class/parameters/path
	# hexdump /sys/module/firmware_class/parameters/path
	0000000 662f 6f6f 000a                         
	0000005
	# echo -ne "\n" > /sys/module/firmware_class/parameters/path
	# hexdump /sys/module/firmware_class/parameters/path
	0000000 0a0a                                   
	0000002
	# echo -ne "\0" > /sys/module/firmware_class/parameters/path
	# hexdump /sys/module/firmware_class/parameters/path
	0000000 000a                                   
	0000001



>
>>  }
>>
>> @@ -513,8 +513,16 @@ int igt_sysfs_vprintf(int dir, const char *attr, const char *fmt, va_list ap)
>>  		return -errno;
>>
>>  	va_copy(tmp, ap);
>> -	ret = vsnprintf(buf, sizeof(stack), fmt, tmp);
>> +	ret = vsnprintf(stack, sizeof(stack), fmt, tmp);
>------------------- ^^^^^
>Nice catch and looks like a separate bug fix, please send
>as separate patch.

it's not really a bug as at this point in the code they point to the
same thing. However it is a bug waiting to appear.

Lucas De Marchi

>
>Regards,
>Kamil
>
>>  	va_end(tmp);
>> +
>> +	/*
>> +	 * make sure to always issue a write() syscall, even if writing an empty string,
>> +	 * otherwise values in sysfs like module parameters don't really get overwritten
>> +	 */
>> +	if (igt_debug_on(ret == 0))
>> +		return igt_writen(fd, "", 1);
>> +
>>  	if (igt_debug_on(ret < 0))
>>  		return -EINVAL;
>>
>> --
>> 2.43.0
>>

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

* Re: Re: [PATCH i-g-t 1/3] lib/igt_kmod: stop using KMOD_REMOVE_FORCE
  2024-02-01 13:05   ` Kamil Konieczny
@ 2024-02-01 14:03     ` Lucas De Marchi
  2024-02-06 17:27       ` Kamil Konieczny
  0 siblings, 1 reply; 22+ messages in thread
From: Lucas De Marchi @ 2024-02-01 14:03 UTC (permalink / raw)
  To: Kamil Konieczny, igt-dev, Janusz Krzysztofik

On Thu, Feb 01, 2024 at 02:05:10PM +0100, Kamil Konieczny wrote:
>Hi Lucas,
>On 2024-01-31 at 16:50:28 -0800, Lucas De Marchi wrote:
>
>Missing commit description - please add one.
>
>Do we really need this remove?

oops, I was supposed to add the explanation why that I used in a
patch review and forgot to paste.

I'd swap the question:  do we really need the flag? No, we never need
the flag. If the kernel ever resorts to honoring the flag we will
have a tainted kernel, potential leaks and memory corruption. It's
better to just handle the error returned by libkmod and fix the root
cause.

Lucas De Marchi

>
>Regards,
>Kamil
>
>+cc Janusz Krzysztofik
>
>> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>> ---
>>  lib/igt_kmod.c                 | 42 ++++++++++++++++------------------
>>  lib/igt_kmod.h                 |  2 +-
>>  tests/intel/i915_module_load.c |  4 ++--
>>  tests/kms_content_protection.c |  2 +-
>>  tests/vgem_basic.c             |  2 +-
>>  5 files changed, 25 insertions(+), 27 deletions(-)
>>
>> diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
>> index 5709138c0..2fed6ed54 100644
>> --- a/lib/igt_kmod.c
>> +++ b/lib/igt_kmod.c
>> @@ -258,7 +258,7 @@ out:
>>  	return err < 0 ? err : 0;
>>  }
>>
>> -static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
>> +static int igt_kmod_unload_r(struct kmod_module *kmod)
>>  {
>>  #define MAX_TRIES	20
>>  #define SLEEP_DURATION	500000
>> @@ -272,7 +272,7 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
>>  	holders = kmod_module_get_holders(kmod);
>>  	kmod_list_foreach(pos, holders) {
>>  		struct kmod_module *it = kmod_module_get_module(pos);
>> -		err = igt_kmod_unload_r(it, flags);
>> +		err = igt_kmod_unload_r(it);
>>  		kmod_module_unref(it);
>>  		if (err < 0)
>>  			break;
>> @@ -292,7 +292,7 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
>>  	}
>>
>>  	for (tries = 0; tries < MAX_TRIES; tries++) {
>> -		err = kmod_module_remove_module(kmod, flags);
>> +		err = kmod_module_remove_module(kmod, 0);
>>
>>  		/* Only loop in the following cases */
>>  		if (err != -EBUSY && err != -EAGAIN)
>> @@ -326,8 +326,6 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
>>  /**
>>   * igt_kmod_unload:
>>   * @mod_name: Module name.
>> - * @flags: flags are passed directly to libkmod and can be:
>> - * KMOD_REMOVE_FORCE or KMOD_REMOVE_NOWAIT.
>>   *
>>   * Returns: 0 in case of success or -errno otherwise.
>>   *
>> @@ -335,7 +333,7 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
>>   *
>>   */
>>  int
>> -igt_kmod_unload(const char *mod_name, unsigned int flags)
>> +igt_kmod_unload(const char *mod_name)
>>  {
>>  	struct kmod_ctx *ctx = kmod_ctx();
>>  	struct kmod_module *kmod;
>> @@ -348,7 +346,7 @@ igt_kmod_unload(const char *mod_name, unsigned int flags)
>>  		goto out;
>>  	}
>>
>> -	err = igt_kmod_unload_r(kmod, flags);
>> +	err = igt_kmod_unload_r(kmod);
>>  	if (err < 0) {
>>  		igt_debug("Could not remove module %s (%s)\n", mod_name,
>>  			  strerror(-err));
>> @@ -525,7 +523,7 @@ static int igt_always_unload_audio_driver(char **who)
>>  			if (ret)
>>  				igt_warn("Failed to notify pipewire_pulse\n");
>>  			kick_snd_hda_intel();
>> -			ret = igt_kmod_unload(*m, 0);
>> +			ret = igt_kmod_unload(*m);
>>  			pipewire_pulse_stop_reserve();
>>  			if (ret) {
>>  				igt_warn("Could not unload audio driver %s\n", *m);
>> @@ -583,7 +581,7 @@ int __igt_intel_driver_unload(char **who, const char *driver)
>>  		if (!igt_kmod_is_loaded(*m))
>>  			continue;
>>
>> -		ret = igt_kmod_unload(*m, 0);
>> +		ret = igt_kmod_unload(*m);
>>  		if (ret) {
>>  			if (who)
>>  				*who = strdup_realloc(*who, *m);
>> @@ -593,7 +591,7 @@ int __igt_intel_driver_unload(char **who, const char *driver)
>>  	}
>>
>>  	if (igt_kmod_is_loaded(driver)) {
>> -		ret = igt_kmod_unload(driver, 0);
>> +		ret = igt_kmod_unload(driver);
>>  		if (ret) {
>>  			if (who)
>>  				*who = strdup_realloc(*who, driver);
>> @@ -629,10 +627,10 @@ igt_intel_driver_unload(const char *driver)
>>  	free(who);
>>
>>  	if (igt_kmod_is_loaded("intel-gtt"))
>> -		igt_kmod_unload("intel-gtt", 0);
>> +		igt_kmod_unload("intel-gtt");
>>
>> -	igt_kmod_unload("drm_kms_helper", 0);
>> -	igt_kmod_unload("drm", 0);
>> +	igt_kmod_unload("drm_kms_helper");
>> +	igt_kmod_unload("drm");
>>
>>  	if (igt_kmod_is_loaded("driver")) {
>>  		igt_warn("%s.ko still loaded!\n", driver);
>> @@ -682,7 +680,7 @@ igt_amdgpu_driver_unload(void)
>>  	bind_fbcon(false);
>>
>>  	if (igt_kmod_is_loaded("amdgpu")) {
>> -		if (igt_kmod_unload("amdgpu", 0)) {
>> +		if (igt_kmod_unload("amdgpu")) {
>>  			igt_warn("Could not unload amdgpu\n");
>>  			igt_kmod_list_loaded();
>>  			igt_lsof("/dev/dri");
>> @@ -690,8 +688,8 @@ igt_amdgpu_driver_unload(void)
>>  		}
>>  	}
>>
>> -	igt_kmod_unload("drm_kms_helper", 0);
>> -	igt_kmod_unload("drm", 0);
>> +	igt_kmod_unload("drm_kms_helper");
>> +	igt_kmod_unload("drm");
>>
>>  	if (igt_kmod_is_loaded("amdgpu")) {
>>  		igt_warn("amdgpu.ko still loaded!\n");
>> @@ -1158,8 +1156,8 @@ static void kunit_get_tests(struct igt_list_head *tests,
>>  		free(case_name);
>>  	}
>>
>> -	igt_skip_on(kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE));
>> -	igt_skip_on(igt_kmod_unload("kunit", KMOD_REMOVE_FORCE));
>> +	igt_skip_on(kmod_module_remove_module(tst->kmod, 0));
>> +	igt_skip_on(igt_kmod_unload("kunit"));
>>
>>  	igt_skip_on_f(err,
>>  		      "KTAP parser failed while getting a list of test cases\n");
>> @@ -1362,7 +1360,7 @@ void igt_kunit(const char *module_name, const char *name, const char *opts)
>>  		 * unload may fail if kunit base module is not loaded,
>>  		 * ignore any failures, we'll fail later if still loaded.
>>  		 */
>> -		igt_ignore_warn(igt_kmod_unload("kunit", KMOD_REMOVE_FORCE));
>> +		igt_ignore_warn(igt_kmod_unload("kunit"));
>>
>>  		igt_assert(igt_list_empty(&tests));
>>  	}
>> @@ -1395,7 +1393,7 @@ void igt_kunit(const char *module_name, const char *name, const char *opts)
>>  		kunit_results_free(&tests, &suite_name, &case_name);
>>
>>  		igt_ktest_end(&tst);
>> -		igt_debug_on(igt_kmod_unload("kunit", KMOD_REMOVE_FORCE));
>> +		igt_debug_on(igt_kmod_unload("kunit"));
>>  	}
>>
>>  	igt_ktest_fini(&tst);
>> @@ -1438,7 +1436,7 @@ int igt_ktest_begin(struct igt_ktest *tst)
>>  	if (strcmp(tst->module_name, "i915") == 0)
>>  		igt_i915_driver_unload();
>>
>> -	err = kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE);
>> +	err = kmod_module_remove_module(tst->kmod, 0);
>>  	igt_require(err == 0 || err == -ENOENT);
>>
>>  	tst->kmsg = open("/dev/kmsg", O_RDONLY | O_NONBLOCK);
>> @@ -1486,7 +1484,7 @@ int igt_kselftest_execute(struct igt_ktest *tst,
>>
>>  void igt_ktest_end(struct igt_ktest *tst)
>>  {
>> -	kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE);
>> +	kmod_module_remove_module(tst->kmod, 0);
>>  	close(tst->kmsg);
>>  }
>>
>> diff --git a/lib/igt_kmod.h b/lib/igt_kmod.h
>> index 990e5309d..efb46da12 100644
>> --- a/lib/igt_kmod.h
>> +++ b/lib/igt_kmod.h
>> @@ -34,7 +34,7 @@ void igt_kmod_list_loaded(void);
>>  bool igt_kmod_has_param(const char *mod_name, const char *param);
>>
>>  int igt_kmod_load(const char *mod_name, const char *opts);
>> -int igt_kmod_unload(const char *mod_name, unsigned int flags);
>> +int igt_kmod_unload(const char *mod_name);
>>
>>  int igt_audio_driver_unload(char **whom);
>>
>> diff --git a/tests/intel/i915_module_load.c b/tests/intel/i915_module_load.c
>> index 9fffe93d9..b72f3252a 100644
>> --- a/tests/intel/i915_module_load.c
>> +++ b/tests/intel/i915_module_load.c
>> @@ -216,7 +216,7 @@ static void unload_or_die(const char *module_name)
>>
>>  	/* should be unloaded, so expect a no-op */
>>  	for (loop = 0;; loop++) {
>> -		err = igt_kmod_unload(module_name, 0);
>> +		err = igt_kmod_unload(module_name);
>>  		if (err == -ENOENT) /* -ENOENT == unloaded already */
>>  			err = 0;
>>  		if (!err || loop >= 10)
>> @@ -259,7 +259,7 @@ inject_fault(const char *module_name, const char *opt, int fault)
>>  	igt_debug("Loaded '%s %s', result=%d\n", module_name, buf, fault);
>>
>>  	if (strcmp(module_name, "i915")) /* XXX better ideas! */
>> -		igt_kmod_unload(module_name, 0);
>> +		igt_kmod_unload(module_name);
>>  	else
>>  		igt_i915_driver_unload();
>>
>> diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
>> index 3fc575634..6858b22e2 100644
>> --- a/tests/kms_content_protection.c
>> +++ b/tests/kms_content_protection.c
>> @@ -396,7 +396,7 @@ static void test_content_protection_on_output(igt_output_t *output,
>>  	}
>>
>>  	if (data.cp_tests & CP_MEI_RELOAD) {
>> -		igt_assert_f(!igt_kmod_unload("mei_hdcp", 0),
>> +		igt_assert_f(!igt_kmod_unload("mei_hdcp"),
>>  			     "mei_hdcp unload failed");
>>
>>  		/* Expected to fail */
>> diff --git a/tests/vgem_basic.c b/tests/vgem_basic.c
>> index 63c5c0971..cfda908bc 100644
>> --- a/tests/vgem_basic.c
>> +++ b/tests/vgem_basic.c
>> @@ -438,7 +438,7 @@ static void test_debugfs_read(int fd)
>>
>>  static int module_unload(void)
>>  {
>> -	return igt_kmod_unload("vgem", 0);
>> +	return igt_kmod_unload("vgem");
>>  }
>>
>>  static void test_unload(void)
>> --
>> 2.43.0
>>

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

* Re: [PATCH i-g-t 2/3] lib/igt_sysfs: make sure to write empty strings
  2024-02-01 13:51     ` Lucas De Marchi
@ 2024-02-06 15:25       ` Janusz Krzysztofik
  2024-02-06 17:13         ` Lucas De Marchi
  0 siblings, 1 reply; 22+ messages in thread
From: Janusz Krzysztofik @ 2024-02-06 15:25 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev

On Thursday, 1 February 2024 14:51:26 CET Lucas De Marchi wrote:
> On Thu, Feb 01, 2024 at 02:15:53PM +0100, Janusz Krzysztofik wrote:
> >On Thursday, 1 February 2024 01:50:29 CET Lucas De Marchi wrote:
> >> 	echo -n "" > /sys/module/<modulename>/parameters/<param>
> >>
> >> doesn't really work as it will just create a open() + close() expecting
> >> the file to be truncated. The same issue happens with igt as it will
> >> stop writing when there are 0 chars to write. Special case the empty
> >> string so it always write a '\0' and make sure igt_sysfs_set() accounts
> >> for the extra null char.
> >>
> >> Shell example:
> >> 	# echo -n "/foo" > /sys/module/firmware_class/parameters/path
> >> 	# cat /sys/module/firmware_class/parameters/path
> >> 	/foo
> >> 	# echo -n "" > /sys/module/firmware_class/parameters/path
> >> 	/foo
> >> 	# # make sure to actually write a \0:
> >> 	echo -ne "\0" > /sys/module/firmware_class/parameters/path
> >> 	# cat /sys/module/firmware_class/parameters/path
> >> 	/foo
> >
> >Still not overwritten?  Isn't that a mistake?
> 
> in the commit message. Yes. It was supposed to be show the real effect
> of that, i.e. we do write  "".
> 
> 
> >
> >>
> >> Same thing happens when testing igt_sysfs_set():
> >>        int dirfd = open("/sys/module/firmware_class/parameters", O_RDONLY);
> >>        igt_sysfs_set(dirfd, "path", "");
> >>
> >> Previously it was not really setting the param.
> >>
> >> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
> >> ---
> >>  lib/igt_sysfs.c | 12 ++++++++++--
> >>  1 file changed, 10 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
> >> index 567b4f6d5..814220ddb 100644
> >> --- a/lib/igt_sysfs.c
> >> +++ b/lib/igt_sysfs.c
> >> @@ -406,7 +406,7 @@ int igt_sysfs_read(int dir, const char *attr, void
> >*data, int len)
> >>   */
> >>  bool igt_sysfs_set(int dir, const char *attr, const char *value)
> >>  {
> >> -	int len = strlen(value);
> >> +	int len = strlen(value) + 1;
> >>  	return igt_sysfs_write(dir, attr, value, len) == len;
> >>  }
> >>

If you agree on limiting this patch to the above chunk and dropping below 
changes to igt_sysfs_vprintf() which look problematic to me then, with the 
above discussed mistake corrected, you have my

Reviewed-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>

Thanks,
Janusz

> >> @@ -513,8 +513,16 @@ int igt_sysfs_vprintf(int dir, const char *attr, const
> >char *fmt, va_list ap)
> >>  		return -errno;
> >>
> >>  	va_copy(tmp, ap);
> >> -	ret = vsnprintf(buf, sizeof(stack), fmt, tmp);
> >> +	ret = vsnprintf(stack, sizeof(stack), fmt, tmp);
> >
> >Looks not related.
> 
> I will add a line in the commit message for this sneaking in.
> 
> >
> >>  	va_end(tmp);
> >> +
> >> +	/*
> >> +	 * make sure to always issue a write() syscall, even if writing an
> >empty string,
> >> +	 * otherwise values in sysfs like module parameters don't really get
> >overwritten
> >> +	 */
> >> +	if (igt_debug_on(ret = 0))
> >> +		return igt_writen(fd, "", 1);
> >
> >I think users may know that an empty string is going to be written, then may
> >expect return value of 0, not 1.  Also, what value should we return to the
> >user if (unlikely) we got 0 from igt_writen()?  write(2) says: "If count is
> >zero and fd refers to a file other than a regular file, the results are not
> >specified."
> 
> we are passing 1 so we don't fall in the case of passing 0 that write(2)
> refers to. If the return value is 0, then we return whatever write()
> returned and the user deals with it like it had done before.
> 
> >
> >While resolving two instances of one and the same issue, you use two different
> >approaches:
> >1) always increase the number of characters to be written by 1 when writing
> >   strings, so at least the terminating null byte is always written,
> >2) divert to a separate call to igt_writen() that writes just the terminating
> >   null byte when the string to be written is empty.
> 
> if you look with a different angle, both are actually passing len + 1.
> One goes directly to igt_written() vs igt_sysfs_write() because of the
> arguments it has at hand and is consistent with the layer the specific
> function is operating on.
> 
> 	if (igt_debug_on(ret == 0))
> 		return igt_writen(fd, stack, ret + 1);
> 
> to be similar would equally work, but slightly harder to understand
> what's going on.
> 
> Lucas De Marchi
> 
> >While both methods can work correctly, I think it would be more clear if you
> >selected one of them and stuck to it, or provide a justification if not.
> 
> 
> >
> >Thanks,
> >Janusz
> >
> >
> >> +
> >>  	if (igt_debug_on(ret < 0))
> >>  		return -EINVAL;
> >>
> >>
> >
> >
> >
> >
> 





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

* Re: Re: [PATCH i-g-t 2/3] lib/igt_sysfs: make sure to write empty strings
  2024-02-06 15:25       ` Janusz Krzysztofik
@ 2024-02-06 17:13         ` Lucas De Marchi
  2024-02-07 10:09           ` Janusz Krzysztofik
  0 siblings, 1 reply; 22+ messages in thread
From: Lucas De Marchi @ 2024-02-06 17:13 UTC (permalink / raw)
  To: Janusz Krzysztofik; +Cc: igt-dev

On Tue, Feb 06, 2024 at 04:25:16PM +0100, Janusz Krzysztofik wrote:
>On Thursday, 1 February 2024 14:51:26 CET Lucas De Marchi wrote:
>> On Thu, Feb 01, 2024 at 02:15:53PM +0100, Janusz Krzysztofik wrote:
>> >On Thursday, 1 February 2024 01:50:29 CET Lucas De Marchi wrote:
>> >> 	echo -n "" > /sys/module/<modulename>/parameters/<param>
>> >>
>> >> doesn't really work as it will just create a open() + close() expecting
>> >> the file to be truncated. The same issue happens with igt as it will
>> >> stop writing when there are 0 chars to write. Special case the empty
>> >> string so it always write a '\0' and make sure igt_sysfs_set() accounts
>> >> for the extra null char.
>> >>
>> >> Shell example:
>> >> 	# echo -n "/foo" > /sys/module/firmware_class/parameters/path
>> >> 	# cat /sys/module/firmware_class/parameters/path
>> >> 	/foo
>> >> 	# echo -n "" > /sys/module/firmware_class/parameters/path
>> >> 	/foo
>> >> 	# # make sure to actually write a \0:
>> >> 	echo -ne "\0" > /sys/module/firmware_class/parameters/path
>> >> 	# cat /sys/module/firmware_class/parameters/path
>> >> 	/foo
>> >
>> >Still not overwritten?  Isn't that a mistake?
>>
>> in the commit message. Yes. It was supposed to be show the real effect
>> of that, i.e. we do write  "".
>>
>>
>> >
>> >>
>> >> Same thing happens when testing igt_sysfs_set():
>> >>        int dirfd = open("/sys/module/firmware_class/parameters", O_RDONLY);
>> >>        igt_sysfs_set(dirfd, "path", "");
>> >>
>> >> Previously it was not really setting the param.
>> >>
>> >> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>> >> ---
>> >>  lib/igt_sysfs.c | 12 ++++++++++--
>> >>  1 file changed, 10 insertions(+), 2 deletions(-)
>> >>
>> >> diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
>> >> index 567b4f6d5..814220ddb 100644
>> >> --- a/lib/igt_sysfs.c
>> >> +++ b/lib/igt_sysfs.c
>> >> @@ -406,7 +406,7 @@ int igt_sysfs_read(int dir, const char *attr, void
>> >*data, int len)
>> >>   */
>> >>  bool igt_sysfs_set(int dir, const char *attr, const char *value)
>> >>  {
>> >> -	int len = strlen(value);
>> >> +	int len = strlen(value) + 1;
>> >>  	return igt_sysfs_write(dir, attr, value, len) == len;
>> >>  }
>> >>
>
>If you agree on limiting this patch to the above chunk and dropping below
>changes to igt_sysfs_vprintf() which look problematic to me then, with the
>above discussed mistake corrected, you have my

humn?? why would we leave the function below broken?

	const char *foo = get_foo_val();
	const char *bar = get_bar_val();

	igt_sysfs_printf(dirfd, "test_sysfs_file", "%s%s", foo, bar);

why would we leave igt_sysfs_printf broken, forcing the user to check
foo and bar and fallback to igt_sysfs_write() or igt_sysfs_set()? It
seems even a higher level function than igt_sysfs_set() that should
really abstract that.

Lucas De Marchi

>
>Reviewed-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
>
>Thanks,
>Janusz
>
>> >> @@ -513,8 +513,16 @@ int igt_sysfs_vprintf(int dir, const char *attr, const
>> >char *fmt, va_list ap)
>> >>  		return -errno;
>> >>
>> >>  	va_copy(tmp, ap);
>> >> -	ret = vsnprintf(buf, sizeof(stack), fmt, tmp);
>> >> +	ret = vsnprintf(stack, sizeof(stack), fmt, tmp);
>> >
>> >Looks not related.
>>
>> I will add a line in the commit message for this sneaking in.
>>
>> >
>> >>  	va_end(tmp);
>> >> +
>> >> +	/*
>> >> +	 * make sure to always issue a write() syscall, even if writing an
>> >empty string,
>> >> +	 * otherwise values in sysfs like module parameters don't really get
>> >overwritten
>> >> +	 */
>> >> +	if (igt_debug_on(ret = 0))
>> >> +		return igt_writen(fd, "", 1);
>> >
>> >I think users may know that an empty string is going to be written, then may
>> >expect return value of 0, not 1.  Also, what value should we return to the
>> >user if (unlikely) we got 0 from igt_writen()?  write(2) says: "If count is
>> >zero and fd refers to a file other than a regular file, the results are not
>> >specified."
>>
>> we are passing 1 so we don't fall in the case of passing 0 that write(2)
>> refers to. If the return value is 0, then we return whatever write()
>> returned and the user deals with it like it had done before.
>>
>> >
>> >While resolving two instances of one and the same issue, you use two different
>> >approaches:
>> >1) always increase the number of characters to be written by 1 when writing
>> >   strings, so at least the terminating null byte is always written,
>> >2) divert to a separate call to igt_writen() that writes just the terminating
>> >   null byte when the string to be written is empty.
>>
>> if you look with a different angle, both are actually passing len + 1.
>> One goes directly to igt_written() vs igt_sysfs_write() because of the
>> arguments it has at hand and is consistent with the layer the specific
>> function is operating on.
>>
>> 	if (igt_debug_on(ret == 0))
>> 		return igt_writen(fd, stack, ret + 1);
>>
>> to be similar would equally work, but slightly harder to understand
>> what's going on.
>>
>> Lucas De Marchi
>>
>> >While both methods can work correctly, I think it would be more clear if you
>> >selected one of them and stuck to it, or provide a justification if not.
>>
>>
>> >
>> >Thanks,
>> >Janusz
>> >
>> >
>> >> +
>> >>  	if (igt_debug_on(ret < 0))
>> >>  		return -EINVAL;
>> >>
>> >>
>> >
>> >
>> >
>> >
>>
>
>
>
>

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

* Re: [PATCH i-g-t 1/3] lib/igt_kmod: stop using KMOD_REMOVE_FORCE
  2024-02-01 14:03     ` Lucas De Marchi
@ 2024-02-06 17:27       ` Kamil Konieczny
  0 siblings, 0 replies; 22+ messages in thread
From: Kamil Konieczny @ 2024-02-06 17:27 UTC (permalink / raw)
  To: igt-dev; +Cc: Lucas De Marchi, Janusz Krzysztofik

Hi Lucas,
On 2024-02-01 at 08:03:15 -0600, Lucas De Marchi wrote:
> On Thu, Feb 01, 2024 at 02:05:10PM +0100, Kamil Konieczny wrote:
> > Hi Lucas,
> > On 2024-01-31 at 16:50:28 -0800, Lucas De Marchi wrote:
> > 
> > Missing commit description - please add one.
> > 
> > Do we really need this remove?
> 
> oops, I was supposed to add the explanation why that I used in a
> patch review and forgot to paste.
> 
> I'd swap the question:  do we really need the flag? No, we never need
> the flag. If the kernel ever resorts to honoring the flag we will
> have a tainted kernel, potential leaks and memory corruption. It's
> better to just handle the error returned by libkmod and fix the root
> cause.
> 
> Lucas De Marchi
> 

If it is ignored on kernel side it can be ignored also in igt,

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

> > 
> > Regards,
> > Kamil
> > 
> > +cc Janusz Krzysztofik
> > 
> > > Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
> > > ---
> > >  lib/igt_kmod.c                 | 42 ++++++++++++++++------------------
> > >  lib/igt_kmod.h                 |  2 +-
> > >  tests/intel/i915_module_load.c |  4 ++--
> > >  tests/kms_content_protection.c |  2 +-
> > >  tests/vgem_basic.c             |  2 +-
> > >  5 files changed, 25 insertions(+), 27 deletions(-)
> > > 
> > > diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
> > > index 5709138c0..2fed6ed54 100644
> > > --- a/lib/igt_kmod.c
> > > +++ b/lib/igt_kmod.c
> > > @@ -258,7 +258,7 @@ out:
> > >  	return err < 0 ? err : 0;
> > >  }
> > > 
> > > -static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
> > > +static int igt_kmod_unload_r(struct kmod_module *kmod)
> > >  {
> > >  #define MAX_TRIES	20
> > >  #define SLEEP_DURATION	500000
> > > @@ -272,7 +272,7 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
> > >  	holders = kmod_module_get_holders(kmod);
> > >  	kmod_list_foreach(pos, holders) {
> > >  		struct kmod_module *it = kmod_module_get_module(pos);
> > > -		err = igt_kmod_unload_r(it, flags);
> > > +		err = igt_kmod_unload_r(it);
> > >  		kmod_module_unref(it);
> > >  		if (err < 0)
> > >  			break;
> > > @@ -292,7 +292,7 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
> > >  	}
> > > 
> > >  	for (tries = 0; tries < MAX_TRIES; tries++) {
> > > -		err = kmod_module_remove_module(kmod, flags);
> > > +		err = kmod_module_remove_module(kmod, 0);
> > > 
> > >  		/* Only loop in the following cases */
> > >  		if (err != -EBUSY && err != -EAGAIN)
> > > @@ -326,8 +326,6 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
> > >  /**
> > >   * igt_kmod_unload:
> > >   * @mod_name: Module name.
> > > - * @flags: flags are passed directly to libkmod and can be:
> > > - * KMOD_REMOVE_FORCE or KMOD_REMOVE_NOWAIT.
> > >   *
> > >   * Returns: 0 in case of success or -errno otherwise.
> > >   *
> > > @@ -335,7 +333,7 @@ static int igt_kmod_unload_r(struct kmod_module *kmod, unsigned int flags)
> > >   *
> > >   */
> > >  int
> > > -igt_kmod_unload(const char *mod_name, unsigned int flags)
> > > +igt_kmod_unload(const char *mod_name)
> > >  {
> > >  	struct kmod_ctx *ctx = kmod_ctx();
> > >  	struct kmod_module *kmod;
> > > @@ -348,7 +346,7 @@ igt_kmod_unload(const char *mod_name, unsigned int flags)
> > >  		goto out;
> > >  	}
> > > 
> > > -	err = igt_kmod_unload_r(kmod, flags);
> > > +	err = igt_kmod_unload_r(kmod);
> > >  	if (err < 0) {
> > >  		igt_debug("Could not remove module %s (%s)\n", mod_name,
> > >  			  strerror(-err));
> > > @@ -525,7 +523,7 @@ static int igt_always_unload_audio_driver(char **who)
> > >  			if (ret)
> > >  				igt_warn("Failed to notify pipewire_pulse\n");
> > >  			kick_snd_hda_intel();
> > > -			ret = igt_kmod_unload(*m, 0);
> > > +			ret = igt_kmod_unload(*m);
> > >  			pipewire_pulse_stop_reserve();
> > >  			if (ret) {
> > >  				igt_warn("Could not unload audio driver %s\n", *m);
> > > @@ -583,7 +581,7 @@ int __igt_intel_driver_unload(char **who, const char *driver)
> > >  		if (!igt_kmod_is_loaded(*m))
> > >  			continue;
> > > 
> > > -		ret = igt_kmod_unload(*m, 0);
> > > +		ret = igt_kmod_unload(*m);
> > >  		if (ret) {
> > >  			if (who)
> > >  				*who = strdup_realloc(*who, *m);
> > > @@ -593,7 +591,7 @@ int __igt_intel_driver_unload(char **who, const char *driver)
> > >  	}
> > > 
> > >  	if (igt_kmod_is_loaded(driver)) {
> > > -		ret = igt_kmod_unload(driver, 0);
> > > +		ret = igt_kmod_unload(driver);
> > >  		if (ret) {
> > >  			if (who)
> > >  				*who = strdup_realloc(*who, driver);
> > > @@ -629,10 +627,10 @@ igt_intel_driver_unload(const char *driver)
> > >  	free(who);
> > > 
> > >  	if (igt_kmod_is_loaded("intel-gtt"))
> > > -		igt_kmod_unload("intel-gtt", 0);
> > > +		igt_kmod_unload("intel-gtt");
> > > 
> > > -	igt_kmod_unload("drm_kms_helper", 0);
> > > -	igt_kmod_unload("drm", 0);
> > > +	igt_kmod_unload("drm_kms_helper");
> > > +	igt_kmod_unload("drm");
> > > 
> > >  	if (igt_kmod_is_loaded("driver")) {
> > >  		igt_warn("%s.ko still loaded!\n", driver);
> > > @@ -682,7 +680,7 @@ igt_amdgpu_driver_unload(void)
> > >  	bind_fbcon(false);
> > > 
> > >  	if (igt_kmod_is_loaded("amdgpu")) {
> > > -		if (igt_kmod_unload("amdgpu", 0)) {
> > > +		if (igt_kmod_unload("amdgpu")) {
> > >  			igt_warn("Could not unload amdgpu\n");
> > >  			igt_kmod_list_loaded();
> > >  			igt_lsof("/dev/dri");
> > > @@ -690,8 +688,8 @@ igt_amdgpu_driver_unload(void)
> > >  		}
> > >  	}
> > > 
> > > -	igt_kmod_unload("drm_kms_helper", 0);
> > > -	igt_kmod_unload("drm", 0);
> > > +	igt_kmod_unload("drm_kms_helper");
> > > +	igt_kmod_unload("drm");
> > > 
> > >  	if (igt_kmod_is_loaded("amdgpu")) {
> > >  		igt_warn("amdgpu.ko still loaded!\n");
> > > @@ -1158,8 +1156,8 @@ static void kunit_get_tests(struct igt_list_head *tests,
> > >  		free(case_name);
> > >  	}
> > > 
> > > -	igt_skip_on(kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE));
> > > -	igt_skip_on(igt_kmod_unload("kunit", KMOD_REMOVE_FORCE));
> > > +	igt_skip_on(kmod_module_remove_module(tst->kmod, 0));
> > > +	igt_skip_on(igt_kmod_unload("kunit"));
> > > 
> > >  	igt_skip_on_f(err,
> > >  		      "KTAP parser failed while getting a list of test cases\n");
> > > @@ -1362,7 +1360,7 @@ void igt_kunit(const char *module_name, const char *name, const char *opts)
> > >  		 * unload may fail if kunit base module is not loaded,
> > >  		 * ignore any failures, we'll fail later if still loaded.
> > >  		 */
> > > -		igt_ignore_warn(igt_kmod_unload("kunit", KMOD_REMOVE_FORCE));
> > > +		igt_ignore_warn(igt_kmod_unload("kunit"));
> > > 
> > >  		igt_assert(igt_list_empty(&tests));
> > >  	}
> > > @@ -1395,7 +1393,7 @@ void igt_kunit(const char *module_name, const char *name, const char *opts)
> > >  		kunit_results_free(&tests, &suite_name, &case_name);
> > > 
> > >  		igt_ktest_end(&tst);
> > > -		igt_debug_on(igt_kmod_unload("kunit", KMOD_REMOVE_FORCE));
> > > +		igt_debug_on(igt_kmod_unload("kunit"));
> > >  	}
> > > 
> > >  	igt_ktest_fini(&tst);
> > > @@ -1438,7 +1436,7 @@ int igt_ktest_begin(struct igt_ktest *tst)
> > >  	if (strcmp(tst->module_name, "i915") == 0)
> > >  		igt_i915_driver_unload();
> > > 
> > > -	err = kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE);
> > > +	err = kmod_module_remove_module(tst->kmod, 0);
> > >  	igt_require(err == 0 || err == -ENOENT);
> > > 
> > >  	tst->kmsg = open("/dev/kmsg", O_RDONLY | O_NONBLOCK);
> > > @@ -1486,7 +1484,7 @@ int igt_kselftest_execute(struct igt_ktest *tst,
> > > 
> > >  void igt_ktest_end(struct igt_ktest *tst)
> > >  {
> > > -	kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE);
> > > +	kmod_module_remove_module(tst->kmod, 0);
> > >  	close(tst->kmsg);
> > >  }
> > > 
> > > diff --git a/lib/igt_kmod.h b/lib/igt_kmod.h
> > > index 990e5309d..efb46da12 100644
> > > --- a/lib/igt_kmod.h
> > > +++ b/lib/igt_kmod.h
> > > @@ -34,7 +34,7 @@ void igt_kmod_list_loaded(void);
> > >  bool igt_kmod_has_param(const char *mod_name, const char *param);
> > > 
> > >  int igt_kmod_load(const char *mod_name, const char *opts);
> > > -int igt_kmod_unload(const char *mod_name, unsigned int flags);
> > > +int igt_kmod_unload(const char *mod_name);
> > > 
> > >  int igt_audio_driver_unload(char **whom);
> > > 
> > > diff --git a/tests/intel/i915_module_load.c b/tests/intel/i915_module_load.c
> > > index 9fffe93d9..b72f3252a 100644
> > > --- a/tests/intel/i915_module_load.c
> > > +++ b/tests/intel/i915_module_load.c
> > > @@ -216,7 +216,7 @@ static void unload_or_die(const char *module_name)
> > > 
> > >  	/* should be unloaded, so expect a no-op */
> > >  	for (loop = 0;; loop++) {
> > > -		err = igt_kmod_unload(module_name, 0);
> > > +		err = igt_kmod_unload(module_name);
> > >  		if (err == -ENOENT) /* -ENOENT == unloaded already */
> > >  			err = 0;
> > >  		if (!err || loop >= 10)
> > > @@ -259,7 +259,7 @@ inject_fault(const char *module_name, const char *opt, int fault)
> > >  	igt_debug("Loaded '%s %s', result=%d\n", module_name, buf, fault);
> > > 
> > >  	if (strcmp(module_name, "i915")) /* XXX better ideas! */
> > > -		igt_kmod_unload(module_name, 0);
> > > +		igt_kmod_unload(module_name);
> > >  	else
> > >  		igt_i915_driver_unload();
> > > 
> > > diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
> > > index 3fc575634..6858b22e2 100644
> > > --- a/tests/kms_content_protection.c
> > > +++ b/tests/kms_content_protection.c
> > > @@ -396,7 +396,7 @@ static void test_content_protection_on_output(igt_output_t *output,
> > >  	}
> > > 
> > >  	if (data.cp_tests & CP_MEI_RELOAD) {
> > > -		igt_assert_f(!igt_kmod_unload("mei_hdcp", 0),
> > > +		igt_assert_f(!igt_kmod_unload("mei_hdcp"),
> > >  			     "mei_hdcp unload failed");
> > > 
> > >  		/* Expected to fail */
> > > diff --git a/tests/vgem_basic.c b/tests/vgem_basic.c
> > > index 63c5c0971..cfda908bc 100644
> > > --- a/tests/vgem_basic.c
> > > +++ b/tests/vgem_basic.c
> > > @@ -438,7 +438,7 @@ static void test_debugfs_read(int fd)
> > > 
> > >  static int module_unload(void)
> > >  {
> > > -	return igt_kmod_unload("vgem", 0);
> > > +	return igt_kmod_unload("vgem");
> > >  }
> > > 
> > >  static void test_unload(void)
> > > --
> > > 2.43.0
> > > 

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

* Re: [PATCH i-g-t 2/3] lib/igt_sysfs: make sure to write empty strings
  2024-02-06 17:13         ` Lucas De Marchi
@ 2024-02-07 10:09           ` Janusz Krzysztofik
  0 siblings, 0 replies; 22+ messages in thread
From: Janusz Krzysztofik @ 2024-02-07 10:09 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev

On Tuesday, 6 February 2024 18:13:13 CET Lucas De Marchi wrote:
> On Tue, Feb 06, 2024 at 04:25:16PM +0100, Janusz Krzysztofik wrote:
> >On Thursday, 1 February 2024 14:51:26 CET Lucas De Marchi wrote:
> >> On Thu, Feb 01, 2024 at 02:15:53PM +0100, Janusz Krzysztofik wrote:
> >> >On Thursday, 1 February 2024 01:50:29 CET Lucas De Marchi wrote:
> >> >> 	echo -n "" > /sys/module/<modulename>/parameters/<param>
> >> >>
> >> >> doesn't really work as it will just create a open() + close() expecting
> >> >> the file to be truncated. The same issue happens with igt as it will
> >> >> stop writing when there are 0 chars to write. Special case the empty
> >> >> string so it always write a '\0' and make sure igt_sysfs_set() accounts
> >> >> for the extra null char.
> >> >>
> >> >> Shell example:
> >> >> 	# echo -n "/foo" > /sys/module/firmware_class/parameters/path
> >> >> 	# cat /sys/module/firmware_class/parameters/path
> >> >> 	/foo
> >> >> 	# echo -n "" > /sys/module/firmware_class/parameters/path
> >> >> 	/foo
> >> >> 	# # make sure to actually write a \0:
> >> >> 	echo -ne "\0" > /sys/module/firmware_class/parameters/path
> >> >> 	# cat /sys/module/firmware_class/parameters/path
> >> >> 	/foo
> >> >
> >> >Still not overwritten?  Isn't that a mistake?
> >>
> >> in the commit message. Yes. It was supposed to be show the real effect
> >> of that, i.e. we do write  "".
> >>
> >>
> >> >
> >> >>
> >> >> Same thing happens when testing igt_sysfs_set():
> >> >>        int dirfd = open("/sys/module/firmware_class/parameters", O_RDONLY);
> >> >>        igt_sysfs_set(dirfd, "path", "");
> >> >>
> >> >> Previously it was not really setting the param.
> >> >>
> >> >> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
> >> >> ---
> >> >>  lib/igt_sysfs.c | 12 ++++++++++--
> >> >>  1 file changed, 10 insertions(+), 2 deletions(-)
> >> >>
> >> >> diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
> >> >> index 567b4f6d5..814220ddb 100644
> >> >> --- a/lib/igt_sysfs.c
> >> >> +++ b/lib/igt_sysfs.c
> >> >> @@ -406,7 +406,7 @@ int igt_sysfs_read(int dir, const char *attr, void
> >> >*data, int len)
> >> >>   */
> >> >>  bool igt_sysfs_set(int dir, const char *attr, const char *value)
> >> >>  {
> >> >> -	int len = strlen(value);
> >> >> +	int len = strlen(value) + 1;
> >> >>  	return igt_sysfs_write(dir, attr, value, len) == len;
> >> >>  }
> >> >>
> >
> >If you agree on limiting this patch to the above chunk and dropping below
> >changes to igt_sysfs_vprintf() which look problematic to me then, with the
> >above discussed mistake corrected, you have my
> 
> humn?? why would we leave the function below broken?

I wouldn't, and that's a misinterpretation of my words, since I didn't say 
that.  As I wrote in my former comments, I just didn't agree with your 
proposed solution.

> 
> 	const char *foo = get_foo_val();
> 	const char *bar = get_bar_val();
> 
> 	igt_sysfs_printf(dirfd, "test_sysfs_file", "%s%s", foo, bar);
> 
> why would we leave igt_sysfs_printf broken, forcing the user to check
> foo and bar and fallback to igt_sysfs_write() or igt_sysfs_set()? It
> seems even a higher level function than igt_sysfs_set() that should
> really abstract that.
> 
> Lucas De Marchi
> 
> >
> >Reviewed-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
> >
> >Thanks,
> >Janusz
> >
> >> >> @@ -513,8 +513,16 @@ int igt_sysfs_vprintf(int dir, const char *attr, const
> >> >char *fmt, va_list ap)
> >> >>  		return -errno;
> >> >>
> >> >>  	va_copy(tmp, ap);
> >> >> -	ret = vsnprintf(buf, sizeof(stack), fmt, tmp);
> >> >> +	ret = vsnprintf(stack, sizeof(stack), fmt, tmp);
> >> >
> >> >Looks not related.
> >>
> >> I will add a line in the commit message for this sneaking in.
> >>
> >> >
> >> >>  	va_end(tmp);
> >> >> +
> >> >> +	/*
> >> >> +	 * make sure to always issue a write() syscall, even if writing an
> >> >empty string,
> >> >> +	 * otherwise values in sysfs like module parameters don't really get
> >> >overwritten
> >> >> +	 */
> >> >> +	if (igt_debug_on(ret = 0))
> >> >> +		return igt_writen(fd, "", 1);
> >> >
> >> >I think users may know that an empty string is going to be written, then may
> >> >expect return value of 0, not 1.  Also, what value should we return to the
> >> >user if (unlikely) we got 0 from igt_writen()?  write(2) says: "If count is
> >> >zero and fd refers to a file other than a regular file, the results are not
> >> >specified."
> >>
> >> we are passing 1 so we don't fall in the case of passing 0 that write(2)
> >> refers to. If the return value is 0, then we return whatever write()
> >> returned and the user deals with it like it had done before.

With your approach, igt_sysfs_printf() would return the same value of 1 in two 
different cases: when the successfully rendered and written string was either 
of one or zero bytes length.  I don't like it.

Since I don't agree with your approach, I can support only that part of 
your patch that fixes igt_sysfs_set(), in a way free from my doubts.  I'm 
surprised you have understood my lack of acceptance to your changes to 
igt_sysfs_printf() as my vote against fixing that function and leaving it 
broken.  I just left that topic open for further discussion.

Thanks,
Janusz


> >>
> >> >
> >> >While resolving two instances of one and the same issue, you use two different
> >> >approaches:
> >> >1) always increase the number of characters to be written by 1 when writing
> >> >   strings, so at least the terminating null byte is always written,
> >> >2) divert to a separate call to igt_writen() that writes just the terminating
> >> >   null byte when the string to be written is empty.
> >>
> >> if you look with a different angle, both are actually passing len + 1.
> >> One goes directly to igt_written() vs igt_sysfs_write() because of the
> >> arguments it has at hand and is consistent with the layer the specific
> >> function is operating on.
> >>
> >> 	if (igt_debug_on(ret == 0))
> >> 		return igt_writen(fd, stack, ret + 1);
> >>
> >> to be similar would equally work, but slightly harder to understand
> >> what's going on.
> >>
> >> Lucas De Marchi
> >>
> >> >While both methods can work correctly, I think it would be more clear if you
> >> >selected one of them and stuck to it, or provide a justification if not.
> >>
> >>
> >> >
> >> >Thanks,
> >> >Janusz
> >> >
> >> >
> >> >> +
> >> >>  	if (igt_debug_on(ret < 0))
> >> >>  		return -EINVAL;
> >> >>
> >> >>
> >> >
> >> >
> >> >
> >> >
> >>
> >
> >
> >
> >
> 





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

* Re: [PATCH i-g-t v2] lib/igt_sysfs: make sure to write empty strings
  2024-02-01 13:12     ` Kamil Konieczny
  2024-02-01 13:59       ` Lucas De Marchi
@ 2024-02-07 16:18       ` Kamil Konieczny
  2024-02-07 16:46         ` Lucas De Marchi
  1 sibling, 1 reply; 22+ messages in thread
From: Kamil Konieczny @ 2024-02-07 16:18 UTC (permalink / raw)
  To: igt-dev; +Cc: Lucas De Marchi, Janusz Krzysztofik

Hi,

On 2024-02-01 at 14:12:08 +0100, Kamil Konieczny wrote:
> Hi Lucas,
> On 2024-01-31 at 19:11:56 -0800, Lucas De Marchi wrote:
> > 	echo -n "" > /sys/module/<modulename>/parameters/<param>
> > 
> > doesn't really work as it will just create a open() + close() expecting
> > the file to be truncated. The same issue happens with igt as it will
> > stop writing when there are 0 chars to write. Special case the empty
> > string so it always write a '\0' and make sure igt_sysfs_set() accounts
> > for the extra null char.
> > 
> > Shell example:
> > 	# echo -n "/foo" > /sys/module/firmware_class/parameters/path
> > 	# cat /sys/module/firmware_class/parameters/path
> > 	/foo
> > 	# echo -n "" > /sys/module/firmware_class/parameters/path
> > 	/foo
> > 	# # make sure to actually write a \0:
> > 	echo -ne "\0" > /sys/module/firmware_class/parameters/path
> > 	# cat /sys/module/firmware_class/parameters/path
> > 	/foo
> > 
> > Same thing happens when testing igt_sysfs_set():
> >        int dirfd = open("/sys/module/firmware_class/parameters", O_RDONLY);
> >        igt_sysfs_set(dirfd, "path", "");
> > 
> > Previously it was not really setting the param.
> > 
> > Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
> > ---
> >  lib/igt_sysfs.c | 12 ++++++++++--
> >  1 file changed, 10 insertions(+), 2 deletions(-)
> > 
> > diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
> > index 567b4f6d5..64c2aaabb 100644
> > --- a/lib/igt_sysfs.c
> > +++ b/lib/igt_sysfs.c
> > @@ -406,7 +406,7 @@ int igt_sysfs_read(int dir, const char *attr, void *data, int len)
> >   */
> >  bool igt_sysfs_set(int dir, const char *attr, const char *value)
> >  {
> > -	int len = strlen(value);
> > +	int len = strlen(value) + 1;
> >  	return igt_sysfs_write(dir, attr, value, len) == len;
> 
> Why not adding write "\n" at end?

So what about changing this only for zero?

if (!len)
        ++len;

+cc Janusz

Regards,
Kamil

> 
> >  }
> >  
> > @@ -513,8 +513,16 @@ int igt_sysfs_vprintf(int dir, const char *attr, const char *fmt, va_list ap)
> >  		return -errno;
> >  
> >  	va_copy(tmp, ap);
> > -	ret = vsnprintf(buf, sizeof(stack), fmt, tmp);
> > +	ret = vsnprintf(stack, sizeof(stack), fmt, tmp);
> ------------------- ^^^^^
> Nice catch and looks like a separate bug fix, please send
> as separate patch.
> 
> Regards,
> Kamil
> 
> >  	va_end(tmp);
> > +
> > +	/*
> > +	 * make sure to always issue a write() syscall, even if writing an empty string,
> > +	 * otherwise values in sysfs like module parameters don't really get overwritten
> > +	 */
> > +	if (igt_debug_on(ret == 0))
> > +		return igt_writen(fd, "", 1);
> > +
> >  	if (igt_debug_on(ret < 0))
> >  		return -EINVAL;
> >  
> > -- 
> > 2.43.0
> > 

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

* Re: Re: [PATCH i-g-t v2] lib/igt_sysfs: make sure to write empty strings
  2024-02-07 16:18       ` Kamil Konieczny
@ 2024-02-07 16:46         ` Lucas De Marchi
  0 siblings, 0 replies; 22+ messages in thread
From: Lucas De Marchi @ 2024-02-07 16:46 UTC (permalink / raw)
  To: Kamil Konieczny, igt-dev, Janusz Krzysztofik

On Wed, Feb 07, 2024 at 05:18:30PM +0100, Kamil Konieczny wrote:
>Hi,
>
>On 2024-02-01 at 14:12:08 +0100, Kamil Konieczny wrote:
>> Hi Lucas,
>> On 2024-01-31 at 19:11:56 -0800, Lucas De Marchi wrote:
>> > 	echo -n "" > /sys/module/<modulename>/parameters/<param>
>> >
>> > doesn't really work as it will just create a open() + close() expecting
>> > the file to be truncated. The same issue happens with igt as it will
>> > stop writing when there are 0 chars to write. Special case the empty
>> > string so it always write a '\0' and make sure igt_sysfs_set() accounts
>> > for the extra null char.
>> >
>> > Shell example:
>> > 	# echo -n "/foo" > /sys/module/firmware_class/parameters/path
>> > 	# cat /sys/module/firmware_class/parameters/path
>> > 	/foo
>> > 	# echo -n "" > /sys/module/firmware_class/parameters/path
>> > 	/foo
>> > 	# # make sure to actually write a \0:
>> > 	echo -ne "\0" > /sys/module/firmware_class/parameters/path
>> > 	# cat /sys/module/firmware_class/parameters/path
>> > 	/foo
>> >
>> > Same thing happens when testing igt_sysfs_set():
>> >        int dirfd = open("/sys/module/firmware_class/parameters", O_RDONLY);
>> >        igt_sysfs_set(dirfd, "path", "");
>> >
>> > Previously it was not really setting the param.
>> >
>> > Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>> > ---
>> >  lib/igt_sysfs.c | 12 ++++++++++--
>> >  1 file changed, 10 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
>> > index 567b4f6d5..64c2aaabb 100644
>> > --- a/lib/igt_sysfs.c
>> > +++ b/lib/igt_sysfs.c
>> > @@ -406,7 +406,7 @@ int igt_sysfs_read(int dir, const char *attr, void *data, int len)
>> >   */
>> >  bool igt_sysfs_set(int dir, const char *attr, const char *value)
>> >  {
>> > -	int len = strlen(value);
>> > +	int len = strlen(value) + 1;
>> >  	return igt_sysfs_write(dir, attr, value, len) == len;
>>
>> Why not adding write "\n" at end?
>
>So what about changing this only for zero?
>
>if (!len)
>        ++len;

ok

Lucas De Marchi

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

end of thread, other threads:[~2024-02-07 16:46 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-01  0:50 [PATCH i-g-t 0/3] igt_kmod and sysfs fixes Lucas De Marchi
2024-02-01  0:50 ` [PATCH i-g-t 1/3] lib/igt_kmod: stop using KMOD_REMOVE_FORCE Lucas De Marchi
2024-02-01 13:05   ` Kamil Konieczny
2024-02-01 14:03     ` Lucas De Marchi
2024-02-06 17:27       ` Kamil Konieczny
2024-02-01  0:50 ` [PATCH i-g-t 2/3] lib/igt_sysfs: make sure to write empty strings Lucas De Marchi
2024-02-01  3:11   ` [PATCH i-g-t v2] " Lucas De Marchi
2024-02-01 13:12     ` Kamil Konieczny
2024-02-01 13:59       ` Lucas De Marchi
2024-02-07 16:18       ` Kamil Konieczny
2024-02-07 16:46         ` Lucas De Marchi
2024-02-01 13:15   ` [PATCH i-g-t 2/3] " Janusz Krzysztofik
2024-02-01 13:51     ` Lucas De Marchi
2024-02-06 15:25       ` Janusz Krzysztofik
2024-02-06 17:13         ` Lucas De Marchi
2024-02-07 10:09           ` Janusz Krzysztofik
2024-02-01  0:50 ` [PATCH i-g-t 3/3] lib/igt_sysfs: Fix dir fd documentation Lucas De Marchi
2024-02-01 13:05   ` Kamil Konieczny
2024-02-01  2:56 ` ✗ Fi.CI.BAT: failure for igt_kmod and sysfs fixes Patchwork
2024-02-01  3:08 ` ✗ CI.xeBAT: " Patchwork
2024-02-01  3:41 ` ✗ CI.xeBAT: failure for igt_kmod and sysfs fixes (rev2) Patchwork
2024-02-01  4:05 ` ✗ Fi.CI.BAT: " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox