All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t 1/2] lib: Process kernel taints
@ 2021-01-07 10:43 Chris Wilson
  2021-01-07 10:43 ` [igt-dev] [PATCH i-g-t 2/2] lib/kmod: Check for kernel taints before/after selftests Chris Wilson
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Chris Wilson @ 2021-01-07 10:43 UTC (permalink / raw)
  To: igt-dev; +Cc: petri.latvala, Chris Wilson

A small library routine to read '/proc/sys/kernel/taints' and check for
a fatal condition. This is currently used by the runner, but is also
useful for some tests.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 lib/Makefile.sources |  2 ++
 lib/igt_taints.c     | 65 +++++++++++++++++++++++++++++++++++++++
 lib/igt_taints.h     | 19 ++++++++++++
 lib/meson.build      |  1 +
 runner/executor.c    | 73 +++++++++-----------------------------------
 5 files changed, 101 insertions(+), 59 deletions(-)
 create mode 100644 lib/igt_taints.c
 create mode 100644 lib/igt_taints.h

diff --git a/lib/Makefile.sources b/lib/Makefile.sources
index 67b386457..7102f95e7 100644
--- a/lib/Makefile.sources
+++ b/lib/Makefile.sources
@@ -64,6 +64,8 @@ lib_source_list =	 	\
 	igt_sysfs.h		\
 	igt_sysrq.c		\
 	igt_sysrq.h		\
+	igt_taints.c		\
+	igt_taints.h		\
 	igt_thread.c		\
 	igt_thread.h		\
 	igt_x86.h		\
diff --git a/lib/igt_taints.c b/lib/igt_taints.c
new file mode 100644
index 000000000..f9b32d106
--- /dev/null
+++ b/lib/igt_taints.c
@@ -0,0 +1,65 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2021 Intel Corporation
+ */
+
+#include <stdio.h>
+
+#include "igt_taints.h"
+
+/* see Linux's include/linux/kernel.h */
+static const struct {
+	int bit;
+	int bad;
+	const char *explanation;
+} abort_taints[] = {
+  { 5, 1, "TAINT_BAD_PAGE: Bad page reference or an unexpected page flags." },
+  { 7, 1, "TAINT_DIE: Kernel has died - BUG/OOPS." },
+  { 9, 1, "TAINT_WARN: WARN_ON has happened." },
+  { -1 }
+};
+
+const char *igt_explain_taints(unsigned long *taints)
+{
+	for (typeof(*abort_taints) *taint = abort_taints;
+	     taint->bit >= 0;
+	     taint++) {
+		if (*taints & (1ul << taint->bit)) {
+			*taints &= ~(1ul << taint->bit);
+			return taint->explanation;
+		}
+	}
+
+	return NULL;
+}
+
+unsigned long igt_bad_taints(void)
+{
+	static unsigned long bad_taints;
+
+	if (!bad_taints) {
+		for (typeof(*abort_taints) *taint = abort_taints;
+		     taint->bit >= 0;
+		     taint++) {
+			if (taint->bad)
+				bad_taints |= 1ul << taint->bit;
+		}
+	}
+
+	return bad_taints;
+}
+
+unsigned long igt_kernel_tainted(unsigned long *taints)
+{
+	FILE *f;
+
+	*taints = 0;
+
+	f = fopen("/proc/sys/kernel/tainted", "r");
+	if (f) {
+		fscanf(f, "%lu", taints);
+		fclose(f);
+	}
+
+	return is_tainted(*taints);
+}
diff --git a/lib/igt_taints.h b/lib/igt_taints.h
new file mode 100644
index 000000000..be4195c5a
--- /dev/null
+++ b/lib/igt_taints.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2021 Intel Corporation
+ */
+
+#ifndef __IGT_TAINTS_H__
+#define __IGT_TAINTS_H__
+
+unsigned long igt_kernel_tainted(unsigned long *taints);
+const char *igt_explain_taints(unsigned long *taints);
+
+unsigned long igt_bad_taints(void);
+
+static inline unsigned long is_tainted(unsigned long taints)
+{
+	return taints & igt_bad_taints();
+}
+
+#endif /* __IGT_TAINTS_H__ */
diff --git a/lib/meson.build b/lib/meson.build
index 540facb24..3abc42cb3 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -27,6 +27,7 @@ lib_sources = [
 	'igt_syncobj.c',
 	'igt_sysfs.c',
 	'igt_sysrq.c',
+	'igt_taints.c',
 	'igt_thread.c',
 	'igt_vec.c',
 	'igt_vgem.c',
diff --git a/runner/executor.c b/runner/executor.c
index faf272d85..93db8bb36 100644
--- a/runner/executor.c
+++ b/runner/executor.c
@@ -24,6 +24,7 @@
 
 #include "igt_aux.h"
 #include "igt_core.h"
+#include "igt_taints.h"
 #include "executor.h"
 #include "output_strings.h"
 
@@ -307,70 +308,23 @@ static char *handle_lockdep(void)
 	return NULL;
 }
 
-/* see Linux's include/linux/kernel.h */
-static const struct {
-	unsigned long bit;
-	const char *explanation;
-} abort_taints[] = {
-  {(1 << 5), "TAINT_BAD_PAGE: Bad page reference or an unexpected page flags."},
-  {(1 << 7), "TAINT_DIE: Kernel has died - BUG/OOPS."},
-  {(1 << 9), "TAINT_WARN: WARN_ON has happened."},
-  {0, 0}};
-
-static unsigned long bad_taints(void)
-{
-	static unsigned long __bad_taints;
-
-	if (!__bad_taints) {
-		for (typeof(*abort_taints) *taint = abort_taints;
-		     taint->bit;
-		     taint++)
-			__bad_taints |= taint->bit;
-	}
-
-	return __bad_taints;
-}
-
-static unsigned long is_tainted(unsigned long taints)
-{
-	return taints & bad_taints();
-}
-
-static unsigned long tainted(unsigned long *taints)
-{
-	FILE *f;
-
-	*taints = 0;
-
-	f = fopen("/proc/sys/kernel/tainted", "r");
-	if (f) {
-		fscanf(f, "%lu", taints);
-		fclose(f);
-	}
-
-	return is_tainted(*taints);
-}
-
 static char *handle_taint(void)
 {
-	unsigned long taints;
+	unsigned long taints, bad;
+	char *explain;
 	char *reason;
 
-	if (!tainted(&taints))
+	bad = igt_kernel_tainted(&taints);
+	if (!bad)
 		return NULL;
 
-	asprintf(&reason, "Kernel badly tainted (%#lx) (check dmesg for details):\n",
-		 taints);
-
-	for (typeof(*abort_taints) *taint = abort_taints; taint->bit; taint++) {
-		if (taint->bit & taints) {
-			char *old_reason = reason;
-			asprintf(&reason, "%s\t(%#lx) %s\n",
-					old_reason,
-					taint->bit,
-					taint->explanation);
-			free(old_reason);
-		}
+	asprintf(&reason, "Kernel badly tainted (%#lx, %#lx) (check dmesg for details):\n",
+		 taints, bad);
+
+	while ((explain = igt_explain_taints(&bad))) {
+		char *old_reason = reason;
+		asprintf(&reason, "%s\t%s\n", old_reason, explain);
+		free(old_reason);
 	}
 
 	return reason;
@@ -1142,7 +1096,8 @@ static int monitor_output(pid_t child,
 			sigfd = -1; /* we are dying, no signal handling for now */
 		}
 
-		timeout_reason = need_to_timeout(settings, killed, tainted(&taints),
+		timeout_reason = need_to_timeout(settings, killed,
+						 igt_kernel_tainted(&taints),
 						 igt_time_elapsed(&time_last_activity, &time_now),
 						 igt_time_elapsed(&time_last_subtest, &time_now),
 						 igt_time_elapsed(&time_killed, &time_now),
-- 
2.30.0

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

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

* [igt-dev] [PATCH i-g-t 2/2] lib/kmod: Check for kernel taints before/after selftests
  2021-01-07 10:43 [igt-dev] [PATCH i-g-t 1/2] lib: Process kernel taints Chris Wilson
@ 2021-01-07 10:43 ` Chris Wilson
  2021-01-08 12:28   ` Petri Latvala
  2021-01-07 15:34 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/2] lib: Process kernel taints Patchwork
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 9+ messages in thread
From: Chris Wilson @ 2021-01-07 10:43 UTC (permalink / raw)
  To: igt-dev; +Cc: petri.latvala, Chris Wilson

If the kernel generates a bad taint during the selftest (e.g. a
warning), declare the selftest to be a failure.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 lib/igt_kmod.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
index ebeacd6fc..2ae45a1a1 100644
--- a/lib/igt_kmod.c
+++ b/lib/igt_kmod.c
@@ -29,6 +29,7 @@
 #include "igt_core.h"
 #include "igt_kmod.h"
 #include "igt_sysfs.h"
+#include "igt_taints.h"
 
 /**
  * SECTION:igt_kmod
@@ -582,9 +583,12 @@ int igt_kselftest_execute(struct igt_kselftest *tst,
 			  const char *options,
 			  const char *result)
 {
+	unsigned long taints;
 	char buf[1024];
 	int err;
 
+	igt_skip_on(igt_kernel_tainted(&taints));
+
 	lseek(tst->kmsg, 0, SEEK_END);
 
 	snprintf(buf, sizeof(buf), "%s=1 %s", tl->param, options ?: "");
@@ -607,6 +611,8 @@ int igt_kselftest_execute(struct igt_kselftest *tst,
 		     "kselftest \"%s %s\" failed: %s [%d]\n",
 		     tst->module_name, buf, strerror(-err), -err);
 
+	igt_assert_eq(igt_kernel_tainted(&taints), 0);
+
 	return err;
 }
 
-- 
2.30.0

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

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

* [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/2] lib: Process kernel taints
  2021-01-07 10:43 [igt-dev] [PATCH i-g-t 1/2] lib: Process kernel taints Chris Wilson
  2021-01-07 10:43 ` [igt-dev] [PATCH i-g-t 2/2] lib/kmod: Check for kernel taints before/after selftests Chris Wilson
@ 2021-01-07 15:34 ` Patchwork
  2021-01-07 20:12 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2021-01-07 15:34 UTC (permalink / raw)
  To: Chris Wilson; +Cc: igt-dev


[-- Attachment #1.1: Type: text/plain, Size: 3582 bytes --]

== Series Details ==

Series: series starting with [i-g-t,1/2] lib: Process kernel taints
URL   : https://patchwork.freedesktop.org/series/85579/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_9562 -> IGTPW_5366
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

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

### IGT changes ###

#### Issues hit ####

  * igt@amdgpu/amd_cs_nop@fork-gfx0:
    - fi-tgl-y:           NOTRUN -> [SKIP][1] ([fdo#109315] / [i915#2575]) +16 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/fi-tgl-y/igt@amdgpu/amd_cs_nop@fork-gfx0.html

  * igt@gem_exec_parallel@engines@contexts:
    - fi-tgl-y:           [PASS][2] -> [FAIL][3] ([i915#2780])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/fi-tgl-y/igt@gem_exec_parallel@engines@contexts.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/fi-tgl-y/igt@gem_exec_parallel@engines@contexts.html

  * igt@gem_flink_basic@flink-lifetime:
    - fi-tgl-y:           [PASS][4] -> [DMESG-WARN][5] ([i915#402]) +1 similar issue
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/fi-tgl-y/igt@gem_flink_basic@flink-lifetime.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/fi-tgl-y/igt@gem_flink_basic@flink-lifetime.html

  
#### Possible fixes ####

  * igt@gem_exec_suspend@basic-s3:
    - fi-tgl-y:           [DMESG-WARN][6] ([i915#2411] / [i915#402]) -> [PASS][7]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/fi-tgl-y/igt@gem_exec_suspend@basic-s3.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/fi-tgl-y/igt@gem_exec_suspend@basic-s3.html

  * igt@i915_selftest@live@sanitycheck:
    - fi-kbl-7500u:       [DMESG-WARN][8] ([i915#2605]) -> [PASS][9]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/fi-kbl-7500u/igt@i915_selftest@live@sanitycheck.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/fi-kbl-7500u/igt@i915_selftest@live@sanitycheck.html

  * igt@prime_vgem@basic-fence-flip:
    - fi-tgl-y:           [DMESG-WARN][10] ([i915#402]) -> [PASS][11] +1 similar issue
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/fi-tgl-y/igt@prime_vgem@basic-fence-flip.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/fi-tgl-y/igt@prime_vgem@basic-fence-flip.html

  
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [i915#2411]: https://gitlab.freedesktop.org/drm/intel/issues/2411
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2605]: https://gitlab.freedesktop.org/drm/intel/issues/2605
  [i915#2780]: https://gitlab.freedesktop.org/drm/intel/issues/2780
  [i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402


Participating hosts (43 -> 37)
------------------------------

  Missing    (6): fi-ilk-m540 fi-hsw-4200u fi-bsw-cyan fi-ctg-p8600 fi-dg1-1 fi-bdw-samus 


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

  * CI: CI-20190529 -> None
  * IGT: IGT_5946 -> IGTPW_5366

  CI-20190529: 20190529
  CI_DRM_9562: fc8d32007355b4babc37b621b3c9a4e0fe998d27 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_5366: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/index.html
  IGT_5946: 641e5545213dd9a82d80a4e065013a138afb58ff @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

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

[-- Attachment #1.2: Type: text/html, Size: 4449 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

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

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

* [igt-dev] ✗ Fi.CI.IGT: failure for series starting with [i-g-t,1/2] lib: Process kernel taints
  2021-01-07 10:43 [igt-dev] [PATCH i-g-t 1/2] lib: Process kernel taints Chris Wilson
  2021-01-07 10:43 ` [igt-dev] [PATCH i-g-t 2/2] lib/kmod: Check for kernel taints before/after selftests Chris Wilson
  2021-01-07 15:34 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/2] lib: Process kernel taints Patchwork
@ 2021-01-07 20:12 ` Patchwork
  2021-01-08 12:26 ` [igt-dev] [PATCH i-g-t 1/2] " Petri Latvala
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2021-01-07 20:12 UTC (permalink / raw)
  To: Chris Wilson; +Cc: igt-dev


[-- Attachment #1.1: Type: text/plain, Size: 30277 bytes --]

== Series Details ==

Series: series starting with [i-g-t,1/2] lib: Process kernel taints
URL   : https://patchwork.freedesktop.org/series/85579/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_9562_full -> IGTPW_5366_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_5366_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_5366_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

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

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
    - shard-iclb:         [PASS][1] -> [DMESG-WARN][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-iclb2/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb7/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b.html

  * igt@perf_pmu@multi-client@bcs0:
    - shard-hsw:          [PASS][3] -> [INCOMPLETE][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-hsw5/igt@perf_pmu@multi-client@bcs0.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-hsw5/igt@perf_pmu@multi-client@bcs0.html

  
#### Suppressed ####

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

  * {igt@gem_spin_batch@user-each}:
    - shard-apl:          [PASS][5] -> [FAIL][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-apl4/igt@gem_spin_batch@user-each.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-apl8/igt@gem_spin_batch@user-each.html

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

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

### IGT changes ###

#### Issues hit ####

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

  * igt@gem_ctx_persistence@legacy-engines-mixed:
    - shard-snb:          NOTRUN -> [SKIP][8] ([fdo#109271] / [i915#1099])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-snb2/igt@gem_ctx_persistence@legacy-engines-mixed.html

  * igt@gem_eio@in-flight-contexts-10ms:
    - shard-hsw:          NOTRUN -> [INCOMPLETE][9] ([i915#1037] / [i915#2870])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-hsw8/igt@gem_eio@in-flight-contexts-10ms.html

  * igt@gem_exec_whisper@basic-contexts-priority:
    - shard-glk:          [PASS][10] -> [DMESG-WARN][11] ([i915#118] / [i915#95])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-glk8/igt@gem_exec_whisper@basic-contexts-priority.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-glk9/igt@gem_exec_whisper@basic-contexts-priority.html

  * igt@gem_render_copy@y-tiled-ccs-to-yf-tiled-mc-ccs:
    - shard-iclb:         NOTRUN -> [SKIP][12] ([i915#768])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb5/igt@gem_render_copy@y-tiled-ccs-to-yf-tiled-mc-ccs.html

  * igt@gem_softpin@noreloc-s3:
    - shard-snb:          NOTRUN -> [DMESG-WARN][13] ([i915#42])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-snb7/igt@gem_softpin@noreloc-s3.html

  * igt@gem_userptr_blits@mmap-offset-invalidate-active@wb:
    - shard-snb:          NOTRUN -> [SKIP][14] ([fdo#109271]) +48 similar issues
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-snb4/igt@gem_userptr_blits@mmap-offset-invalidate-active@wb.html

  * igt@gem_userptr_blits@process-exit-mmap@wc:
    - shard-hsw:          NOTRUN -> [SKIP][15] ([fdo#109271]) +142 similar issues
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-hsw4/igt@gem_userptr_blits@process-exit-mmap@wc.html

  * igt@gen7_exec_parse@oacontrol-tracking:
    - shard-glk:          NOTRUN -> [SKIP][16] ([fdo#109271]) +27 similar issues
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-glk8/igt@gen7_exec_parse@oacontrol-tracking.html
    - shard-iclb:         NOTRUN -> [SKIP][17] ([fdo#109289]) +2 similar issues
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb6/igt@gen7_exec_parse@oacontrol-tracking.html
    - shard-tglb:         NOTRUN -> [SKIP][18] ([fdo#109289]) +1 similar issue
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb1/igt@gen7_exec_parse@oacontrol-tracking.html

  * igt@i915_pm_backlight@fade_with_dpms:
    - shard-kbl:          NOTRUN -> [SKIP][19] ([fdo#109271]) +34 similar issues
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-kbl3/igt@i915_pm_backlight@fade_with_dpms.html

  * igt@i915_pm_rc6_residency@media-rc6-accuracy:
    - shard-tglb:         NOTRUN -> [SKIP][20] ([fdo#109289] / [fdo#111719])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb1/igt@i915_pm_rc6_residency@media-rc6-accuracy.html

  * igt@i915_pm_rpm@modeset-non-lpsp-stress:
    - shard-kbl:          [PASS][21] -> [TIMEOUT][22] ([i915#1288])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-kbl7/igt@i915_pm_rpm@modeset-non-lpsp-stress.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-kbl7/igt@i915_pm_rpm@modeset-non-lpsp-stress.html
    - shard-apl:          [PASS][23] -> [TIMEOUT][24] ([i915#1288])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-apl6/igt@i915_pm_rpm@modeset-non-lpsp-stress.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-apl1/igt@i915_pm_rpm@modeset-non-lpsp-stress.html

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

  * igt@i915_selftest@live@blt:
    - shard-snb:          [PASS][27] -> [DMESG-FAIL][28] ([i915#1409])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-snb2/igt@i915_selftest@live@blt.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-snb7/igt@i915_selftest@live@blt.html

  * igt@i915_selftest@live@gt_lrc:
    - shard-tglb:         NOTRUN -> [DMESG-FAIL][29] ([i915#2373])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb6/igt@i915_selftest@live@gt_lrc.html

  * igt@i915_selftest@live@gt_pm:
    - shard-tglb:         NOTRUN -> [DMESG-FAIL][30] ([i915#1759] / [i915#2291])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb6/igt@i915_selftest@live@gt_pm.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-270:
    - shard-iclb:         NOTRUN -> [SKIP][31] ([fdo#110725] / [fdo#111614])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb2/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html
    - shard-tglb:         NOTRUN -> [SKIP][32] ([fdo#111614])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb5/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-8bpp-rotate-180:
    - shard-tglb:         NOTRUN -> [SKIP][33] ([fdo#111615])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb7/igt@kms_big_fb@yf-tiled-8bpp-rotate-180.html
    - shard-iclb:         NOTRUN -> [SKIP][34] ([fdo#110723])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb2/igt@kms_big_fb@yf-tiled-8bpp-rotate-180.html

  * igt@kms_chamelium@vga-hpd-fast:
    - shard-tglb:         NOTRUN -> [SKIP][35] ([fdo#109284] / [fdo#111827]) +1 similar issue
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb2/igt@kms_chamelium@vga-hpd-fast.html

  * igt@kms_chamelium@vga-hpd-for-each-pipe:
    - shard-kbl:          NOTRUN -> [SKIP][36] ([fdo#109271] / [fdo#111827]) +1 similar issue
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-kbl2/igt@kms_chamelium@vga-hpd-for-each-pipe.html
    - shard-apl:          NOTRUN -> [SKIP][37] ([fdo#109271] / [fdo#111827]) +1 similar issue
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-apl7/igt@kms_chamelium@vga-hpd-for-each-pipe.html
    - shard-glk:          NOTRUN -> [SKIP][38] ([fdo#109271] / [fdo#111827]) +1 similar issue
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-glk4/igt@kms_chamelium@vga-hpd-for-each-pipe.html
    - shard-iclb:         NOTRUN -> [SKIP][39] ([fdo#109284] / [fdo#111827]) +1 similar issue
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb3/igt@kms_chamelium@vga-hpd-for-each-pipe.html

  * igt@kms_color@pipe-b-degamma:
    - shard-tglb:         NOTRUN -> [FAIL][40] ([i915#1149])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb1/igt@kms_color@pipe-b-degamma.html
    - shard-iclb:         NOTRUN -> [FAIL][41] ([i915#1149])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb1/igt@kms_color@pipe-b-degamma.html

  * igt@kms_color@pipe-c-legacy-gamma:
    - shard-kbl:          [PASS][42] -> [FAIL][43] ([i915#71])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-kbl7/igt@kms_color@pipe-c-legacy-gamma.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-kbl6/igt@kms_color@pipe-c-legacy-gamma.html
    - shard-apl:          [PASS][44] -> [FAIL][45] ([i915#71])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-apl2/igt@kms_color@pipe-c-legacy-gamma.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-apl4/igt@kms_color@pipe-c-legacy-gamma.html

  * igt@kms_color_chamelium@pipe-a-ctm-0-25:
    - shard-hsw:          NOTRUN -> [SKIP][46] ([fdo#109271] / [fdo#111827]) +5 similar issues
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-hsw7/igt@kms_color_chamelium@pipe-a-ctm-0-25.html

  * igt@kms_color_chamelium@pipe-c-ctm-red-to-blue:
    - shard-snb:          NOTRUN -> [SKIP][47] ([fdo#109271] / [fdo#111827]) +3 similar issues
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-snb5/igt@kms_color_chamelium@pipe-c-ctm-red-to-blue.html

  * igt@kms_cursor_crc@pipe-c-cursor-128x128-random:
    - shard-apl:          [PASS][48] -> [FAIL][49] ([i915#54]) +1 similar issue
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-apl3/igt@kms_cursor_crc@pipe-c-cursor-128x128-random.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-apl4/igt@kms_cursor_crc@pipe-c-cursor-128x128-random.html
    - shard-kbl:          [PASS][50] -> [FAIL][51] ([i915#54]) +1 similar issue
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-kbl2/igt@kms_cursor_crc@pipe-c-cursor-128x128-random.html
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-kbl6/igt@kms_cursor_crc@pipe-c-cursor-128x128-random.html

  * igt@kms_cursor_crc@pipe-d-cursor-512x512-offscreen:
    - shard-tglb:         NOTRUN -> [SKIP][52] ([fdo#109279])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb6/igt@kms_cursor_crc@pipe-d-cursor-512x512-offscreen.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy:
    - shard-hsw:          [PASS][53] -> [FAIL][54] ([i915#96])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-hsw4/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-hsw8/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-toggle:
    - shard-iclb:         NOTRUN -> [SKIP][55] ([fdo#109274] / [fdo#109278])
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb3/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html

  * igt@kms_cursor_legacy@flip-vs-cursor-varying-size:
    - shard-tglb:         NOTRUN -> [FAIL][56] ([i915#2346])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb7/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html

  * igt@kms_cursor_legacy@pipe-d-single-bo:
    - shard-glk:          NOTRUN -> [SKIP][57] ([fdo#109271] / [i915#533])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-glk2/igt@kms_cursor_legacy@pipe-d-single-bo.html
    - shard-iclb:         NOTRUN -> [SKIP][58] ([fdo#109278]) +4 similar issues
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb7/igt@kms_cursor_legacy@pipe-d-single-bo.html
    - shard-kbl:          NOTRUN -> [SKIP][59] ([fdo#109271] / [i915#533])
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-kbl3/igt@kms_cursor_legacy@pipe-d-single-bo.html
    - shard-apl:          NOTRUN -> [SKIP][60] ([fdo#109271] / [i915#533])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-apl2/igt@kms_cursor_legacy@pipe-d-single-bo.html

  * igt@kms_flip@2x-flip-vs-dpms:
    - shard-iclb:         NOTRUN -> [SKIP][61] ([fdo#109274]) +1 similar issue
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb4/igt@kms_flip@2x-flip-vs-dpms.html

  * igt@kms_flip@flip-vs-expired-vblank@a-edp1:
    - shard-tglb:         [PASS][62] -> [FAIL][63] ([i915#2598])
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-tglb5/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb6/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-pwrite:
    - shard-tglb:         NOTRUN -> [SKIP][64] ([fdo#111825]) +9 similar issues
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-blt:
    - shard-iclb:         NOTRUN -> [SKIP][65] ([fdo#109280]) +6 similar issues
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb3/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-blt.html

  * igt@kms_hdmi_inject@inject-audio:
    - shard-tglb:         [PASS][66] -> [SKIP][67] ([i915#433])
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-tglb2/igt@kms_hdmi_inject@inject-audio.html
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb8/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_hdr@static-swap:
    - shard-tglb:         NOTRUN -> [SKIP][68] ([i915#1187])
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb7/igt@kms_hdr@static-swap.html
    - shard-iclb:         NOTRUN -> [SKIP][69] ([i915#1187])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb6/igt@kms_hdr@static-swap.html

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
    - shard-glk:          [PASS][70] -> [DMESG-WARN][71] ([i915#2635])
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-glk5/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b.html
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-glk2/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b.html
    - shard-apl:          [PASS][72] -> [DMESG-WARN][73] ([i915#2635])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-apl3/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b.html
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-apl2/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b.html
    - shard-kbl:          [PASS][74] -> [INCOMPLETE][75] ([CI#80])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-kbl2/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b.html
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-kbl3/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b.html
    - shard-hsw:          [PASS][76] -> [DMESG-WARN][77] ([i915#2637])
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-hsw4/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b.html
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-hsw6/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b.html

  * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max:
    - shard-glk:          NOTRUN -> [FAIL][78] ([fdo#108145] / [i915#265])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-glk6/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max.html
    - shard-apl:          NOTRUN -> [FAIL][79] ([fdo#108145] / [i915#265])
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-apl6/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max.html
    - shard-kbl:          NOTRUN -> [FAIL][80] ([fdo#108145] / [i915#265])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-kbl4/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max.html

  * igt@kms_psr@psr2_sprite_blt:
    - shard-iclb:         NOTRUN -> [SKIP][81] ([fdo#109441])
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb7/igt@kms_psr@psr2_sprite_blt.html

  * igt@kms_psr@psr2_sprite_plane_move:
    - shard-iclb:         [PASS][82] -> [SKIP][83] ([fdo#109441]) +1 similar issue
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb3/igt@kms_psr@psr2_sprite_plane_move.html

  * igt@kms_vblank@pipe-d-wait-forked-hang:
    - shard-apl:          NOTRUN -> [SKIP][84] ([fdo#109271]) +33 similar issues
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-apl2/igt@kms_vblank@pipe-d-wait-forked-hang.html

  * igt@prime_vgem@sync@bcs0:
    - shard-tglb:         [PASS][85] -> [INCOMPLETE][86] ([i915#409])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-tglb6/igt@prime_vgem@sync@bcs0.html
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb5/igt@prime_vgem@sync@bcs0.html

  * igt@runner@aborted:
    - shard-hsw:          NOTRUN -> ([FAIL][87], [FAIL][88]) ([fdo#109271] / [i915#1436] / [i915#2295] / [i915#2505] / [i915#2722])
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-hsw6/igt@runner@aborted.html
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-hsw8/igt@runner@aborted.html

  
#### Possible fixes ####

  * {igt@gem_exec_fair@basic-none-share@rcs0}:
    - shard-iclb:         [FAIL][89] ([i915#2842]) -> [PASS][90] +1 similar issue
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-iclb7/igt@gem_exec_fair@basic-none-share@rcs0.html
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb6/igt@gem_exec_fair@basic-none-share@rcs0.html

  * {igt@gem_exec_fair@basic-none@vecs0}:
    - shard-apl:          [FAIL][91] ([i915#2842]) -> [PASS][92]
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-apl2/igt@gem_exec_fair@basic-none@vecs0.html
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-apl7/igt@gem_exec_fair@basic-none@vecs0.html

  * {igt@gem_exec_fair@basic-pace-share@rcs0}:
    - shard-tglb:         [FAIL][93] ([i915#2842]) -> [PASS][94]
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-tglb2/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb8/igt@gem_exec_fair@basic-pace-share@rcs0.html
    - shard-glk:          [FAIL][95] ([i915#2842]) -> [PASS][96] +1 similar issue
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-glk5/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-glk4/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_reloc@basic-many-active@rcs0:
    - shard-glk:          [FAIL][97] ([i915#2389]) -> [PASS][98]
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-glk6/igt@gem_exec_reloc@basic-many-active@rcs0.html
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-glk3/igt@gem_exec_reloc@basic-many-active@rcs0.html

  * igt@gem_userptr_blits@map-fixed-invalidate-busy@uc:
    - shard-snb:          [INCOMPLETE][99] -> [PASS][100]
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-snb6/igt@gem_userptr_blits@map-fixed-invalidate-busy@uc.html
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-snb5/igt@gem_userptr_blits@map-fixed-invalidate-busy@uc.html

  * igt@i915_pm_dc@dc6-dpms:
    - shard-iclb:         [FAIL][101] ([i915#454]) -> [PASS][102]
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-iclb5/igt@i915_pm_dc@dc6-dpms.html
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb3/igt@i915_pm_dc@dc6-dpms.html

  * igt@kms_cursor_edge_walk@pipe-a-128x128-top-edge:
    - shard-snb:          [SKIP][103] ([fdo#109271]) -> [PASS][104]
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-snb4/igt@kms_cursor_edge_walk@pipe-a-128x128-top-edge.html
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-snb5/igt@kms_cursor_edge_walk@pipe-a-128x128-top-edge.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-onoff:
    - shard-glk:          [FAIL][105] ([i915#49]) -> [PASS][106]
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-glk4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-onoff.html
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-glk3/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-onoff.html

  * igt@kms_psr@psr2_cursor_render:
    - shard-iclb:         [SKIP][107] ([fdo#109441]) -> [PASS][108] +2 similar issues
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-iclb7/igt@kms_psr@psr2_cursor_render.html
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb2/igt@kms_psr@psr2_cursor_render.html

  * igt@perf@polling-parameterized:
    - shard-glk:          [FAIL][109] ([i915#1542]) -> [PASS][110]
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-glk8/igt@perf@polling-parameterized.html
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-glk8/igt@perf@polling-parameterized.html

  
#### Warnings ####

  * igt@i915_pm_dc@dc6-dpms:
    - shard-kbl:          [FAIL][111] ([i915#545]) -> [FAIL][112] ([i915#454])
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-kbl4/igt@i915_pm_dc@dc6-dpms.html
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-kbl2/igt@i915_pm_dc@dc6-dpms.html

  * igt@i915_pm_rc6_residency@rc6-fence:
    - shard-iclb:         [WARN][113] ([i915#1804] / [i915#2684]) -> [WARN][114] ([i915#2684])
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-iclb3/igt@i915_pm_rc6_residency@rc6-fence.html
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb2/igt@i915_pm_rc6_residency@rc6-fence.html

  * igt@i915_pm_rc6_residency@rc6-idle:
    - shard-iclb:         [WARN][115] ([i915#2681] / [i915#2684]) -> [WARN][116] ([i915#1804] / [i915#2684])
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-iclb8/igt@i915_pm_rc6_residency@rc6-idle.html
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb6/igt@i915_pm_rc6_residency@rc6-idle.html

  * igt@kms_async_flips@test-time-stamp:
    - shard-tglb:         [FAIL][117] ([i915#2574]) -> [FAIL][118] ([i915#2597])
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-tglb6/igt@kms_async_flips@test-time-stamp.html
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb6/igt@kms_async_flips@test-time-stamp.html

  * igt@runner@aborted:
    - shard-iclb:         [FAIL][119] ([i915#2295] / [i915#2724] / [i915#483]) -> ([FAIL][120], [FAIL][121]) ([i915#1814] / [i915#2295] / [i915#2724])
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-iclb5/igt@runner@aborted.html
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb7/igt@runner@aborted.html
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-iclb7/igt@runner@aborted.html
    - shard-apl:          [FAIL][122] ([i915#2295]) -> ([FAIL][123], [FAIL][124]) ([fdo#109271] / [i915#1814] / [i915#2295])
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-apl4/igt@runner@aborted.html
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-apl2/igt@runner@aborted.html
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-apl6/igt@runner@aborted.html
    - shard-glk:          [FAIL][125] ([i915#2295] / [k.org#202321]) -> ([FAIL][126], [FAIL][127]) ([i915#1814] / [i915#2295] / [k.org#202321])
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-glk6/igt@runner@aborted.html
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-glk2/igt@runner@aborted.html
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-glk6/igt@runner@aborted.html
    - shard-tglb:         [FAIL][128] ([i915#2295] / [i915#2667]) -> ([FAIL][129], [FAIL][130]) ([i915#2295] / [i915#2426] / [i915#2667] / [i915#409])
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9562/shard-tglb1/igt@runner@aborted.html
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb1/igt@runner@aborted.html
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5366/shard-tglb5/igt@runner@aborted.html

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

  [CI#80]: https://gitlab.freedesktop.org/gfx-ci/i915-infra/issues/80
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#110725]: https://bugs.freedesktop.org/show_bug.cgi?id=110725
  [fdo#110892]: https://bugs.freedesktop.org/show_bug.cgi?id=110892
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111644]: https://bugs.freedesktop.org/show_bug.cgi?id=111644
  [fdo#111719]: https://bugs.freedesktop.org/show_bug.cgi?id=111719
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1037]: https://gitlab.freedesktop.org/drm/intel/issues/1037
  [i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099
  [i915#1149]: https://gitlab.freedesktop.org/drm/intel/issues/1149
  [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
  [i915#1187]: https://gitlab.freedesktop.org/drm/intel/issues/1187
  [i915#1288]: https://gitlab.freedesktop.org/drm/intel/issues/1288
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#1409]: https://gitlab.freedesktop.org/drm/intel/issues/1409
  [i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/1436
  [i915#1542]: https://gitlab.freedesktop.org/drm/intel/issues/1542
  [i915#1759]: https://gitlab.freedesktop.org/drm/intel/issues/1759
  [i915#1804]: https://gitlab.freedesktop.org/drm/intel/issues/1804
  [i915#1814]: https://gitlab.freedesktop.org/drm/intel/issues/1814
  [i915#2291]: https://gitlab.freedesktop.org/drm/intel/issues/2291
  [i915#2295]: https://gitlab.freedesktop.org/drm/intel/issues/2295
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2373]: https://gitlab.freedesktop.org/drm/intel/issues/2373
  [i915#2389]: https://gitlab.freedesktop.org/drm/intel/issues/2389
  [i915#2411]: https://gitlab.freedesktop.org/drm/intel/issues/2411
  [i915#2426]: https://gitlab.freedesktop.org/drm/intel/issues/2426
  [i915#2505]: https://gitlab.freedesktop.org/drm/intel/issues/2505
  [i915#2574]: https://gitlab.freedesktop.org/drm/intel/issues/2574
  [i915#2597]: https://gitlab.freedesktop.org/drm/intel/issues/2597
  [i915#2598]: https://gitlab.freedesktop.org/drm/intel/issues/2598
  [i915#2635]: https://gitlab.freedesktop.org/drm/intel/issues/2635
  [i915#2637]: https://gitlab.freedesktop.org/drm/intel/issues/2637
  [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
  [i915#2667]: https://gitlab.freedesktop.org/drm/intel/issues/2667
  [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
  [i915#2684]: https://gitlab.freedesktop.org/drm/intel/issues/2684
  [i915#2722]: https://gitlab.freedesktop.org/drm/intel/issues/2722
  [i915#2724]: https://gitlab.freedesktop.org/drm/intel/issues/2724
  [i915#2802]: https://gitlab.freedesktop.org/drm/intel/issues/2802
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2870]: https://gitlab.freedesktop.org/drm/intel/issues/2870
  [i915#409]: https://gitlab.freedesktop.org/drm/intel/issues/409
  [i915#42]: https://gitlab.freedesktop.org/drm/intel/issues/42
  [i915#433]: https://gitlab.freedesktop.org/drm/intel/issues/433
  [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
  [i915#483]: https://gitlab.freedesktop.org/drm/intel/issues/483
  [i915#49]: https://gitlab.freedesktop.org/drm/intel/issues/49
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
  [i915#545]: https://gitlab.freedesktop.org/drm/intel/issues/545
  [i915#71]: https://g

== Logs ==

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

[-- Attachment #1.2: Type: text/html, Size: 36916 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

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

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

* Re: [igt-dev] [PATCH i-g-t 1/2] lib: Process kernel taints
  2021-01-07 10:43 [igt-dev] [PATCH i-g-t 1/2] lib: Process kernel taints Chris Wilson
                   ` (2 preceding siblings ...)
  2021-01-07 20:12 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
@ 2021-01-08 12:26 ` Petri Latvala
  2021-01-08 13:01 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
  2021-01-08 13:45 ` [igt-dev] ✗ Fi.CI.BAT: failure for series starting with [i-g-t] lib: Process kernel taints (rev2) Patchwork
  5 siblings, 0 replies; 9+ messages in thread
From: Petri Latvala @ 2021-01-08 12:26 UTC (permalink / raw)
  To: Chris Wilson; +Cc: igt-dev

On Thu, Jan 07, 2021 at 10:43:27AM +0000, Chris Wilson wrote:
> A small library routine to read '/proc/sys/kernel/taints' and check for
> a fatal condition. This is currently used by the runner, but is also
> useful for some tests.
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> ---
>  lib/Makefile.sources |  2 ++
>  lib/igt_taints.c     | 65 +++++++++++++++++++++++++++++++++++++++
>  lib/igt_taints.h     | 19 ++++++++++++
>  lib/meson.build      |  1 +
>  runner/executor.c    | 73 +++++++++-----------------------------------
>  5 files changed, 101 insertions(+), 59 deletions(-)
>  create mode 100644 lib/igt_taints.c
>  create mode 100644 lib/igt_taints.h
> 
> diff --git a/lib/Makefile.sources b/lib/Makefile.sources
> index 67b386457..7102f95e7 100644
> --- a/lib/Makefile.sources
> +++ b/lib/Makefile.sources
> @@ -64,6 +64,8 @@ lib_source_list =	 	\
>  	igt_sysfs.h		\
>  	igt_sysrq.c		\
>  	igt_sysrq.h		\
> +	igt_taints.c		\
> +	igt_taints.h		\
>  	igt_thread.c		\
>  	igt_thread.h		\
>  	igt_x86.h		\
> diff --git a/lib/igt_taints.c b/lib/igt_taints.c
> new file mode 100644
> index 000000000..f9b32d106
> --- /dev/null
> +++ b/lib/igt_taints.c
> @@ -0,0 +1,65 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2021 Intel Corporation
> + */
> +
> +#include <stdio.h>
> +
> +#include "igt_taints.h"
> +
> +/* see Linux's include/linux/kernel.h */
> +static const struct {
> +	int bit;
> +	int bad;
> +	const char *explanation;
> +} abort_taints[] = {
> +  { 5, 1, "TAINT_BAD_PAGE: Bad page reference or an unexpected page flags." },
> +  { 7, 1, "TAINT_DIE: Kernel has died - BUG/OOPS." },
> +  { 9, 1, "TAINT_WARN: WARN_ON has happened." },
> +  { -1 }
> +};
> +
> +const char *igt_explain_taints(unsigned long *taints)
> +{
> +	for (typeof(*abort_taints) *taint = abort_taints;
> +	     taint->bit >= 0;
> +	     taint++) {
> +		if (*taints & (1ul << taint->bit)) {
> +			*taints &= ~(1ul << taint->bit);
> +			return taint->explanation;
> +		}
> +	}
> +
> +	return NULL;
> +}

Docs for these functions are now in order now that they found a place
in lib/. Especially this function with the required "call until funny"
semantics.


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

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

* Re: [igt-dev] [PATCH i-g-t 2/2] lib/kmod: Check for kernel taints before/after selftests
  2021-01-07 10:43 ` [igt-dev] [PATCH i-g-t 2/2] lib/kmod: Check for kernel taints before/after selftests Chris Wilson
@ 2021-01-08 12:28   ` Petri Latvala
  0 siblings, 0 replies; 9+ messages in thread
From: Petri Latvala @ 2021-01-08 12:28 UTC (permalink / raw)
  To: Chris Wilson; +Cc: igt-dev

On Thu, Jan 07, 2021 at 10:43:28AM +0000, Chris Wilson wrote:
> If the kernel generates a bad taint during the selftest (e.g. a
> warning), declare the selftest to be a failure.
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

Neat and elegant.

Reviewed-by: Petri Latvala <petri.latvala@intel.com>



> ---
>  lib/igt_kmod.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
> index ebeacd6fc..2ae45a1a1 100644
> --- a/lib/igt_kmod.c
> +++ b/lib/igt_kmod.c
> @@ -29,6 +29,7 @@
>  #include "igt_core.h"
>  #include "igt_kmod.h"
>  #include "igt_sysfs.h"
> +#include "igt_taints.h"
>  
>  /**
>   * SECTION:igt_kmod
> @@ -582,9 +583,12 @@ int igt_kselftest_execute(struct igt_kselftest *tst,
>  			  const char *options,
>  			  const char *result)
>  {
> +	unsigned long taints;
>  	char buf[1024];
>  	int err;
>  
> +	igt_skip_on(igt_kernel_tainted(&taints));
> +
>  	lseek(tst->kmsg, 0, SEEK_END);
>  
>  	snprintf(buf, sizeof(buf), "%s=1 %s", tl->param, options ?: "");
> @@ -607,6 +611,8 @@ int igt_kselftest_execute(struct igt_kselftest *tst,
>  		     "kselftest \"%s %s\" failed: %s [%d]\n",
>  		     tst->module_name, buf, strerror(-err), -err);
>  
> +	igt_assert_eq(igt_kernel_tainted(&taints), 0);
> +
>  	return err;
>  }
>  
> -- 
> 2.30.0
> 
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] [PATCH i-g-t] lib: Process kernel taints
  2021-01-07 10:43 [igt-dev] [PATCH i-g-t 1/2] lib: Process kernel taints Chris Wilson
                   ` (3 preceding siblings ...)
  2021-01-08 12:26 ` [igt-dev] [PATCH i-g-t 1/2] " Petri Latvala
@ 2021-01-08 13:01 ` Chris Wilson
  2021-01-08 13:30   ` Petri Latvala
  2021-01-08 13:45 ` [igt-dev] ✗ Fi.CI.BAT: failure for series starting with [i-g-t] lib: Process kernel taints (rev2) Patchwork
  5 siblings, 1 reply; 9+ messages in thread
From: Chris Wilson @ 2021-01-08 13:01 UTC (permalink / raw)
  To: igt-dev; +Cc: Petri Latvala, Chris Wilson

A small library routine to read '/proc/sys/kernel/taints' and check for
a fatal condition. This is currently used by the runner, but is also
useful for some tests.

v2: function docs

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Petri Latvala <petri.latvala@intel.com>
---
 lib/Makefile.sources |  2 +
 lib/igt_taints.c     | 98 ++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_taints.h     | 19 +++++++++
 lib/meson.build      |  1 +
 runner/executor.c    | 73 +++++++--------------------------
 5 files changed, 134 insertions(+), 59 deletions(-)
 create mode 100644 lib/igt_taints.c
 create mode 100644 lib/igt_taints.h

diff --git a/lib/Makefile.sources b/lib/Makefile.sources
index 67b386457..7102f95e7 100644
--- a/lib/Makefile.sources
+++ b/lib/Makefile.sources
@@ -64,6 +64,8 @@ lib_source_list =	 	\
 	igt_sysfs.h		\
 	igt_sysrq.c		\
 	igt_sysrq.h		\
+	igt_taints.c		\
+	igt_taints.h		\
 	igt_thread.c		\
 	igt_thread.h		\
 	igt_x86.h		\
diff --git a/lib/igt_taints.c b/lib/igt_taints.c
new file mode 100644
index 000000000..a5a7e6cae
--- /dev/null
+++ b/lib/igt_taints.c
@@ -0,0 +1,98 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2021 Intel Corporation
+ */
+
+#include <stdio.h>
+
+#include "igt_taints.h"
+
+/* see Linux's include/linux/kernel.h */
+static const struct {
+	int bit;
+	int bad;
+	const char *explanation;
+} abort_taints[] = {
+  { 5, 1, "TAINT_BAD_PAGE: Bad page reference or an unexpected page flags." },
+  { 7, 1, "TAINT_DIE: Kernel has died - BUG/OOPS." },
+  { 9, 1, "TAINT_WARN: WARN_ON has happened." },
+  { -1 }
+};
+
+/**
+ * igt_explain_taints:
+ * @taints: mask of taints requiring an explanation [inout]
+ *
+ * Inspects the mask and looks up the first reason correspoding to a set
+ * bit in the mast. It returns the reason as a string constant, and removes
+ * the bit from the mask. If the mask is empty, or we have no known reason
+ * matching the match, NULL is returned.
+ *
+ * This may be used in a loop to extract all known reasons for why the
+ * kernel tained:
+ *
+ * while (reason = igt_explain_taints(&taints))
+ * 	igt_info("%s", reason);
+ *
+ * Returns the first reason corresponding to a taint bit.
+ */
+const char *igt_explain_taints(unsigned long *taints)
+{
+	for (typeof(*abort_taints) *taint = abort_taints;
+	     taint->bit >= 0;
+	     taint++) {
+		if (*taints & (1ul << taint->bit)) {
+			*taints &= ~(1ul << taint->bit);
+			return taint->explanation;
+		}
+	}
+
+	return NULL;
+}
+
+/**
+ * igt_bad_taints:
+ *
+ * Returns the mask of kernel taints that IGT considers fatal.
+ * Such as TAINT_WARN set when the kernel oopses.
+ */
+unsigned long igt_bad_taints(void)
+{
+	static unsigned long bad_taints;
+
+	if (!bad_taints) {
+		for (typeof(*abort_taints) *taint = abort_taints;
+		     taint->bit >= 0;
+		     taint++) {
+			if (taint->bad)
+				bad_taints |= 1ul << taint->bit;
+		}
+	}
+
+	return bad_taints;
+}
+
+/**
+ * igt_kernel_tainted:
+ * @taints: bitmask of kernel taints [out]
+ *
+ * Reads "/prco/sys/kernel/tainted" and returns both the set of all
+ * taints reported via @taints, and the set of fatal taints as the
+ * return parameters.
+ *
+ * Returns a mask of fatal taints; 0 if untainted.
+ */
+unsigned long igt_kernel_tainted(unsigned long *taints)
+{
+	FILE *f;
+
+	*taints = 0;
+
+	f = fopen("/proc/sys/kernel/tainted", "r");
+	if (f) {
+		fscanf(f, "%lu", taints);
+		fclose(f);
+	}
+
+	return is_tainted(*taints);
+}
diff --git a/lib/igt_taints.h b/lib/igt_taints.h
new file mode 100644
index 000000000..be4195c5a
--- /dev/null
+++ b/lib/igt_taints.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2021 Intel Corporation
+ */
+
+#ifndef __IGT_TAINTS_H__
+#define __IGT_TAINTS_H__
+
+unsigned long igt_kernel_tainted(unsigned long *taints);
+const char *igt_explain_taints(unsigned long *taints);
+
+unsigned long igt_bad_taints(void);
+
+static inline unsigned long is_tainted(unsigned long taints)
+{
+	return taints & igt_bad_taints();
+}
+
+#endif /* __IGT_TAINTS_H__ */
diff --git a/lib/meson.build b/lib/meson.build
index 540facb24..3abc42cb3 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -27,6 +27,7 @@ lib_sources = [
 	'igt_syncobj.c',
 	'igt_sysfs.c',
 	'igt_sysrq.c',
+	'igt_taints.c',
 	'igt_thread.c',
 	'igt_vec.c',
 	'igt_vgem.c',
diff --git a/runner/executor.c b/runner/executor.c
index faf272d85..93db8bb36 100644
--- a/runner/executor.c
+++ b/runner/executor.c
@@ -24,6 +24,7 @@
 
 #include "igt_aux.h"
 #include "igt_core.h"
+#include "igt_taints.h"
 #include "executor.h"
 #include "output_strings.h"
 
@@ -307,70 +308,23 @@ static char *handle_lockdep(void)
 	return NULL;
 }
 
-/* see Linux's include/linux/kernel.h */
-static const struct {
-	unsigned long bit;
-	const char *explanation;
-} abort_taints[] = {
-  {(1 << 5), "TAINT_BAD_PAGE: Bad page reference or an unexpected page flags."},
-  {(1 << 7), "TAINT_DIE: Kernel has died - BUG/OOPS."},
-  {(1 << 9), "TAINT_WARN: WARN_ON has happened."},
-  {0, 0}};
-
-static unsigned long bad_taints(void)
-{
-	static unsigned long __bad_taints;
-
-	if (!__bad_taints) {
-		for (typeof(*abort_taints) *taint = abort_taints;
-		     taint->bit;
-		     taint++)
-			__bad_taints |= taint->bit;
-	}
-
-	return __bad_taints;
-}
-
-static unsigned long is_tainted(unsigned long taints)
-{
-	return taints & bad_taints();
-}
-
-static unsigned long tainted(unsigned long *taints)
-{
-	FILE *f;
-
-	*taints = 0;
-
-	f = fopen("/proc/sys/kernel/tainted", "r");
-	if (f) {
-		fscanf(f, "%lu", taints);
-		fclose(f);
-	}
-
-	return is_tainted(*taints);
-}
-
 static char *handle_taint(void)
 {
-	unsigned long taints;
+	unsigned long taints, bad;
+	char *explain;
 	char *reason;
 
-	if (!tainted(&taints))
+	bad = igt_kernel_tainted(&taints);
+	if (!bad)
 		return NULL;
 
-	asprintf(&reason, "Kernel badly tainted (%#lx) (check dmesg for details):\n",
-		 taints);
-
-	for (typeof(*abort_taints) *taint = abort_taints; taint->bit; taint++) {
-		if (taint->bit & taints) {
-			char *old_reason = reason;
-			asprintf(&reason, "%s\t(%#lx) %s\n",
-					old_reason,
-					taint->bit,
-					taint->explanation);
-			free(old_reason);
-		}
+	asprintf(&reason, "Kernel badly tainted (%#lx, %#lx) (check dmesg for details):\n",
+		 taints, bad);
+
+	while ((explain = igt_explain_taints(&bad))) {
+		char *old_reason = reason;
+		asprintf(&reason, "%s\t%s\n", old_reason, explain);
+		free(old_reason);
 	}
 
 	return reason;
@@ -1142,7 +1096,8 @@ static int monitor_output(pid_t child,
 			sigfd = -1; /* we are dying, no signal handling for now */
 		}
 
-		timeout_reason = need_to_timeout(settings, killed, tainted(&taints),
+		timeout_reason = need_to_timeout(settings, killed,
+						 igt_kernel_tainted(&taints),
 						 igt_time_elapsed(&time_last_activity, &time_now),
 						 igt_time_elapsed(&time_last_subtest, &time_now),
 						 igt_time_elapsed(&time_killed, &time_now),
-- 
2.30.0

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

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

* Re: [igt-dev] [PATCH i-g-t] lib: Process kernel taints
  2021-01-08 13:01 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
@ 2021-01-08 13:30   ` Petri Latvala
  0 siblings, 0 replies; 9+ messages in thread
From: Petri Latvala @ 2021-01-08 13:30 UTC (permalink / raw)
  To: Chris Wilson; +Cc: igt-dev

On Fri, Jan 08, 2021 at 01:01:57PM +0000, Chris Wilson wrote:
> A small library routine to read '/proc/sys/kernel/taints' and check for
> a fatal condition. This is currently used by the runner, but is also
> useful for some tests.
> 
> v2: function docs
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Petri Latvala <petri.latvala@intel.com>
> ---
>  lib/Makefile.sources |  2 +
>  lib/igt_taints.c     | 98 ++++++++++++++++++++++++++++++++++++++++++++
>  lib/igt_taints.h     | 19 +++++++++
>  lib/meson.build      |  1 +
>  runner/executor.c    | 73 +++++++--------------------------
>  5 files changed, 134 insertions(+), 59 deletions(-)
>  create mode 100644 lib/igt_taints.c
>  create mode 100644 lib/igt_taints.h
> 
> diff --git a/lib/Makefile.sources b/lib/Makefile.sources
> index 67b386457..7102f95e7 100644
> --- a/lib/Makefile.sources
> +++ b/lib/Makefile.sources
> @@ -64,6 +64,8 @@ lib_source_list =	 	\
>  	igt_sysfs.h		\
>  	igt_sysrq.c		\
>  	igt_sysrq.h		\
> +	igt_taints.c		\
> +	igt_taints.h		\
>  	igt_thread.c		\
>  	igt_thread.h		\
>  	igt_x86.h		\
> diff --git a/lib/igt_taints.c b/lib/igt_taints.c
> new file mode 100644
> index 000000000..a5a7e6cae
> --- /dev/null
> +++ b/lib/igt_taints.c
> @@ -0,0 +1,98 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2021 Intel Corporation
> + */
> +
> +#include <stdio.h>
> +
> +#include "igt_taints.h"
> +
> +/* see Linux's include/linux/kernel.h */
> +static const struct {
> +	int bit;
> +	int bad;
> +	const char *explanation;
> +} abort_taints[] = {
> +  { 5, 1, "TAINT_BAD_PAGE: Bad page reference or an unexpected page flags." },
> +  { 7, 1, "TAINT_DIE: Kernel has died - BUG/OOPS." },
> +  { 9, 1, "TAINT_WARN: WARN_ON has happened." },
> +  { -1 }
> +};
> +
> +/**
> + * igt_explain_taints:
> + * @taints: mask of taints requiring an explanation [inout]
> + *
> + * Inspects the mask and looks up the first reason correspoding to a set
> + * bit in the mast. It returns the reason as a string constant, and removes
> + * the bit from the mask. If the mask is empty, or we have no known reason
> + * matching the match, NULL is returned.
> + *
> + * This may be used in a loop to extract all known reasons for why the
> + * kernel tained:

s/correspoding/corresponding/
s/mast/mask/
s/matching the match/matching the mask/

> + *
> + * while (reason = igt_explain_taints(&taints))
> + * 	igt_info("%s", reason);
> + *
> + * Returns the first reason corresponding to a taint bit.
> + */
> +const char *igt_explain_taints(unsigned long *taints)
> +{
> +	for (typeof(*abort_taints) *taint = abort_taints;
> +	     taint->bit >= 0;
> +	     taint++) {
> +		if (*taints & (1ul << taint->bit)) {
> +			*taints &= ~(1ul << taint->bit);
> +			return taint->explanation;
> +		}
> +	}
> +
> +	return NULL;
> +}
> +
> +/**
> + * igt_bad_taints:
> + *
> + * Returns the mask of kernel taints that IGT considers fatal.
> + * Such as TAINT_WARN set when the kernel oopses.
> + */
> +unsigned long igt_bad_taints(void)
> +{
> +	static unsigned long bad_taints;
> +
> +	if (!bad_taints) {
> +		for (typeof(*abort_taints) *taint = abort_taints;
> +		     taint->bit >= 0;
> +		     taint++) {
> +			if (taint->bad)
> +				bad_taints |= 1ul << taint->bit;
> +		}
> +	}
> +
> +	return bad_taints;
> +}
> +
> +/**
> + * igt_kernel_tainted:
> + * @taints: bitmask of kernel taints [out]
> + *
> + * Reads "/prco/sys/kernel/tainted" and returns both the set of all
> + * taints reported via @taints, and the set of fatal taints as the
> + * return parameters.
> + *
> + * Returns a mask of fatal taints; 0 if untainted.
> + */

s/prco/proc/

Move the "both" word later so it's clear it's returning the same thing
with two means, instead of returning two things.


With those

Reviewed-by: Petri Latvala <petri.latvala@intel.com>


> +unsigned long igt_kernel_tainted(unsigned long *taints)
> +{
> +	FILE *f;
> +
> +	*taints = 0;
> +
> +	f = fopen("/proc/sys/kernel/tainted", "r");
> +	if (f) {
> +		fscanf(f, "%lu", taints);
> +		fclose(f);
> +	}
> +
> +	return is_tainted(*taints);
> +}
> diff --git a/lib/igt_taints.h b/lib/igt_taints.h
> new file mode 100644
> index 000000000..be4195c5a
> --- /dev/null
> +++ b/lib/igt_taints.h
> @@ -0,0 +1,19 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2021 Intel Corporation
> + */
> +
> +#ifndef __IGT_TAINTS_H__
> +#define __IGT_TAINTS_H__
> +
> +unsigned long igt_kernel_tainted(unsigned long *taints);
> +const char *igt_explain_taints(unsigned long *taints);
> +
> +unsigned long igt_bad_taints(void);
> +
> +static inline unsigned long is_tainted(unsigned long taints)
> +{
> +	return taints & igt_bad_taints();
> +}
> +
> +#endif /* __IGT_TAINTS_H__ */
> diff --git a/lib/meson.build b/lib/meson.build
> index 540facb24..3abc42cb3 100644
> --- a/lib/meson.build
> +++ b/lib/meson.build
> @@ -27,6 +27,7 @@ lib_sources = [
>  	'igt_syncobj.c',
>  	'igt_sysfs.c',
>  	'igt_sysrq.c',
> +	'igt_taints.c',
>  	'igt_thread.c',
>  	'igt_vec.c',
>  	'igt_vgem.c',
> diff --git a/runner/executor.c b/runner/executor.c
> index faf272d85..93db8bb36 100644
> --- a/runner/executor.c
> +++ b/runner/executor.c
> @@ -24,6 +24,7 @@
>  
>  #include "igt_aux.h"
>  #include "igt_core.h"
> +#include "igt_taints.h"
>  #include "executor.h"
>  #include "output_strings.h"
>  
> @@ -307,70 +308,23 @@ static char *handle_lockdep(void)
>  	return NULL;
>  }
>  
> -/* see Linux's include/linux/kernel.h */
> -static const struct {
> -	unsigned long bit;
> -	const char *explanation;
> -} abort_taints[] = {
> -  {(1 << 5), "TAINT_BAD_PAGE: Bad page reference or an unexpected page flags."},
> -  {(1 << 7), "TAINT_DIE: Kernel has died - BUG/OOPS."},
> -  {(1 << 9), "TAINT_WARN: WARN_ON has happened."},
> -  {0, 0}};
> -
> -static unsigned long bad_taints(void)
> -{
> -	static unsigned long __bad_taints;
> -
> -	if (!__bad_taints) {
> -		for (typeof(*abort_taints) *taint = abort_taints;
> -		     taint->bit;
> -		     taint++)
> -			__bad_taints |= taint->bit;
> -	}
> -
> -	return __bad_taints;
> -}
> -
> -static unsigned long is_tainted(unsigned long taints)
> -{
> -	return taints & bad_taints();
> -}
> -
> -static unsigned long tainted(unsigned long *taints)
> -{
> -	FILE *f;
> -
> -	*taints = 0;
> -
> -	f = fopen("/proc/sys/kernel/tainted", "r");
> -	if (f) {
> -		fscanf(f, "%lu", taints);
> -		fclose(f);
> -	}
> -
> -	return is_tainted(*taints);
> -}
> -
>  static char *handle_taint(void)
>  {
> -	unsigned long taints;
> +	unsigned long taints, bad;
> +	char *explain;
>  	char *reason;
>  
> -	if (!tainted(&taints))
> +	bad = igt_kernel_tainted(&taints);
> +	if (!bad)
>  		return NULL;
>  
> -	asprintf(&reason, "Kernel badly tainted (%#lx) (check dmesg for details):\n",
> -		 taints);
> -
> -	for (typeof(*abort_taints) *taint = abort_taints; taint->bit; taint++) {
> -		if (taint->bit & taints) {
> -			char *old_reason = reason;
> -			asprintf(&reason, "%s\t(%#lx) %s\n",
> -					old_reason,
> -					taint->bit,
> -					taint->explanation);
> -			free(old_reason);
> -		}
> +	asprintf(&reason, "Kernel badly tainted (%#lx, %#lx) (check dmesg for details):\n",
> +		 taints, bad);
> +
> +	while ((explain = igt_explain_taints(&bad))) {
> +		char *old_reason = reason;
> +		asprintf(&reason, "%s\t%s\n", old_reason, explain);
> +		free(old_reason);
>  	}
>  
>  	return reason;
> @@ -1142,7 +1096,8 @@ static int monitor_output(pid_t child,
>  			sigfd = -1; /* we are dying, no signal handling for now */
>  		}
>  
> -		timeout_reason = need_to_timeout(settings, killed, tainted(&taints),
> +		timeout_reason = need_to_timeout(settings, killed,
> +						 igt_kernel_tainted(&taints),
>  						 igt_time_elapsed(&time_last_activity, &time_now),
>  						 igt_time_elapsed(&time_last_subtest, &time_now),
>  						 igt_time_elapsed(&time_killed, &time_now),
> -- 
> 2.30.0
> 
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] ✗ Fi.CI.BAT: failure for series starting with [i-g-t] lib: Process kernel taints (rev2)
  2021-01-07 10:43 [igt-dev] [PATCH i-g-t 1/2] lib: Process kernel taints Chris Wilson
                   ` (4 preceding siblings ...)
  2021-01-08 13:01 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
@ 2021-01-08 13:45 ` Patchwork
  5 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2021-01-08 13:45 UTC (permalink / raw)
  To: Chris Wilson; +Cc: igt-dev


[-- Attachment #1.1: Type: text/plain, Size: 3803 bytes --]

== Series Details ==

Series: series starting with [i-g-t] lib: Process kernel taints (rev2)
URL   : https://patchwork.freedesktop.org/series/85579/
State : failure

== Summary ==

CI Bug Log - changes from IGT_5949 -> IGTPW_5370
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_5370 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_5370, please notify your bug team 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_5370/index.html

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@runner@aborted:
    - fi-tgl-y:           NOTRUN -> [FAIL][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5370/fi-tgl-y/igt@runner@aborted.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live@gem_contexts:
    - fi-tgl-y:           [PASS][2] -> [INCOMPLETE][3] ([i915#402])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5949/fi-tgl-y/igt@i915_selftest@live@gem_contexts.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5370/fi-tgl-y/igt@i915_selftest@live@gem_contexts.html

  * igt@kms_chamelium@hdmi-crc-fast:
    - fi-kbl-7500u:       [PASS][4] -> [DMESG-WARN][5] ([i915#2868])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5949/fi-kbl-7500u/igt@kms_chamelium@hdmi-crc-fast.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5370/fi-kbl-7500u/igt@kms_chamelium@hdmi-crc-fast.html

  * igt@prime_self_import@basic-with_one_bo_two_files:
    - fi-tgl-y:           [PASS][6] -> [DMESG-WARN][7] ([i915#402]) +1 similar issue
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5949/fi-tgl-y/igt@prime_self_import@basic-with_one_bo_two_files.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5370/fi-tgl-y/igt@prime_self_import@basic-with_one_bo_two_files.html

  
#### Possible fixes ####

  * igt@debugfs_test@read_all_entries:
    - fi-tgl-y:           [DMESG-WARN][8] ([i915#402]) -> [PASS][9] +2 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5949/fi-tgl-y/igt@debugfs_test@read_all_entries.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5370/fi-tgl-y/igt@debugfs_test@read_all_entries.html

  * igt@i915_selftest@live@sanitycheck:
    - fi-kbl-7500u:       [DMESG-WARN][10] ([i915#2605]) -> [PASS][11]
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5949/fi-kbl-7500u/igt@i915_selftest@live@sanitycheck.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5370/fi-kbl-7500u/igt@i915_selftest@live@sanitycheck.html

  
  [i915#2605]: https://gitlab.freedesktop.org/drm/intel/issues/2605
  [i915#2868]: https://gitlab.freedesktop.org/drm/intel/issues/2868
  [i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402


Participating hosts (43 -> 37)
------------------------------

  Missing    (6): fi-ilk-m540 fi-hsw-4200u fi-bsw-cyan fi-ctg-p8600 fi-dg1-1 fi-bdw-samus 


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

  * CI: CI-20190529 -> None
  * IGT: IGT_5949 -> IGTPW_5370

  CI-20190529: 20190529
  CI_DRM_9565: 683dfd284ebe3924e36ae9d3b7edc9ec47080266 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_5370: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5370/index.html
  IGT_5949: b7b071eaf501d27ee4c1940b2e825da269f8b43b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

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

[-- Attachment #1.2: Type: text/html, Size: 4689 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

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

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

end of thread, other threads:[~2021-01-08 13:45 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-07 10:43 [igt-dev] [PATCH i-g-t 1/2] lib: Process kernel taints Chris Wilson
2021-01-07 10:43 ` [igt-dev] [PATCH i-g-t 2/2] lib/kmod: Check for kernel taints before/after selftests Chris Wilson
2021-01-08 12:28   ` Petri Latvala
2021-01-07 15:34 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/2] lib: Process kernel taints Patchwork
2021-01-07 20:12 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2021-01-08 12:26 ` [igt-dev] [PATCH i-g-t 1/2] " Petri Latvala
2021-01-08 13:01 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
2021-01-08 13:30   ` Petri Latvala
2021-01-08 13:45 ` [igt-dev] ✗ Fi.CI.BAT: failure for series starting with [i-g-t] lib: Process kernel taints (rev2) Patchwork

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