All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t 0/2] Resurrect GuC Relay Logging
@ 2022-05-09 21:21 Alan Previn
  2022-05-09 21:21 ` [igt-dev] [PATCH i-g-t 1/2] tools/intel_guc_logger: Re-enable basic functionality Alan Previn
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Alan Previn @ 2022-05-09 21:21 UTC (permalink / raw)
  To: igt-dev

This series brings GuC relay logging back to life by
re-aligning the (previously implicit, now query-able)
guc-log-relay subbuffer-specs, debugfs file handle names
and usages between intel_guc_logger tool and i915.

This series depends on fixes and updates on the
kernel side via this series:
https://patchwork.freedesktop.org/series/103767/

Alan Previn (2):
  tools/intel_guc_logger: Re-enable basic functionality
  tools/intel_guc_logger: Refactor intel_guc_logger globals into structs

 tools/intel_guc_logger.c | 517 ++++++++++++++++++++++++++-------------
 1 file changed, 348 insertions(+), 169 deletions(-)


base-commit: cffa5fffe9acddf49565b4caeeb5e3355ff2ea44
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t 1/2] tools/intel_guc_logger: Re-enable basic functionality
  2022-05-09 21:21 [igt-dev] [PATCH i-g-t 0/2] Resurrect GuC Relay Logging Alan Previn
@ 2022-05-09 21:21 ` Alan Previn
  2022-07-19 21:35   ` Teres Alexis, Alan Previn
  2022-05-09 21:21 ` [igt-dev] [PATCH i-g-t 2/2] tools/intel_guc_logger: Refactor intel_guc_logger globals into structs Alan Previn
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 7+ messages in thread
From: Alan Previn @ 2022-05-09 21:21 UTC (permalink / raw)
  To: igt-dev

Fix these multiple issues to get basic functionality up
and running on GuC using:
1. Start using the updated debugfs path for all GuC relay-logging
   file names.
2. Use the updated debugfs names for the relay-logging control
   and channel files to match kernel changes.
3. Start querrying the relay sub-buffer info (buffer size and
   number of sub-buffers) from kernel's new debugfs files.
4. Separate the control enabling from the log-level-setting and
   keep the control handle open while collecting the logs.

Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com>
---
 tools/intel_guc_logger.c | 179 ++++++++++++++++++++++++++++-----------
 1 file changed, 129 insertions(+), 50 deletions(-)

diff --git a/tools/intel_guc_logger.c b/tools/intel_guc_logger.c
index 5f1de8db..4a991127 100644
--- a/tools/intel_guc_logger.c
+++ b/tools/intel_guc_logger.c
@@ -42,24 +42,30 @@
 
 #include "igt.h"
 
+#define KB(x) ((uint64_t)(x) * 1024)
 #define MB(x) ((uint64_t)(x) * 1024 * 1024)
 #ifndef PAGE_SIZE
   #define PAGE_SIZE 4096
 #endif
-/* Currently the size of GuC log buffer is 19 pages & so is the size of relay
- * subbuffer. If the size changes in future, then this define also needs to be
- * updated accordingly.
- */
-#define SUBBUF_SIZE (19*PAGE_SIZE)
-/* Need large buffering from logger side to hide the DISK IO latency, Driver
- * can only store 8 snapshots of GuC log buffer in relay.
- */
-#define NUM_SUBBUFS 100
 
-#define RELAY_FILE_NAME  "guc_log"
 #define DEFAULT_OUTPUT_FILE_NAME  "guc_log_dump.dat"
-#define CONTROL_FILE_NAME "i915_guc_log_control"
 
+#define GLR_LOGLEVEL_NAME         "guc_log_level"
+#define GLR_CTL_NAME              "guc_log_relay_ctl"
+#define GLR_CHANNEL_NAME          "guc_log_relay_chan0"
+
+#define DEFAULT_SUBBUF_COUNT         (4 * 8)
+					/* default to kernel built-in:   *
+					 *   4 x 8 subbuf regions        *
+					 */
+#define DEFAULT_SUBBUF_SIZE          (KB(4 + 8 + 64))
+					/* default to kernel built-ins : *
+					 *   4K -> buffer states array   *
+					 *   8K -> GuC crash dump        *
+					 *  64K -> log events buffer     *
+					 */
+
+int drm_fd;
 char *read_buffer;
 char *out_filename;
 int poll_timeout = 2; /* by default 2ms timeout */
@@ -68,23 +74,53 @@ pthread_t flush_thread;
 int verbosity_level = 3; /* by default capture logs at max verbosity */
 uint32_t produced, consumed;
 uint64_t total_bytes_written;
-int num_buffers = NUM_SUBBUFS;
-int relay_fd, outfile_fd = -1;
+int subbuf_count;
+int subbuf_size;
+int ctl_fd, relay_fd, outfile_fd = -1;
 uint32_t test_duration, max_filesize;
 pthread_cond_t underflow_cond, overflow_cond;
 bool stop_logging, discard_oldlogs, capturing_stopped;
+char *gucfspath;
 
-static void guc_log_control(bool enable, uint32_t log_level)
+static void get_guc_subbuf_info(void)
+{
+	int fd, ret, j;
+	char *path;
+	const char *dbg_fs_names[2] = {"guc_log_relay_buf_size\0",
+					"guc_log_relay_subbuf_count\0"};
+	char outstr[128];
+	uint64_t tmp[2] = {DEFAULT_SUBBUF_SIZE, DEFAULT_SUBBUF_COUNT};
+
+	for (j = 0; j < 2; j++) {
+		igt_assert_neq(asprintf(&path, "%s/%s", gucfspath, dbg_fs_names[j]), -1);
+		igt_info("Opening subbuf path %s\n", path);
+		fd = igt_debugfs_open(drm_fd, path, O_RDONLY);
+		free(path);
+		igt_assert_f(fd >= 0, "couldn't open the GuC log relay-subbuf file\n");
+		ret = read(fd, outstr, sizeof(outstr) - 1);
+		igt_assert(ret > 0);
+		outstr[ret] = '\0';
+		tmp[j] = atoll(outstr);
+		close(fd);
+	}
+	subbuf_size = tmp[0];
+	subbuf_count = tmp[1];
+	igt_info("Debugfs retrieved subbuf info: size=%d, count=%d\n",
+		 subbuf_size, subbuf_count);
+}
+
+static void guc_log_verbosity(bool enable, int log_level)
 {
-	int control_fd;
-	char data[19];
+	char *str;
+	int loglevelfd;
 	uint64_t val;
 	int ret;
 
-	igt_assert_lte(log_level, 3);
-
-	control_fd = igt_debugfs_open(-1, CONTROL_FILE_NAME, O_WRONLY);
-	igt_assert_f(control_fd >= 0, "couldn't open the guc log control file\n");
+	igt_assert_neq(asprintf(&str, "%s/%s", gucfspath, GLR_LOGLEVEL_NAME), -1);
+	igt_info("Opening log level -> %s\n", str);
+	loglevelfd = igt_debugfs_open(drm_fd, str, O_WRONLY);
+	free(str);
+	igt_assert_f(loglevelfd >= 0, "couldn't open the GuC log level file\n");
 
 	/*
 	 * i915 expects GuC log level to be specified as:
@@ -96,13 +132,51 @@ static void guc_log_control(bool enable, uint32_t log_level)
 	 */
 	val = enable ? log_level + 1 : 0;
 
-	ret = snprintf(data, sizeof(data), "0x%" PRIx64, val);
-	igt_assert(ret > 2 && ret < sizeof(data));
+	ret = asprintf(&str, "0x%" PRIx64, val);
+	igt_assert_neq(ret, -1);
+	ret = write(loglevelfd, str, ret);
+	free(str);
+	igt_assert_f(ret > 0, "couldn't write verbosity to log level file\n");
+	igt_info("Set GuC log level = %d\n", (int)val);
+
+	close(loglevelfd);
+}
 
-	ret = write(control_fd, data, ret);
-	igt_assert_f(ret > 0, "couldn't write to the log control file\n");
+static void guc_log_control(bool enable, uint32_t log_level)
+{
+	char *str;
+	uint64_t val = 0;
+	int ret;
 
-	close(control_fd);
+	if (enable) {
+		igt_assert_neq(asprintf(&str, "%s/%s", gucfspath, GLR_CTL_NAME), -1);
+		igt_info("Opening control file -> %s\n", str);
+		ctl_fd = igt_debugfs_open(drm_fd, str, O_WRONLY);
+		free(str);
+		igt_assert_f(ctl_fd >= 0, "couldn't open the GuC log relay-ctl file\n");
+		val = 1;
+	}
+
+	/*
+	 * i915 expects relay logging controls:
+	 * 1    : open + enable relay logging
+	 * 2    : flush
+	 * 0    : disable relay logging + close
+	 */
+	if (ctl_fd) {
+		ret = asprintf(&str, "0x%" PRIx64, val);
+		igt_assert_neq(ret, -1);
+		ret = write(ctl_fd, str, ret);
+		free(str);
+		igt_assert_f(ret > 0, "couldn't write to the log control file\n");
+	}
+
+	guc_log_verbosity(enable, log_level);
+
+	if (!enable) {
+		igt_info("Closing control file\n");
+		close(ctl_fd);
+	}
 }
 
 static void int_sig_handler(int sig)
@@ -119,18 +193,18 @@ static void pull_leftover_data(void)
 
 	do {
 		/* Read the logs from relay buffer */
-		ret = read(relay_fd, read_buffer, SUBBUF_SIZE);
+		ret = read(relay_fd, read_buffer, subbuf_size);
 		if (!ret)
 			break;
 
-		igt_assert_f(ret > 0, "failed to read from the guc log file\n");
-		igt_assert_f(ret == SUBBUF_SIZE, "invalid read from relay file\n");
+		igt_assert_f(ret > 0, "failed to read from the GuC log file\n");
+		igt_assert_f(ret == subbuf_size, "invalid read from relay file\n");
 
 		bytes_read += ret;
 
 		if (outfile_fd >= 0) {
-			ret = write(outfile_fd, read_buffer, SUBBUF_SIZE);
-			igt_assert_f(ret == SUBBUF_SIZE, "couldn't dump the logs in a file\n");
+			ret = write(outfile_fd, read_buffer, subbuf_size);
+			igt_assert_f(ret == subbuf_size, "couldn't dump the logs in a file\n");
 			total_bytes_written += ret;
 		}
 	} while(1);
@@ -149,7 +223,7 @@ static void pull_data(void)
 	int ret;
 
 	pthread_mutex_lock(&mutex);
-	while (num_filled_bufs() >= num_buffers) {
+	while (num_filled_bufs() >= subbuf_count) {
 		igt_debug("overflow, will wait, produced %u, consumed %u\n", produced, consumed);
 		/* Stall the main thread in case of overflow, as there are no
 		 * buffers available to store the new logs, otherwise there
@@ -159,12 +233,12 @@ static void pull_data(void)
 	};
 	pthread_mutex_unlock(&mutex);
 
-	ptr = read_buffer + (produced % num_buffers) * SUBBUF_SIZE;
+	ptr = read_buffer + (produced % subbuf_count) * subbuf_size;
 
 	/* Read the logs from relay buffer */
-	ret = read(relay_fd, ptr, SUBBUF_SIZE);
-	igt_assert_f(ret >= 0, "failed to read from the guc log file\n");
-	igt_assert_f(!ret || ret == SUBBUF_SIZE, "invalid read from relay file\n");
+	ret = read(relay_fd, ptr, subbuf_size);
+	igt_assert_f(ret >= 0, "failed to read from the GuC log file\n");
+	igt_assert_f(!ret || ret == subbuf_size, "invalid read from relay file\n");
 
 	if (ret) {
 		pthread_mutex_lock(&mutex);
@@ -204,10 +278,10 @@ static void *flusher(void *arg)
 		};
 		pthread_mutex_unlock(&mutex);
 
-		ptr = read_buffer + (consumed % num_buffers) * SUBBUF_SIZE;
+		ptr = read_buffer + (consumed % subbuf_count) * subbuf_size;
 
-		ret = write(outfile_fd, ptr, SUBBUF_SIZE);
-		igt_assert_f(ret == SUBBUF_SIZE, "couldn't dump the logs in a file\n");
+		ret = write(outfile_fd, ptr, subbuf_size);
+		igt_assert_f(ret == subbuf_size, "couldn't dump the logs in a file\n");
 
 		total_bytes_written += ret;
 		if (max_filesize && (total_bytes_written > MB(max_filesize))) {
@@ -260,8 +334,13 @@ static void init_flusher_thread(void)
 
 static void open_relay_file(void)
 {
-	relay_fd = igt_debugfs_open(-1, RELAY_FILE_NAME, O_RDONLY);
-	igt_assert_f(relay_fd >= 0, "couldn't open the guc log file\n");
+	char *path;
+
+	igt_assert_neq(asprintf(&path, "%s/%s", gucfspath, GLR_CHANNEL_NAME), -1);
+	igt_info("Opening this path -> %s\n", path);
+	relay_fd = igt_debugfs_open(drm_fd, path, O_RDONLY);
+	free(path);
+	igt_assert_f(relay_fd >= 0, "couldn't open the GuC log relay-channel file\n");
 
 	/* Purge the old/boot-time logs from the relay buffer.
 	 * This is more for Val team's requirement, where they have to first
@@ -292,7 +371,7 @@ static void open_output_file(void)
 
 static void init_main_thread(void)
 {
-	struct sched_param	thread_sched;
+	struct sched_param thread_sched;
 	int ret;
 
 	/* Run the main thread at highest priority to ensure that it always
@@ -311,11 +390,11 @@ static void init_main_thread(void)
 		igt_assert_f(0, "SIGALRM handler registration failed\n");
 
 	/* Need an aligned pointer for direct IO */
-	ret = posix_memalign((void **)&read_buffer, PAGE_SIZE, num_buffers * SUBBUF_SIZE);
+	ret = posix_memalign((void **)&read_buffer, PAGE_SIZE, subbuf_count * subbuf_size);
 	igt_assert_f(ret == 0, "couldn't allocate the read buffer\n");
 
 	/* Keep the pages locked in RAM, avoid page fault overhead */
-	ret = mlock(read_buffer, num_buffers * SUBBUF_SIZE);
+	ret = mlock(read_buffer, subbuf_count * subbuf_size);
 	igt_assert_f(ret == 0, "failed to lock memory\n");
 
 	/* Enable the logging, it may not have been enabled from boot and so
@@ -342,11 +421,6 @@ static int parse_options(int opt, int opt_index, void *data)
 		igt_assert_f(out_filename, "Couldn't allocate the o/p filename\n");
 		igt_debug("logs to be stored in file %s\n", out_filename);
 		break;
-	case 'b':
-		num_buffers = atoi(optarg);
-		igt_assert_f(num_buffers > 0, "invalid input for -b option\n");
-		igt_debug("number of buffers to be used is %d\n", num_buffers);
-		break;
 	case 't':
 		test_duration = atoi(optarg);
 		igt_assert_f(test_duration > 0, "invalid input for -t option\n");
@@ -377,7 +451,6 @@ static void process_command_line(int argc, char **argv)
 	static struct option long_options[] = {
 		{"verbosity", required_argument, 0, 'v'},
 		{"outputfile", required_argument, 0, 'o'},
-		{"buffers", required_argument, 0, 'b'},
 		{"testduration", required_argument, 0, 't'},
 		{"polltimeout", required_argument, 0, 'p'},
 		{"size", required_argument, 0, 's'},
@@ -388,7 +461,6 @@ static void process_command_line(int argc, char **argv)
 	const char *help =
 		"  -v --verbosity=level   verbosity level of GuC logging (0-3)\n"
 		"  -o --outputfile=name   name of the output file, including the location, where logs will be stored\n"
-		"  -b --buffers=num       number of buffers to be maintained on logger side for storing logs\n"
 		"  -t --testduration=sec  max duration in seconds for which the logger should run\n"
 		"  -p --polltimeout=ms    polling timeout in ms, -1 == indefinite wait for the new data\n"
 		"  -s --size=MB           max size of output file in MBs after which logging will be stopped\n"
@@ -404,6 +476,11 @@ int main(int argc, char **argv)
 	int nfds;
 	int ret;
 
+	drm_fd = drm_open_driver(DRIVER_INTEL);
+	igt_assert(drm_fd != -1);
+	igt_assert_neq(asprintf(&gucfspath, "gt0/uc"), -1);
+
+	get_guc_subbuf_info();
 	process_command_line(argc, argv);
 
 	init_main_thread();
@@ -466,5 +543,7 @@ int main(int argc, char **argv)
 	free(read_buffer);
 	close(relay_fd);
 	close(outfile_fd);
+	free(gucfspath);
+	close(drm_fd);
 	igt_exit();
 }
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t 2/2] tools/intel_guc_logger: Refactor intel_guc_logger globals into structs
  2022-05-09 21:21 [igt-dev] [PATCH i-g-t 0/2] Resurrect GuC Relay Logging Alan Previn
  2022-05-09 21:21 ` [igt-dev] [PATCH i-g-t 1/2] tools/intel_guc_logger: Re-enable basic functionality Alan Previn
@ 2022-05-09 21:21 ` Alan Previn
  2022-05-09 22:12 ` [igt-dev] ✓ Fi.CI.BAT: success for Resurrect GuC Relay Logging Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Alan Previn @ 2022-05-09 21:21 UTC (permalink / raw)
  To: igt-dev

Refactor all of the global variables used in intel_guc_logger
into abstractions of structures at thread level, GuC-GT level
and global level.

While at it, remove asserts from the non primary thread to ensure
process cleanup doesn't get stuck.

Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com>
---
 tools/intel_guc_logger.c | 458 ++++++++++++++++++++++++---------------
 1 file changed, 279 insertions(+), 179 deletions(-)

diff --git a/tools/intel_guc_logger.c b/tools/intel_guc_logger.c
index 4a991127..356cde59 100644
--- a/tools/intel_guc_logger.c
+++ b/tools/intel_guc_logger.c
@@ -48,12 +48,12 @@
   #define PAGE_SIZE 4096
 #endif
 
-#define DEFAULT_OUTPUT_FILE_NAME  "guc_log_dump.dat"
-
 #define GLR_LOGLEVEL_NAME         "guc_log_level"
 #define GLR_CTL_NAME              "guc_log_relay_ctl"
 #define GLR_CHANNEL_NAME          "guc_log_relay_chan0"
 
+#define DEFAULT_OUTPUT_FILE_NAME     "guc_log_dump" /*.dat suffic added later*/
+#define DEFAULT_GUCLOG_VERBOSITY     3 /* by default capture logs at max verbosity */
 #define DEFAULT_SUBBUF_COUNT         (4 * 8)
 					/* default to kernel built-in:   *
 					 *   4 x 8 subbuf regions        *
@@ -64,25 +64,54 @@
 					 *   8K -> GuC crash dump        *
 					 *  64K -> log events buffer     *
 					 */
-
-int drm_fd;
-char *read_buffer;
-char *out_filename;
-int poll_timeout = 2; /* by default 2ms timeout */
-pthread_mutex_t mutex;
-pthread_t flush_thread;
-int verbosity_level = 3; /* by default capture logs at max verbosity */
-uint32_t produced, consumed;
-uint64_t total_bytes_written;
-int subbuf_count;
-int subbuf_size;
-int ctl_fd, relay_fd, outfile_fd = -1;
-uint32_t test_duration, max_filesize;
-pthread_cond_t underflow_cond, overflow_cond;
-bool stop_logging, discard_oldlogs, capturing_stopped;
-char *gucfspath;
-
-static void get_guc_subbuf_info(void)
+#define DEFAULT_POLL_TIMEOUT         2 /* default timeout of 2ms */
+#define DEFAULT_MAX_OUTPUT_SIZE      MB(4 * 1024) /* default to 4 GB max file size */
+
+enum relay_cmd {
+	RELAY_CMD_DISABLE = 0,
+	RELAY_CMD_ENABLE = 1,
+	RELAY_CMD_FLUSH = 2,
+};
+
+struct guc_t {
+	int gt_id;
+	char *fspath;
+	int control_fd;
+	int relaychan;
+	int outfd;
+	char *readbuf;
+	int subbuf_count;
+	int subbuf_size;
+	uint64_t total_bytes_written;
+	pthread_mutex_t mutex;
+	pthread_t flush_thread;
+	pthread_cond_t underflow_cond;
+	pthread_cond_t overflow_cond;
+	int64_t produced;
+	int64_t consumed;
+	bool stop_logging;
+	bool capturing_stopped;
+};
+
+struct global_t {
+	int drmfd;
+	int verbosity;
+	char *out_filename;
+	uint64_t max_filesize;
+	uint32_t test_duration;
+	int poll_timeout;
+	bool discard_oldlogs;
+};
+
+struct thread_t {
+	struct global_t *global;
+	struct guc_t *guc;
+};
+
+/* only global instance needed for killing threads from main's signal handler */
+struct thread_t *gbl_thread_handle;
+
+static void get_guc_subbuf_info(struct thread_t *tdata)
 {
 	int fd, ret, j;
 	char *path;
@@ -92,9 +121,9 @@ static void get_guc_subbuf_info(void)
 	uint64_t tmp[2] = {DEFAULT_SUBBUF_SIZE, DEFAULT_SUBBUF_COUNT};
 
 	for (j = 0; j < 2; j++) {
-		igt_assert_neq(asprintf(&path, "%s/%s", gucfspath, dbg_fs_names[j]), -1);
+		igt_assert_neq(asprintf(&path, "%s/%s", tdata->guc->fspath, dbg_fs_names[j]), -1);
 		igt_info("Opening subbuf path %s\n", path);
-		fd = igt_debugfs_open(drm_fd, path, O_RDONLY);
+		fd = igt_debugfs_open(tdata->global->drmfd, path, O_RDONLY);
 		free(path);
 		igt_assert_f(fd >= 0, "couldn't open the GuC log relay-subbuf file\n");
 		ret = read(fd, outstr, sizeof(outstr) - 1);
@@ -103,35 +132,36 @@ static void get_guc_subbuf_info(void)
 		tmp[j] = atoll(outstr);
 		close(fd);
 	}
-	subbuf_size = tmp[0];
-	subbuf_count = tmp[1];
+	tdata->guc->subbuf_size = tmp[0];
+	tdata->guc->subbuf_count = tmp[1];
 	igt_info("Debugfs retrieved subbuf info: size=%d, count=%d\n",
-		 subbuf_size, subbuf_count);
+		 tdata->guc->subbuf_size, tdata->guc->subbuf_count);
 }
 
-static void guc_log_verbosity(bool enable, int log_level)
+static void guc_log_verbosity(struct thread_t *tdata, bool enable)
 {
 	char *str;
 	int loglevelfd;
 	uint64_t val;
 	int ret;
 
-	igt_assert_neq(asprintf(&str, "%s/%s", gucfspath, GLR_LOGLEVEL_NAME), -1);
+	igt_assert_neq(asprintf(&str, "%s/%s", tdata->guc->fspath, GLR_LOGLEVEL_NAME), -1);
 	igt_info("Opening log level -> %s\n", str);
-	loglevelfd = igt_debugfs_open(drm_fd, str, O_WRONLY);
+	loglevelfd = igt_debugfs_open(tdata->global->drmfd, str, O_WRONLY);
 	free(str);
 	igt_assert_f(loglevelfd >= 0, "couldn't open the GuC log level file\n");
 
 	/*
 	 * i915 expects GuC log level to be specified as:
 	 * 0: disabled
-	 * 1: enabled (verbosity level 0 = min)
-	 * 2: enabled (verbosity level 1)
-	 * 3: enabled (verbosity level 2)
-	 * 4: enabled (verbosity level 3 = max)
+	 * 1: enabled (non-verbose mode)
+	 * 2: GuC verbosity level 0
+	 * 3: GuC verbosity level 1
+	 * 4: GuC verbosity level 2
+	 * 5: GuC verbosity level 3
+	 * intel_guc_logger takes input range of 0..3 that maps to 2..5 above.
 	 */
-	val = enable ? log_level + 1 : 0;
-
+	val = enable ? tdata->global->verbosity + 2 : 0;
 	ret = asprintf(&str, "0x%" PRIx64, val);
 	igt_assert_neq(ret, -1);
 	ret = write(loglevelfd, str, ret);
@@ -142,40 +172,37 @@ static void guc_log_verbosity(bool enable, int log_level)
 	close(loglevelfd);
 }
 
-static void guc_log_control(bool enable, uint32_t log_level)
+static void guc_log_control(struct thread_t *tdata, enum relay_cmd cmd)
 {
 	char *str;
-	uint64_t val = 0;
 	int ret;
 
-	if (enable) {
-		igt_assert_neq(asprintf(&str, "%s/%s", gucfspath, GLR_CTL_NAME), -1);
+	igt_assert_f((cmd >= 0 && cmd <= 2), "Invalid GuC-log-control cmd!\n");
+
+	if (cmd == RELAY_CMD_ENABLE) {
+		igt_assert_neq(asprintf(&str, "%s/%s", tdata->guc->fspath, GLR_CTL_NAME), -1);
 		igt_info("Opening control file -> %s\n", str);
-		ctl_fd = igt_debugfs_open(drm_fd, str, O_WRONLY);
+		tdata->guc->control_fd = igt_debugfs_open(tdata->global->drmfd, str, O_WRONLY);
 		free(str);
-		igt_assert_f(ctl_fd >= 0, "couldn't open the GuC log relay-ctl file\n");
-		val = 1;
+		igt_assert_f(tdata->guc->control_fd >= 0, "Can't open GuC log relay-ctl file\n");
 	}
 
-	/*
-	 * i915 expects relay logging controls:
-	 * 1    : open + enable relay logging
-	 * 2    : flush
-	 * 0    : disable relay logging + close
-	 */
-	if (ctl_fd) {
-		ret = asprintf(&str, "0x%" PRIx64, val);
+	if (tdata->guc->control_fd) {
+		ret = asprintf(&str, "0x%" PRIx64, (unsigned long)cmd);
 		igt_assert_neq(ret, -1);
-		ret = write(ctl_fd, str, ret);
+		ret = write(tdata->guc->control_fd, str, ret);
 		free(str);
-		igt_assert_f(ret > 0, "couldn't write to the log control file\n");
-	}
+		igt_assert_f(ret > 0, "couldn't set cmd-%u on log control file\n", cmd);
 
-	guc_log_verbosity(enable, log_level);
+		if (cmd == RELAY_CMD_ENABLE)
+			guc_log_verbosity(tdata, true);
+	}
 
-	if (!enable) {
+	if (cmd == RELAY_CMD_DISABLE) {
 		igt_info("Closing control file\n");
-		close(ctl_fd);
+		guc_log_verbosity(tdata, false);
+		close(tdata->guc->control_fd);
+		tdata->guc->control_fd = 0;
 	}
 }
 
@@ -183,68 +210,82 @@ static void int_sig_handler(int sig)
 {
 	igt_info("received signal %d\n", sig);
 
-	stop_logging = true;
+	if (!gbl_thread_handle)
+		return;
+
+	if (gbl_thread_handle[0].guc)
+		gbl_thread_handle[0].guc->stop_logging = true;
 }
 
-static void pull_leftover_data(void)
+static void pull_leftover_data(struct thread_t *tdata)
 {
+	struct guc_t *guc = tdata->guc;
 	unsigned int bytes_read = 0;
+	int subbuf_size = guc->subbuf_size;
 	int ret;
 
 	do {
-		/* Read the logs from relay buffer */
-		ret = read(relay_fd, read_buffer, subbuf_size);
+		/* Read the logs from relay channel buffer */
+		ret = read(guc->relaychan, guc->readbuf, subbuf_size);
 		if (!ret)
 			break;
-
-		igt_assert_f(ret > 0, "failed to read from the GuC log file\n");
-		igt_assert_f(ret == subbuf_size, "invalid read from relay file\n");
-
+		if (ret < 0) {
+			igt_warn("failed leftover-read from GuC GT-%d relay-channel\n",
+				 guc->gt_id);
+			break;
+		}
+		if (ret != subbuf_size)
+			igt_warn("invalid leftover-size from GuC GT-%d relay-channel\n",
+				 guc->gt_id);
 		bytes_read += ret;
-
-		if (outfile_fd >= 0) {
-			ret = write(outfile_fd, read_buffer, subbuf_size);
-			igt_assert_f(ret == subbuf_size, "couldn't dump the logs in a file\n");
-			total_bytes_written += ret;
+		if (guc->outfd >= 0) {
+			ret = write(guc->outfd, guc->readbuf, subbuf_size);
+			if (ret != subbuf_size)
+				igt_warn("Couldn't dump leftover logs to file\n");
+			guc->total_bytes_written += ret;
 		}
 	} while(1);
 
-	igt_debug("%u bytes flushed\n", bytes_read);
+	igt_debug("%u bytes flushed from GuC GT-%d\n", bytes_read, guc->gt_id);
 }
 
-static int num_filled_bufs(void)
+static int num_filled_bufs(struct guc_t *guc)
 {
-	return (produced - consumed);
+	return (guc->produced - guc->consumed);
 }
 
-static void pull_data(void)
+static void pull_data(struct thread_t *tdata)
 {
 	char *ptr;
 	int ret;
+	struct guc_t *guc = tdata->guc;
+	int subbuf_size = guc->subbuf_size;
 
-	pthread_mutex_lock(&mutex);
-	while (num_filled_bufs() >= subbuf_count) {
-		igt_debug("overflow, will wait, produced %u, consumed %u\n", produced, consumed);
+	pthread_mutex_lock(&guc->mutex);
+	while (num_filled_bufs(guc) >= guc->subbuf_count) {
+		igt_debug("overflow, will wait, produced %ld, consumed %ld\n",
+			  guc->produced, guc->consumed);
 		/* Stall the main thread in case of overflow, as there are no
 		 * buffers available to store the new logs, otherwise there
 		 * could be corruption if both threads work on the same buffer.
 		 */
-		pthread_cond_wait(&overflow_cond, &mutex);
+		pthread_cond_wait(&guc->overflow_cond, &guc->mutex);
 	};
-	pthread_mutex_unlock(&mutex);
+	pthread_mutex_unlock(&guc->mutex);
 
-	ptr = read_buffer + (produced % subbuf_count) * subbuf_size;
+	ptr = guc->readbuf + (guc->produced % guc->subbuf_count) * subbuf_size;
 
-	/* Read the logs from relay buffer */
-	ret = read(relay_fd, ptr, subbuf_size);
+	/* Read the logs from relay channel buffer */
+	ret = read(guc->relaychan, ptr, subbuf_size);
 	igt_assert_f(ret >= 0, "failed to read from the GuC log file\n");
-	igt_assert_f(!ret || ret == subbuf_size, "invalid read from relay file\n");
+	igt_assert_f(!ret || ret <= subbuf_size, "invalid read from relay file\n");
 
 	if (ret) {
-		pthread_mutex_lock(&mutex);
-		produced++;
-		pthread_cond_signal(&underflow_cond);
-		pthread_mutex_unlock(&mutex);
+		pthread_mutex_lock(&guc->mutex);
+		guc->produced++;
+		pthread_cond_signal(&guc->underflow_cond);
+		pthread_mutex_unlock(&guc->mutex);
+		igt_info("read %d KB from relay file\n", (ret / 1024));
 	} else {
 		/* Occasionally (very rare) read from the relay file returns no
 		 * data, albeit the polling done prior to read call indicated
@@ -257,56 +298,74 @@ static void pull_data(void)
 static void *flusher(void *arg)
 {
 	char *ptr;
-	int ret;
+	int ret, subbuf_size;
+	struct thread_t *tdata = (struct thread_t *)arg;
+	struct global_t *gbl;
+	struct guc_t *guc;
+
+	igt_assert_f(tdata, "Flusher didn't receive thread context ptr!\n");
+	gbl = tdata->global;
+	guc = tdata->guc;
+	subbuf_size = guc->subbuf_size;
 
 	igt_debug("execution started of flusher thread\n");
 
 	do {
-		pthread_mutex_lock(&mutex);
-		while (!num_filled_bufs()) {
+		pthread_mutex_lock(&guc->mutex);
+		while (!num_filled_bufs(guc)) {
 			/* Exit only after completing the flush of all the filled
 			 * buffers as User would expect that all logs captured up
 			 * till the point of interruption/exit are written out to
 			 * the disk file.
 			 */
-			if (capturing_stopped) {
+			if (guc->capturing_stopped) {
 				igt_debug("flusher to exit now\n");
-				pthread_mutex_unlock(&mutex);
+				pthread_mutex_unlock(&guc->mutex);
 				return NULL;
 			}
-			pthread_cond_wait(&underflow_cond, &mutex);
+			pthread_cond_wait(&guc->underflow_cond, &guc->mutex);
 		};
-		pthread_mutex_unlock(&mutex);
-
-		ptr = read_buffer + (consumed % subbuf_count) * subbuf_size;
+		pthread_mutex_unlock(&guc->mutex);
 
-		ret = write(outfile_fd, ptr, subbuf_size);
-		igt_assert_f(ret == subbuf_size, "couldn't dump the logs in a file\n");
+		ptr = guc->readbuf + (guc->consumed % guc->subbuf_count) * subbuf_size;
 
-		total_bytes_written += ret;
-		if (max_filesize && (total_bytes_written > MB(max_filesize))) {
-			igt_debug("reached the target of %" PRIu64 " bytes\n", MB(max_filesize));
-			stop_logging = true;
+		ret = write(guc->outfd, ptr, subbuf_size);
+		if (ret < 0) {
+			igt_warn("Dump to file failed with err %d, stopping!\n", ret);
+			guc->stop_logging = true;
+		} else if (!ret) {
+			igt_warn("Dump to file flushed zero bytes!\n");
+		} else {
+			if (ret != subbuf_size)
+				igt_warn("Dump size mismatch = %d!\n", ret);
+			guc->total_bytes_written += ret;
+			igt_info("wrote %d KB out to dat file\n", (ret / 1024));
+			if (gbl->max_filesize && guc->total_bytes_written >
+			    MB(gbl->max_filesize)) {
+				igt_debug("reached the target of %" PRIu64 " bytes\n",
+					  MB(gbl->max_filesize));
+				guc->stop_logging = true;
+			}
+			pthread_mutex_lock(&guc->mutex);
+			guc->consumed++;
+			pthread_cond_signal(&guc->overflow_cond);
+			pthread_mutex_unlock(&guc->mutex);
 		}
-
-		pthread_mutex_lock(&mutex);
-		consumed++;
-		pthread_cond_signal(&overflow_cond);
-		pthread_mutex_unlock(&mutex);
 	} while(1);
 
 	return NULL;
 }
 
-static void init_flusher_thread(void)
+static void init_flusher_thread(struct thread_t *tdata)
 {
-	struct sched_param	thread_sched;
-	pthread_attr_t		p_attr;
+	struct sched_param thread_sched;
+	pthread_attr_t p_attr;
+	struct guc_t *guc = tdata->guc;
 	int ret;
 
-	pthread_cond_init(&underflow_cond, NULL);
-	pthread_cond_init(&overflow_cond, NULL);
-	pthread_mutex_init(&mutex, NULL);
+	pthread_cond_init(&guc->underflow_cond, NULL);
+	pthread_cond_init(&guc->overflow_cond, NULL);
+	pthread_mutex_init(&guc->mutex, NULL);
 
 	ret = pthread_attr_init(&p_attr);
 	igt_assert_f(ret == 0, "error obtaining default thread attributes\n");
@@ -325,22 +384,22 @@ static void init_flusher_thread(void)
 	ret = pthread_attr_setschedparam(&p_attr, &thread_sched);
 	igt_assert_f(ret == 0, "couldn't set thread priority\n");
 
-	ret = pthread_create(&flush_thread, &p_attr, flusher, NULL);
+	ret = pthread_create(&guc->flush_thread, &p_attr, flusher, tdata);
 	igt_assert_f(ret == 0, "thread creation failed\n");
 
 	ret = pthread_attr_destroy(&p_attr);
 	igt_assert_f(ret == 0, "error destroying thread attributes\n");
 }
 
-static void open_relay_file(void)
+static void open_relay_file(struct thread_t *tdata)
 {
 	char *path;
 
-	igt_assert_neq(asprintf(&path, "%s/%s", gucfspath, GLR_CHANNEL_NAME), -1);
+	igt_assert_neq(asprintf(&path, "%s/%s", tdata->guc->fspath, GLR_CHANNEL_NAME), -1);
 	igt_info("Opening this path -> %s\n", path);
-	relay_fd = igt_debugfs_open(drm_fd, path, O_RDONLY);
+	tdata->guc->relaychan = igt_debugfs_open(tdata->global->drmfd, path, O_RDONLY);
 	free(path);
-	igt_assert_f(relay_fd >= 0, "couldn't open the GuC log relay-channel file\n");
+	igt_assert_f(tdata->guc->relaychan >= 0, "couldn't open the GuC log relay-channel file\n");
 
 	/* Purge the old/boot-time logs from the relay buffer.
 	 * This is more for Val team's requirement, where they have to first
@@ -349,29 +408,39 @@ static void open_relay_file(void)
 	 * wait for the new data, at that point benchmark can be launched from
 	 * a different shell.
 	 */
-	if (discard_oldlogs)
-		pull_leftover_data();
+	if (tdata->global->discard_oldlogs)
+		pull_leftover_data(tdata);
 }
 
-static void open_output_file(void)
+static void open_output_file(struct thread_t *tdata)
 {
+	char *path;
+
 	/* Use Direct IO mode for the output file, as the data written is not
 	 * supposed to be accessed again, this saves a copy of data from App's
 	 * buffer to kernel buffer (Page cache). Due to no buffering on kernel
 	 * side, data is flushed out to disk faster and more buffering can be
 	 * done on the logger side to hide the disk IO latency.
 	 */
-	outfile_fd = open(out_filename ? : DEFAULT_OUTPUT_FILE_NAME,
-			  O_CREAT | O_WRONLY | O_TRUNC | O_DIRECT,
-			  0440);
-	igt_assert_f(outfile_fd >= 0, "couldn't open the output file\n");
+	if (tdata->global->out_filename) {
+		igt_assert_neq(asprintf(&path, "%s_GT%d.dat", tdata->global->out_filename,
+					tdata->guc->gt_id), -1);
+	} else {
+		igt_assert_neq(asprintf(&path, "%s_GT%d.dat", DEFAULT_OUTPUT_FILE_NAME,
+					tdata->guc->gt_id), -1);
+	}
+
+	tdata->guc->outfd = open(path, O_CREAT | O_WRONLY | O_TRUNC | O_DIRECT, 0440);
+	igt_assert_f(tdata->guc->outfd >= 0, "couldn't open the output file\n");
 
-	free(out_filename);
+	igt_info("Creating output GuC-log-file: %s\n", path);
+	free(path);
 }
 
-static void init_main_thread(void)
+static void init_main_thread(struct thread_t *tdata)
 {
 	struct sched_param thread_sched;
+	struct guc_t *guc = tdata->guc;
 	int ret;
 
 	/* Run the main thread at highest priority to ensure that it always
@@ -390,55 +459,60 @@ static void init_main_thread(void)
 		igt_assert_f(0, "SIGALRM handler registration failed\n");
 
 	/* Need an aligned pointer for direct IO */
-	ret = posix_memalign((void **)&read_buffer, PAGE_SIZE, subbuf_count * subbuf_size);
+	ret = posix_memalign((void **)&guc->readbuf, PAGE_SIZE,
+			     (guc->subbuf_count * guc->subbuf_size));
 	igt_assert_f(ret == 0, "couldn't allocate the read buffer\n");
 
 	/* Keep the pages locked in RAM, avoid page fault overhead */
-	ret = mlock(read_buffer, subbuf_count * subbuf_size);
+	ret = mlock(guc->readbuf, (guc->subbuf_count * guc->subbuf_size));
 	igt_assert_f(ret == 0, "failed to lock memory\n");
 
 	/* Enable the logging, it may not have been enabled from boot and so
 	 * the relay file also wouldn't have been created.
 	 */
-	guc_log_control(true, verbosity_level);
-
-	open_relay_file();
-	open_output_file();
+	guc_log_control(tdata, RELAY_CMD_ENABLE);
+	open_relay_file(tdata);
+	open_output_file(tdata);
 }
 
-static int parse_options(int opt, int opt_index, void *data)
+static int parse_options(int opt, int opt_index, void *ptr)
 {
+	struct global_t *data = (struct global_t *)ptr;
+
+	igt_assert(data);
 	igt_debug("opt %c optarg %s\n", opt, optarg);
 
 	switch(opt) {
 	case 'v':
-		verbosity_level = atoi(optarg);
-		igt_assert_f(verbosity_level >= 0 && verbosity_level <= 3, "invalid input for -v option\n");
-		igt_debug("verbosity level to be used is %d\n", verbosity_level);
+		data->verbosity = atoi(optarg);
+		igt_assert_f(data->verbosity >= 0 && data->verbosity <= 3,
+			     "invalid input for -v option\n");
+		igt_debug("verbosity level to be used is %d\n", data->verbosity);
 		break;
 	case 'o':
-		out_filename = strdup(optarg);
-		igt_assert_f(out_filename, "Couldn't allocate the o/p filename\n");
-		igt_debug("logs to be stored in file %s\n", out_filename);
+		data->out_filename = strdup(optarg);
+		igt_assert_f(data->out_filename, "Couldn't allocate the o/p filename\n");
+		igt_debug("logs to be stored in file %s_G[GuC-ID]\n", data->out_filename);
 		break;
 	case 't':
-		test_duration = atoi(optarg);
-		igt_assert_f(test_duration > 0, "invalid input for -t option\n");
-		igt_debug("logger to run for %d second\n", test_duration);
+		data->test_duration = atoi(optarg);
+		igt_assert_f(data->test_duration > 0, "invalid input for -t option\n");
+		igt_debug("logger to run for %d second\n", data->test_duration);
 		break;
 	case 'p':
-		poll_timeout = atoi(optarg);
-		igt_assert_f(poll_timeout != 0, "invalid input for -p option\n");
-		if (poll_timeout > 0)
-			igt_debug("polling to be done with %d millisecond timeout\n", poll_timeout);
+		data->poll_timeout = atoi(optarg);
+		igt_assert_f(data->poll_timeout != 0, "invalid input for -p option\n");
+		if (data->poll_timeout > 0)
+			igt_debug("polling to be done with %d millisecond timeout\n",
+				  data->poll_timeout);
 		break;
 	case 's':
-		max_filesize = atoi(optarg);
-		igt_assert_f(max_filesize > 0, "invalid input for -s option\n");
-		igt_debug("max allowed size of the output file is %d MB\n", max_filesize);
+		data->max_filesize = atoll(optarg);
+		igt_assert_f(data->max_filesize > 0, "invalid input for -s option\n");
+		igt_debug("max allowed size of the output file is %lu MB\n", data->max_filesize);
 		break;
 	case 'd':
-		discard_oldlogs = true;
+		data->discard_oldlogs = true;
 		igt_debug("old/boot-time logs will be discarded\n");
 		break;
 	}
@@ -446,7 +520,7 @@ static int parse_options(int opt, int opt_index, void *data)
 	return 0;
 }
 
-static void process_command_line(int argc, char **argv)
+static void process_command_line(int argc, char **argv, struct global_t *data)
 {
 	static struct option long_options[] = {
 		{"verbosity", required_argument, 0, 'v'},
@@ -467,23 +541,39 @@ static void process_command_line(int argc, char **argv)
 		"  -d --discard           discard the old/boot-time logs before entering into the capture loop\n";
 
 	igt_simple_init_parse_opts(&argc, argv, "v:o:b:t:p:s:d", long_options,
-				   help, parse_options, NULL);
+				   help, parse_options, data);
 }
 
 int main(int argc, char **argv)
 {
+	struct global_t gbldata;
+	/* For now, just one thread collecting logs from any single GuC source */
+	struct guc_t gucdata[1];  /* only GT0 for now */
+	struct thread_t thread[1];
 	struct pollfd relay_poll_fd;
-	int nfds;
-	int ret;
+	int nfds, ret;
 
-	drm_fd = drm_open_driver(DRIVER_INTEL);
-	igt_assert(drm_fd != -1);
-	igt_assert_neq(asprintf(&gucfspath, "gt0/uc"), -1);
+	/* setup global context */
+	memset(&gbldata, 0, sizeof(gbldata));
+	gbldata.verbosity    = DEFAULT_GUCLOG_VERBOSITY;
+	gbldata.poll_timeout = DEFAULT_POLL_TIMEOUT;
+	gbldata.drmfd        = drm_open_driver_render(DRIVER_INTEL);
+	igt_assert(gbldata.drmfd != -1);
 
-	get_guc_subbuf_info();
-	process_command_line(argc, argv);
+	memset(&gucdata[0], 0, sizeof(struct guc_t));
+	gucdata[0].gt_id = 0;
+	igt_assert_neq(asprintf(&gucdata[0].fspath, "gt/uc"), -1);
+	gucdata[0].outfd = -1;
 
-	init_main_thread();
+	thread[0].global = &gbldata;
+	thread[0].guc = &gucdata[0];
+	get_guc_subbuf_info(&thread[0]);
+
+	process_command_line(argc, argv, &gbldata);
+
+	gbl_thread_handle = thread;
+
+	init_main_thread(&thread[0]);
 
 	/* Use a separate thread for flushing the logs to a file on disk.
 	 * Main thread will buffer the data from relay file in its pool of
@@ -493,15 +583,15 @@ int main(int argc, char **argv)
 	 * (/proc/sys/vm/dirty_ratio), kernel starts blocking the processes
 	 * doing the file writes.
 	 */
-	init_flusher_thread();
+	init_flusher_thread(&thread[0]);
 
-	relay_poll_fd.fd = relay_fd;
+	relay_poll_fd.fd = thread[0].guc->relaychan;
 	relay_poll_fd.events = POLLIN;
 	relay_poll_fd.revents = 0;
 
 	nfds = 1; /* only one fd to poll */
 
-	alarm(test_duration); /* Start the alarm */
+	alarm(gbldata.test_duration); /* Start the alarm */
 
 	do {
 		/* Wait/poll for the new data to be available, relay doesn't
@@ -515,7 +605,7 @@ int main(int argc, char **argv)
 		 * succession (less than a jiffy gap between 2 flush interrupts)
 		 * causing relay to run out of sub buffers to store new logs.
 		 */
-		ret = poll(&relay_poll_fd, nfds, poll_timeout);
+		ret = poll(&relay_poll_fd, nfds, gbldata.poll_timeout);
 		if (ret < 0) {
 			if (errno == EINTR)
 				break;
@@ -526,24 +616,34 @@ int main(int argc, char **argv)
 		if (!relay_poll_fd.revents)
 			continue;
 
-		pull_data();
-	} while (!stop_logging);
+		pull_data(&thread[0]);
+	} while (!thread[0].guc->stop_logging);
 
 	/* Pause logging on the GuC side */
-	guc_log_control(false, 0);
+	guc_log_control(&thread[0], RELAY_CMD_FLUSH);
+	guc_log_control(&thread[0], RELAY_CMD_DISABLE);
 
 	/* Signal flusher thread to make an exit */
-	capturing_stopped = 1;
-	pthread_cond_signal(&underflow_cond);
-	pthread_join(flush_thread, NULL);
-
-	pull_leftover_data();
-	igt_info("total bytes written %" PRIu64 "\n", total_bytes_written);
-
-	free(read_buffer);
-	close(relay_fd);
-	close(outfile_fd);
-	free(gucfspath);
-	close(drm_fd);
+	thread[0].guc->capturing_stopped = 1;
+	pthread_cond_signal(&thread[0].guc->underflow_cond);
+	pthread_join(thread[0].guc->flush_thread, NULL);
+	pull_leftover_data(&thread[0]);
+	igt_info("total bytes written %" PRIu64 "\n", thread[0].guc->total_bytes_written);
+
+	if (gucdata[0].outfd)
+		close(gucdata[0].outfd);
+	if (gucdata[0].relaychan > 0)
+		close(gucdata[0].relaychan);
+	if (gucdata[0].control_fd > 0)
+		close(gucdata[0].control_fd);
+	if (gucdata[0].readbuf)
+		free(gucdata[0].readbuf);
+	if (gucdata[0].fspath)
+		free(gucdata[0].fspath);
+
+	if (gbldata.out_filename)
+		free(gbldata.out_filename);
+	close(gbldata.drmfd);
+
 	igt_exit();
 }
-- 
2.25.1

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

* [igt-dev] ✓ Fi.CI.BAT: success for Resurrect GuC Relay Logging
  2022-05-09 21:21 [igt-dev] [PATCH i-g-t 0/2] Resurrect GuC Relay Logging Alan Previn
  2022-05-09 21:21 ` [igt-dev] [PATCH i-g-t 1/2] tools/intel_guc_logger: Re-enable basic functionality Alan Previn
  2022-05-09 21:21 ` [igt-dev] [PATCH i-g-t 2/2] tools/intel_guc_logger: Refactor intel_guc_logger globals into structs Alan Previn
@ 2022-05-09 22:12 ` Patchwork
  2022-05-10 10:14 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  2022-12-06  2:10 ` [igt-dev] [PATCH i-g-t 0/2] " Teres Alexis, Alan Previn
  4 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2022-05-09 22:12 UTC (permalink / raw)
  To: Alan Previn; +Cc: igt-dev

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

== Series Details ==

Series: Resurrect GuC Relay Logging
URL   : https://patchwork.freedesktop.org/series/103768/
State : success

== Summary ==

CI Bug Log - changes from IGT_6469 -> IGTPW_7071
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (43 -> 40)
------------------------------

  Additional (1): bat-dg2-9 
  Missing    (4): bat-dg2-8 bat-adlm-1 fi-bsw-cyan bat-adlp-4 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_pm_rpm@basic-rte:
    - fi-cfl-8109u:       [PASS][1] -> [DMESG-WARN][2] ([i915#1888] / [i915#62])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/fi-cfl-8109u/igt@i915_pm_rpm@basic-rte.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/fi-cfl-8109u/igt@i915_pm_rpm@basic-rte.html

  * igt@i915_pm_rpm@module-reload:
    - fi-cfl-8109u:       [PASS][3] -> [DMESG-FAIL][4] ([i915#62])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/fi-cfl-8109u/igt@i915_pm_rpm@module-reload.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/fi-cfl-8109u/igt@i915_pm_rpm@module-reload.html

  * igt@i915_selftest@live@memory_region:
    - fi-cfl-8109u:       [PASS][5] -> [DMESG-WARN][6] ([i915#5904]) +11 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/fi-cfl-8109u/igt@i915_selftest@live@memory_region.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/fi-cfl-8109u/igt@i915_selftest@live@memory_region.html

  * igt@i915_selftest@live@requests:
    - fi-blb-e6850:       [PASS][7] -> [DMESG-FAIL][8] ([i915#4528])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/fi-blb-e6850/igt@i915_selftest@live@requests.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/fi-blb-e6850/igt@i915_selftest@live@requests.html

  * igt@kms_chamelium@common-hpd-after-suspend:
    - fi-hsw-4770:        NOTRUN -> [SKIP][9] ([fdo#109271] / [fdo#111827])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/fi-hsw-4770/igt@kms_chamelium@common-hpd-after-suspend.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b:
    - fi-cfl-8109u:       [PASS][10] -> [DMESG-WARN][11] ([i915#62]) +14 similar issues
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/fi-cfl-8109u/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/fi-cfl-8109u/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b.html

  
#### Possible fixes ####

  * igt@gem_exec_suspend@basic-s0@smem:
    - {fi-ehl-2}:         [DMESG-WARN][12] ([i915#5122]) -> [PASS][13]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/fi-ehl-2/igt@gem_exec_suspend@basic-s0@smem.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/fi-ehl-2/igt@gem_exec_suspend@basic-s0@smem.html

  * igt@i915_selftest@live@gt_pm:
    - fi-tgl-1115g4:      [DMESG-FAIL][14] ([i915#3987]) -> [PASS][15]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/fi-tgl-1115g4/igt@i915_selftest@live@gt_pm.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/fi-tgl-1115g4/igt@i915_selftest@live@gt_pm.html

  * igt@i915_selftest@live@hangcheck:
    - fi-hsw-4770:        [INCOMPLETE][16] ([i915#4785]) -> [PASS][17]
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/fi-hsw-4770/igt@i915_selftest@live@hangcheck.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/fi-hsw-4770/igt@i915_selftest@live@hangcheck.html

  * igt@kms_flip@basic-flip-vs-modeset@b-edp1:
    - {bat-adlp-6}:       [DMESG-WARN][18] ([i915#3576]) -> [PASS][19]
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/bat-adlp-6/igt@kms_flip@basic-flip-vs-modeset@b-edp1.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/bat-adlp-6/igt@kms_flip@basic-flip-vs-modeset@b-edp1.html

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

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1888]: https://gitlab.freedesktop.org/drm/intel/issues/1888
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#3576]: https://gitlab.freedesktop.org/drm/intel/issues/3576
  [i915#3987]: https://gitlab.freedesktop.org/drm/intel/issues/3987
  [i915#4528]: https://gitlab.freedesktop.org/drm/intel/issues/4528
  [i915#4785]: https://gitlab.freedesktop.org/drm/intel/issues/4785
  [i915#5122]: https://gitlab.freedesktop.org/drm/intel/issues/5122
  [i915#5171]: https://gitlab.freedesktop.org/drm/intel/issues/5171
  [i915#5174]: https://gitlab.freedesktop.org/drm/intel/issues/5174
  [i915#5181]: https://gitlab.freedesktop.org/drm/intel/issues/5181
  [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
  [i915#5606]: https://gitlab.freedesktop.org/drm/intel/issues/5606
  [i915#5703]: https://gitlab.freedesktop.org/drm/intel/issues/5703
  [i915#5775]: https://gitlab.freedesktop.org/drm/intel/issues/5775
  [i915#5904]: https://gitlab.freedesktop.org/drm/intel/issues/5904
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6469 -> IGTPW_7071

  CI-20190529: 20190529
  CI_DRM_11626: 1672d1c43e4377628b445ab011343fe2496a41ce @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_7071: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/index.html
  IGT_6469: fe3c194ba90615e2402461348357c88a23864275 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* [igt-dev] ✓ Fi.CI.IGT: success for Resurrect GuC Relay Logging
  2022-05-09 21:21 [igt-dev] [PATCH i-g-t 0/2] Resurrect GuC Relay Logging Alan Previn
                   ` (2 preceding siblings ...)
  2022-05-09 22:12 ` [igt-dev] ✓ Fi.CI.BAT: success for Resurrect GuC Relay Logging Patchwork
@ 2022-05-10 10:14 ` Patchwork
  2022-12-06  2:10 ` [igt-dev] [PATCH i-g-t 0/2] " Teres Alexis, Alan Previn
  4 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2022-05-10 10:14 UTC (permalink / raw)
  To: Alan Previn; +Cc: igt-dev

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

== Series Details ==

Series: Resurrect GuC Relay Logging
URL   : https://patchwork.freedesktop.org/series/103768/
State : success

== Summary ==

CI Bug Log - changes from IGT_6469_full -> IGTPW_7071_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

  No changes in participating hosts

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

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

### IGT changes ###

#### Suppressed ####

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

  * igt@gem_workarounds@suspend-resume:
    - {shard-dg1}:        NOTRUN -> [INCOMPLETE][1] +1 similar issue
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-dg1-16/igt@gem_workarounds@suspend-resume.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_ccs@ctrl-surf-copy:
    - shard-tglb:         NOTRUN -> [SKIP][2] ([i915#3555] / [i915#5325])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb6/igt@gem_ccs@ctrl-surf-copy.html

  * igt@gem_ctx_param@set-priority-not-supported:
    - shard-tglb:         NOTRUN -> [SKIP][3] ([fdo#109314])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb5/igt@gem_ctx_param@set-priority-not-supported.html
    - shard-iclb:         NOTRUN -> [SKIP][4] ([fdo#109314])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb2/igt@gem_ctx_param@set-priority-not-supported.html

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

  * igt@gem_eio@in-flight-contexts-immediate:
    - shard-apl:          [PASS][6] -> [TIMEOUT][7] ([i915#3063])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-apl8/igt@gem_eio@in-flight-contexts-immediate.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-apl4/igt@gem_eio@in-flight-contexts-immediate.html

  * igt@gem_exec_balancer@parallel-keep-in-fence:
    - shard-kbl:          NOTRUN -> [DMESG-WARN][8] ([i915#5076] / [i915#5614]) +2 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl3/igt@gem_exec_balancer@parallel-keep-in-fence.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-iclb:         [PASS][9] -> [FAIL][10] ([i915#2842])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-iclb5/igt@gem_exec_fair@basic-none-share@rcs0.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb7/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-none-solo@rcs0:
    - shard-kbl:          [PASS][11] -> [FAIL][12] ([i915#2842]) +2 similar issues
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl7/igt@gem_exec_fair@basic-none-solo@rcs0.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl7/igt@gem_exec_fair@basic-none-solo@rcs0.html

  * igt@gem_exec_fair@basic-none-vip@rcs0:
    - shard-tglb:         NOTRUN -> [FAIL][13] ([i915#2842])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb8/igt@gem_exec_fair@basic-none-vip@rcs0.html
    - shard-glk:          NOTRUN -> [FAIL][14] ([i915#2842])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-glk1/igt@gem_exec_fair@basic-none-vip@rcs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-tglb:         [PASS][15] -> [FAIL][16] ([i915#2842])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-tglb8/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb8/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fair@basic-pace@vcs1:
    - shard-iclb:         NOTRUN -> [FAIL][17] ([i915#2842]) +1 similar issue
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb2/igt@gem_exec_fair@basic-pace@vcs1.html

  * igt@gem_exec_flush@basic-uc-set-default:
    - shard-snb:          [PASS][18] -> [SKIP][19] ([fdo#109271]) +3 similar issues
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-snb2/igt@gem_exec_flush@basic-uc-set-default.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-snb6/igt@gem_exec_flush@basic-uc-set-default.html

  * igt@gem_exec_params@secure-non-master:
    - shard-tglb:         NOTRUN -> [SKIP][20] ([fdo#112283])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb2/igt@gem_exec_params@secure-non-master.html
    - shard-iclb:         NOTRUN -> [SKIP][21] ([fdo#112283])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb3/igt@gem_exec_params@secure-non-master.html

  * igt@gem_exec_whisper@basic-contexts-forked-all:
    - shard-glk:          [PASS][22] -> [DMESG-WARN][23] ([i915#118])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-glk2/igt@gem_exec_whisper@basic-contexts-forked-all.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-glk3/igt@gem_exec_whisper@basic-contexts-forked-all.html

  * igt@gem_huc_copy@huc-copy:
    - shard-apl:          NOTRUN -> [SKIP][24] ([fdo#109271] / [i915#2190])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-apl4/igt@gem_huc_copy@huc-copy.html
    - shard-glk:          NOTRUN -> [SKIP][25] ([fdo#109271] / [i915#2190])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-glk6/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@parallel-random-verify:
    - shard-kbl:          NOTRUN -> [SKIP][26] ([fdo#109271] / [i915#4613]) +4 similar issues
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl1/igt@gem_lmem_swapping@parallel-random-verify.html

  * igt@gem_lmem_swapping@random-engines:
    - shard-apl:          NOTRUN -> [SKIP][27] ([fdo#109271] / [i915#4613]) +1 similar issue
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-apl1/igt@gem_lmem_swapping@random-engines.html

  * igt@gem_lmem_swapping@verify-random:
    - shard-tglb:         NOTRUN -> [SKIP][28] ([i915#4613]) +1 similar issue
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb8/igt@gem_lmem_swapping@verify-random.html
    - shard-iclb:         NOTRUN -> [SKIP][29] ([i915#4613])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb1/igt@gem_lmem_swapping@verify-random.html

  * igt@gem_pxp@protected-raw-src-copy-not-readible:
    - shard-tglb:         NOTRUN -> [SKIP][30] ([i915#4270]) +5 similar issues
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb6/igt@gem_pxp@protected-raw-src-copy-not-readible.html

  * igt@gem_pxp@verify-pxp-stale-buf-execution:
    - shard-iclb:         NOTRUN -> [SKIP][31] ([i915#4270]) +2 similar issues
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb8/igt@gem_pxp@verify-pxp-stale-buf-execution.html

  * igt@gem_render_copy@yf-tiled-to-vebox-linear:
    - shard-iclb:         NOTRUN -> [SKIP][32] ([i915#768]) +1 similar issue
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb5/igt@gem_render_copy@yf-tiled-to-vebox-linear.html

  * igt@gem_softpin@evict-snoop:
    - shard-tglb:         NOTRUN -> [SKIP][33] ([fdo#109312])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb5/igt@gem_softpin@evict-snoop.html

  * igt@gem_userptr_blits@coherency-sync:
    - shard-tglb:         NOTRUN -> [SKIP][34] ([fdo#110542])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb8/igt@gem_userptr_blits@coherency-sync.html
    - shard-iclb:         NOTRUN -> [SKIP][35] ([fdo#109290])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb8/igt@gem_userptr_blits@coherency-sync.html

  * igt@gem_userptr_blits@coherency-unsync:
    - shard-tglb:         NOTRUN -> [SKIP][36] ([i915#3297])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb3/igt@gem_userptr_blits@coherency-unsync.html

  * igt@gem_userptr_blits@vma-merge:
    - shard-apl:          NOTRUN -> [FAIL][37] ([i915#3318])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-apl2/igt@gem_userptr_blits@vma-merge.html
    - shard-iclb:         NOTRUN -> [FAIL][38] ([i915#3318])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb2/igt@gem_userptr_blits@vma-merge.html
    - shard-kbl:          NOTRUN -> [FAIL][39] ([i915#3318])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl7/igt@gem_userptr_blits@vma-merge.html
    - shard-tglb:         NOTRUN -> [FAIL][40] ([i915#3318])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb7/igt@gem_userptr_blits@vma-merge.html

  * igt@gem_workarounds@suspend-resume-context:
    - shard-apl:          [PASS][41] -> [DMESG-WARN][42] ([i915#180]) +2 similar issues
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-apl6/igt@gem_workarounds@suspend-resume-context.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-apl2/igt@gem_workarounds@suspend-resume-context.html

  * igt@gen3_render_linear_blits:
    - shard-tglb:         NOTRUN -> [SKIP][43] ([fdo#109289]) +3 similar issues
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb8/igt@gen3_render_linear_blits.html
    - shard-iclb:         NOTRUN -> [SKIP][44] ([fdo#109289]) +3 similar issues
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb7/igt@gen3_render_linear_blits.html

  * igt@gen9_exec_parse@bb-oversize:
    - shard-tglb:         NOTRUN -> [SKIP][45] ([i915#2527] / [i915#2856]) +1 similar issue
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb8/igt@gen9_exec_parse@bb-oversize.html

  * igt@i915_pm_rc6_residency@rc6-fence:
    - shard-tglb:         NOTRUN -> [WARN][46] ([i915#2681])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb5/igt@i915_pm_rc6_residency@rc6-fence.html

  * igt@i915_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-tglb:         NOTRUN -> [SKIP][47] ([fdo#111644] / [i915#1397] / [i915#2411]) +2 similar issues
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb3/igt@i915_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@i915_pm_rpm@gem-execbuf-stress-pc8:
    - shard-iclb:         NOTRUN -> [SKIP][48] ([fdo#109293] / [fdo#109506])
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb5/igt@i915_pm_rpm@gem-execbuf-stress-pc8.html
    - shard-tglb:         NOTRUN -> [SKIP][49] ([fdo#109506] / [i915#2411])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb7/igt@i915_pm_rpm@gem-execbuf-stress-pc8.html

  * igt@i915_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-iclb:         NOTRUN -> [SKIP][50] ([fdo#110892])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb1/igt@i915_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@kms_atomic@atomic_plane_damage:
    - shard-iclb:         NOTRUN -> [SKIP][51] ([i915#4765])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb4/igt@kms_atomic@atomic_plane_damage.html

  * igt@kms_atomic_transition@plane-all-modeset-transition:
    - shard-tglb:         NOTRUN -> [SKIP][52] ([i915#1769])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb3/igt@kms_atomic_transition@plane-all-modeset-transition.html

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

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-tglb:         NOTRUN -> [SKIP][54] ([i915#5286]) +7 similar issues
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb8/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_big_fb@linear-16bpp-rotate-90:
    - shard-iclb:         NOTRUN -> [SKIP][55] ([fdo#110725] / [fdo#111614]) +2 similar issues
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb1/igt@kms_big_fb@linear-16bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-16bpp-rotate-90:
    - shard-tglb:         NOTRUN -> [SKIP][56] ([fdo#111614]) +3 similar issues
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb6/igt@kms_big_fb@x-tiled-16bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-8bpp-rotate-0:
    - shard-iclb:         NOTRUN -> [SKIP][57] ([fdo#110723]) +1 similar issue
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb6/igt@kms_big_fb@yf-tiled-8bpp-rotate-0.html

  * igt@kms_big_fb@yf-tiled-8bpp-rotate-90:
    - shard-tglb:         NOTRUN -> [SKIP][58] ([fdo#111615]) +8 similar issues
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb8/igt@kms_big_fb@yf-tiled-8bpp-rotate-90.html

  * igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_mc_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][59] ([i915#3689] / [i915#3886]) +4 similar issues
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb6/igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc:
    - shard-kbl:          NOTRUN -> [SKIP][60] ([fdo#109271] / [i915#3886]) +11 similar issues
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl6/igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-a-crc-sprite-planes-basic-y_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][61] ([i915#3689]) +8 similar issues
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb5/igt@kms_ccs@pipe-a-crc-sprite-planes-basic-y_tiled_ccs.html

  * igt@kms_ccs@pipe-b-bad-pixel-format-y_tiled_gen12_mc_ccs:
    - shard-glk:          NOTRUN -> [SKIP][62] ([fdo#109271] / [i915#3886]) +5 similar issues
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-glk1/igt@kms_ccs@pipe-b-bad-pixel-format-y_tiled_gen12_mc_ccs.html
    - shard-apl:          NOTRUN -> [SKIP][63] ([fdo#109271] / [i915#3886]) +7 similar issues
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-apl7/igt@kms_ccs@pipe-b-bad-pixel-format-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-b-random-ccs-data-y_tiled_gen12_mc_ccs:
    - shard-iclb:         NOTRUN -> [SKIP][64] ([fdo#109278] / [i915#3886]) +4 similar issues
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb5/igt@kms_ccs@pipe-b-random-ccs-data-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-c-missing-ccs-buffer-yf_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][65] ([fdo#111615] / [i915#3689]) +9 similar issues
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb8/igt@kms_ccs@pipe-c-missing-ccs-buffer-yf_tiled_ccs.html

  * igt@kms_chamelium@dp-hpd-after-suspend:
    - shard-snb:          NOTRUN -> [SKIP][66] ([fdo#109271] / [fdo#111827]) +6 similar issues
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-snb5/igt@kms_chamelium@dp-hpd-after-suspend.html

  * igt@kms_chamelium@hdmi-edid-change-during-suspend:
    - shard-apl:          NOTRUN -> [SKIP][67] ([fdo#109271] / [fdo#111827]) +9 similar issues
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-apl8/igt@kms_chamelium@hdmi-edid-change-during-suspend.html

  * igt@kms_chamelium@hdmi-hpd-storm:
    - shard-kbl:          NOTRUN -> [SKIP][68] ([fdo#109271] / [fdo#111827]) +27 similar issues
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl6/igt@kms_chamelium@hdmi-hpd-storm.html

  * igt@kms_color_chamelium@pipe-b-ctm-0-5:
    - shard-tglb:         NOTRUN -> [SKIP][69] ([fdo#109284] / [fdo#111827]) +17 similar issues
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb6/igt@kms_color_chamelium@pipe-b-ctm-0-5.html

  * igt@kms_color_chamelium@pipe-b-ctm-red-to-blue:
    - shard-iclb:         NOTRUN -> [SKIP][70] ([fdo#109284] / [fdo#111827]) +9 similar issues
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb7/igt@kms_color_chamelium@pipe-b-ctm-red-to-blue.html

  * igt@kms_color_chamelium@pipe-d-degamma:
    - shard-glk:          NOTRUN -> [SKIP][71] ([fdo#109271] / [fdo#111827]) +8 similar issues
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-glk2/igt@kms_color_chamelium@pipe-d-degamma.html
    - shard-iclb:         NOTRUN -> [SKIP][72] ([fdo#109278] / [fdo#109284] / [fdo#111827])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb4/igt@kms_color_chamelium@pipe-d-degamma.html

  * igt@kms_content_protection@atomic-dpms:
    - shard-apl:          NOTRUN -> [TIMEOUT][73] ([i915#1319])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-apl2/igt@kms_content_protection@atomic-dpms.html
    - shard-kbl:          NOTRUN -> [TIMEOUT][74] ([i915#1319]) +1 similar issue
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl7/igt@kms_content_protection@atomic-dpms.html

  * igt@kms_content_protection@lic:
    - shard-tglb:         NOTRUN -> [SKIP][75] ([i915#1063])
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb6/igt@kms_content_protection@lic.html

  * igt@kms_cursor_crc@pipe-a-cursor-512x512-sliding:
    - shard-iclb:         NOTRUN -> [SKIP][76] ([fdo#109278] / [fdo#109279]) +2 similar issues
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb7/igt@kms_cursor_crc@pipe-a-cursor-512x512-sliding.html

  * igt@kms_cursor_crc@pipe-b-cursor-32x32-offscreen:
    - shard-tglb:         NOTRUN -> [SKIP][77] ([i915#3319]) +6 similar issues
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb7/igt@kms_cursor_crc@pipe-b-cursor-32x32-offscreen.html

  * igt@kms_cursor_crc@pipe-c-cursor-max-size-onscreen:
    - shard-tglb:         NOTRUN -> [SKIP][78] ([i915#3359]) +7 similar issues
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb7/igt@kms_cursor_crc@pipe-c-cursor-max-size-onscreen.html

  * igt@kms_cursor_crc@pipe-d-cursor-256x256-random:
    - shard-glk:          NOTRUN -> [SKIP][79] ([fdo#109271]) +104 similar issues
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-glk1/igt@kms_cursor_crc@pipe-d-cursor-256x256-random.html

  * igt@kms_cursor_crc@pipe-d-cursor-512x170-random:
    - shard-tglb:         NOTRUN -> [SKIP][80] ([fdo#109279] / [i915#3359]) +6 similar issues
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb6/igt@kms_cursor_crc@pipe-d-cursor-512x170-random.html

  * igt@kms_cursor_edge_walk@pipe-d-256x256-left-edge:
    - shard-iclb:         NOTRUN -> [SKIP][81] ([fdo#109278]) +42 similar issues
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb5/igt@kms_cursor_edge_walk@pipe-d-256x256-left-edge.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
    - shard-glk:          [PASS][82] -> [FAIL][83] ([i915#72])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-glk3/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-glk4/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic:
    - shard-iclb:         NOTRUN -> [SKIP][84] ([fdo#109274] / [fdo#109278]) +4 similar issues
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb7/igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-apl:          [PASS][85] -> [FAIL][86] ([i915#2346])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-apl8/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-apl4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
    - shard-glk:          [PASS][87] -> [FAIL][88] ([i915#2346])
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-glk1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
    - shard-iclb:         [PASS][89] -> [FAIL][90] ([i915#2346])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-iclb5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb7/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-tglb:         NOTRUN -> [SKIP][91] ([i915#4103]) +1 similar issue
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb5/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_draw_crc@draw-method-rgb565-mmap-gtt-4tiled:
    - shard-tglb:         NOTRUN -> [SKIP][92] ([i915#5287]) +3 similar issues
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb8/igt@kms_draw_crc@draw-method-rgb565-mmap-gtt-4tiled.html

  * igt@kms_draw_crc@draw-method-xrgb2101010-mmap-wc-4tiled:
    - shard-iclb:         NOTRUN -> [SKIP][93] ([i915#5287]) +1 similar issue
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb7/igt@kms_draw_crc@draw-method-xrgb2101010-mmap-wc-4tiled.html

  * igt@kms_flip@2x-absolute-wf_vblank:
    - shard-tglb:         NOTRUN -> [SKIP][94] ([fdo#109274] / [fdo#111825] / [i915#3966])
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb2/igt@kms_flip@2x-absolute-wf_vblank.html

  * igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible:
    - shard-tglb:         NOTRUN -> [SKIP][95] ([fdo#109274] / [fdo#111825]) +13 similar issues
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb5/igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling:
    - shard-tglb:         NOTRUN -> [SKIP][96] ([i915#2587])
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb6/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt:
    - shard-kbl:          NOTRUN -> [SKIP][97] ([fdo#109271]) +348 similar issues
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-kbl:          NOTRUN -> [DMESG-WARN][98] ([i915#180]) +2 similar issues
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl1/igt@kms_frontbuffer_tracking@fbc-suspend.html
    - shard-snb:          [PASS][99] -> [INCOMPLETE][100] ([i915#5815])
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-snb5/igt@kms_frontbuffer_tracking@fbc-suspend.html
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-snb6/igt@kms_frontbuffer_tracking@fbc-suspend.html

  * igt@kms_frontbuffer_tracking@fbc-tiling-4:
    - shard-iclb:         NOTRUN -> [SKIP][101] ([i915#5438])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb1/igt@kms_frontbuffer_tracking@fbc-tiling-4.html
    - shard-tglb:         NOTRUN -> [SKIP][102] ([i915#5439])
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb6/igt@kms_frontbuffer_tracking@fbc-tiling-4.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt:
    - shard-snb:          NOTRUN -> [SKIP][103] ([fdo#109271]) +147 similar issues
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-snb7/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-pgflip-blt:
    - shard-tglb:         NOTRUN -> [SKIP][104] ([fdo#109280] / [fdo#111825]) +34 similar issues
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb5/igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-pgflip-blt:
    - shard-iclb:         NOTRUN -> [SKIP][105] ([fdo#109280]) +19 similar issues
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb4/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-d:
    - shard-apl:          NOTRUN -> [SKIP][106] ([fdo#109271] / [i915#533]) +1 similar issue
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-apl1/igt@kms_pipe_crc_basic@hang-read-crc-pipe-d.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a-planes:
    - shard-kbl:          [PASS][107] -> [DMESG-WARN][108] ([i915#180])
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl1/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a-planes.html
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl7/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a-planes.html

  * igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb:
    - shard-kbl:          NOTRUN -> [FAIL][109] ([i915#265])
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl6/igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb.html

  * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max:
    - shard-kbl:          NOTRUN -> [FAIL][110] ([fdo#108145] / [i915#265]) +3 similar issues
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl6/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max.html

  * igt@kms_plane_lowres@pipe-a-tiling-4:
    - shard-iclb:         NOTRUN -> [SKIP][111] ([i915#5288])
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb3/igt@kms_plane_lowres@pipe-a-tiling-4.html

  * igt@kms_plane_lowres@pipe-a-tiling-x:
    - shard-iclb:         NOTRUN -> [SKIP][112] ([i915#3536]) +1 similar issue
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb1/igt@kms_plane_lowres@pipe-a-tiling-x.html
    - shard-tglb:         NOTRUN -> [SKIP][113] ([i915#3536])
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb8/igt@kms_plane_lowres@pipe-a-tiling-x.html

  * igt@kms_plane_multiple@atomic-pipe-b-tiling-4:
    - shard-tglb:         NOTRUN -> [SKIP][114] ([i915#5288]) +2 similar issues
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb3/igt@kms_plane_multiple@atomic-pipe-b-tiling-4.html

  * igt@kms_plane_scaling@2x-scaler-multi-pipe:
    - shard-iclb:         NOTRUN -> [SKIP][115] ([fdo#109274]) +4 similar issues
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb1/igt@kms_plane_scaling@2x-scaler-multi-pipe.html

  * igt@kms_plane_scaling@downscale-with-rotation-factor-0-75@pipe-b-edp-1-downscale-with-rotation:
    - shard-tglb:         NOTRUN -> [SKIP][116] ([i915#5176]) +3 similar issues
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb6/igt@kms_plane_scaling@downscale-with-rotation-factor-0-75@pipe-b-edp-1-downscale-with-rotation.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-a-edp-1-planes-upscale-downscale:
    - shard-iclb:         [PASS][117] -> [SKIP][118] ([i915#5235]) +2 similar issues
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-iclb6/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-a-edp-1-planes-upscale-downscale.html
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb2/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-a-edp-1-planes-upscale-downscale.html

  * igt@kms_plane_scaling@scaler-with-clipping-clamping@pipe-b-edp-1-scaler-with-clipping-clamping:
    - shard-iclb:         [PASS][119] -> [SKIP][120] ([i915#5176]) +1 similar issue
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-iclb7/igt@kms_plane_scaling@scaler-with-clipping-clamping@pipe-b-edp-1-scaler-with-clipping-clamping.html
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb3/igt@kms_plane_scaling@scaler-with-clipping-clamping@pipe-b-edp-1-scaler-with-clipping-clamping.html

  * igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area:
    - shard-glk:          NOTRUN -> [SKIP][121] ([fdo#109271] / [i915#658])
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-glk4/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area:
    - shard-kbl:          NOTRUN -> [SKIP][122] ([fdo#109271] / [i915#658]) +3 similar issues
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl3/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-tglb:         NOTRUN -> [SKIP][123] ([i915#1911]) +1 similar issue
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb2/igt@kms_psr2_su@page_flip-nv12.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-apl:          NOTRUN -> [SKIP][124] ([fdo#109271] / [i915#658]) +1 similar issue
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-apl1/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@psr2_primary_page_flip:
    - shard-iclb:         NOTRUN -> [SKIP][125] ([fdo#109441])
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb7/igt@kms_psr@psr2_primary_page_flip.html
    - shard-tglb:         NOTRUN -> [FAIL][126] ([i915#132] / [i915#3467])
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb3/igt@kms_psr@psr2_primary_page_flip.html

  * igt@kms_psr@psr2_sprite_plane_move:
    - shard-iclb:         [PASS][127] -> [SKIP][128] ([fdo#109441]) +1 similar issue
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb6/igt@kms_psr@psr2_sprite_plane_move.html

  * igt@kms_setmode@invalid-clone-exclusive-crtc:
    - shard-iclb:         NOTRUN -> [SKIP][129] ([i915#3555])
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb5/igt@kms_setmode@invalid-clone-exclusive-crtc.html

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

  * igt@kms_vblank@pipe-d-wait-idle:
    - shard-kbl:          NOTRUN -> [SKIP][131] ([fdo#109271] / [i915#533]) +2 similar issues
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl3/igt@kms_vblank@pipe-d-wait-idle.html

  * igt@kms_vrr@flipline:
    - shard-tglb:         NOTRUN -> [SKIP][132] ([i915#3555]) +4 similar issues
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb8/igt@kms_vrr@flipline.html

  * igt@nouveau_crc@pipe-c-ctx-flip-detection:
    - shard-iclb:         NOTRUN -> [SKIP][133] ([i915#2530]) +2 similar issues
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb3/igt@nouveau_crc@pipe-c-ctx-flip-detection.html

  * igt@nouveau_crc@pipe-c-source-outp-complete:
    - shard-tglb:         NOTRUN -> [SKIP][134] ([i915#2530]) +6 similar issues
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb7/igt@nouveau_crc@pipe-c-source-outp-complete.html

  * igt@nouveau_crc@pipe-d-ctx-flip-skip-current-frame:
    - shard-iclb:         NOTRUN -> [SKIP][135] ([fdo#109278] / [i915#2530]) +1 similar issue
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb7/igt@nouveau_crc@pipe-d-ctx-flip-skip-current-frame.html

  * igt@prime_nv_api@i915_self_import:
    - shard-tglb:         NOTRUN -> [SKIP][136] ([fdo#109291]) +2 similar issues
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb5/igt@prime_nv_api@i915_self_import.html

  * igt@prime_nv_test@nv_write_i915_cpu_mmap_read:
    - shard-iclb:         NOTRUN -> [SKIP][137] ([fdo#109291]) +1 similar issue
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb8/igt@prime_nv_test@nv_write_i915_cpu_mmap_read.html

  * igt@syncobj_timeline@transfer-timeline-point:
    - shard-glk:          NOTRUN -> [DMESG-FAIL][138] ([i915#5098])
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-glk8/igt@syncobj_timeline@transfer-timeline-point.html

  * igt@sysfs_clients@fair-1:
    - shard-tglb:         NOTRUN -> [SKIP][139] ([i915#2994]) +2 similar issues
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb5/igt@sysfs_clients@fair-1.html

  * igt@sysfs_clients@recycle-many:
    - shard-apl:          NOTRUN -> [SKIP][140] ([fdo#109271] / [i915#2994]) +2 similar issues
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-apl2/igt@sysfs_clients@recycle-many.html
    - shard-iclb:         NOTRUN -> [SKIP][141] ([i915#2994])
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb2/igt@sysfs_clients@recycle-many.html
    - shard-glk:          NOTRUN -> [SKIP][142] ([fdo#109271] / [i915#2994])
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-glk3/igt@sysfs_clients@recycle-many.html

  * igt@sysfs_clients@sema-25:
    - shard-kbl:          NOTRUN -> [SKIP][143] ([fdo#109271] / [i915#2994]) +4 similar issues
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl1/igt@sysfs_clients@sema-25.html

  
#### Possible fixes ####

  * igt@feature_discovery@psr1:
    - {shard-rkl}:        [SKIP][144] ([i915#658]) -> [PASS][145]
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-5/igt@feature_discovery@psr1.html
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@feature_discovery@psr1.html

  * igt@gem_exec_fair@basic-none-solo@rcs0:
    - shard-apl:          [FAIL][146] ([i915#2842]) -> [PASS][147] +1 similar issue
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-apl4/igt@gem_exec_fair@basic-none-solo@rcs0.html
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-apl4/igt@gem_exec_fair@basic-none-solo@rcs0.html

  * igt@gem_exec_flush@basic-wb-ro-default:
    - shard-snb:          [SKIP][148] ([fdo#109271]) -> [PASS][149]
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-snb6/igt@gem_exec_flush@basic-wb-ro-default.html
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-snb2/igt@gem_exec_flush@basic-wb-ro-default.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-kbl:          [DMESG-WARN][150] ([i915#5566] / [i915#716]) -> [PASS][151]
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl6/igt@gen9_exec_parse@allowed-single.html
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl7/igt@gen9_exec_parse@allowed-single.html

  * igt@i915_pm_backlight@bad-brightness:
    - {shard-rkl}:        [SKIP][152] ([i915#3012]) -> [PASS][153]
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-5/igt@i915_pm_backlight@bad-brightness.html
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@i915_pm_backlight@bad-brightness.html

  * igt@i915_pm_rpm@dpms-lpsp:
    - {shard-rkl}:        [SKIP][154] ([i915#1397]) -> [PASS][155]
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-1/igt@i915_pm_rpm@dpms-lpsp.html
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@i915_pm_rpm@dpms-lpsp.html

  * igt@i915_pm_rpm@i2c:
    - {shard-rkl}:        [SKIP][156] ([fdo#109308]) -> [PASS][157]
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-5/igt@i915_pm_rpm@i2c.html
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@i915_pm_rpm@i2c.html

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

  * igt@kms_color@pipe-b-gamma:
    - {shard-rkl}:        [SKIP][160] ([i915#1149] / [i915#4070] / [i915#4098]) -> [PASS][161]
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-4/igt@kms_color@pipe-b-gamma.html
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@kms_color@pipe-b-gamma.html

  * igt@kms_cursor_crc@pipe-a-cursor-128x42-offscreen:
    - {shard-rkl}:        [SKIP][162] ([fdo#112022] / [i915#4070]) -> [PASS][163] +6 similar issues
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-5/igt@kms_cursor_crc@pipe-a-cursor-128x42-offscreen.html
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@kms_cursor_crc@pipe-a-cursor-128x42-offscreen.html

  * igt@kms_cursor_edge_walk@pipe-b-256x256-left-edge:
    - {shard-rkl}:        [SKIP][164] ([i915#1849] / [i915#4070] / [i915#4098]) -> [PASS][165] +2 similar issues
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-5/igt@kms_cursor_edge_walk@pipe-b-256x256-left-edge.html
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@kms_cursor_edge_walk@pipe-b-256x256-left-edge.html

  * igt@kms_cursor_legacy@cursora-vs-flipa-atomic:
    - {shard-rkl}:        [SKIP][166] ([fdo#111825] / [i915#4070]) -> [PASS][167] +3 similar issues
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-2/igt@kms_cursor_legacy@cursora-vs-flipa-atomic.html
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@kms_cursor_legacy@cursora-vs-flipa-atomic.html

  * igt@kms_cursor_legacy@pipe-c-forked-move:
    - {shard-rkl}:        [SKIP][168] ([i915#4070]) -> [PASS][169] +1 similar issue
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-1/igt@kms_cursor_legacy@pipe-c-forked-move.html
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-4/igt@kms_cursor_legacy@pipe-c-forked-move.html

  * igt@kms_draw_crc@draw-method-xrgb8888-blt-untiled:
    - {shard-rkl}:        [SKIP][170] ([i915#4098] / [i915#4369]) -> [PASS][171]
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-4/igt@kms_draw_crc@draw-method-xrgb8888-blt-untiled.html
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@kms_draw_crc@draw-method-xrgb8888-blt-untiled.html

  * igt@kms_draw_crc@draw-method-xrgb8888-blt-ytiled:
    - {shard-rkl}:        [SKIP][172] ([fdo#111314] / [i915#4098] / [i915#4369]) -> [PASS][173] +1 similar issue
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-1/igt@kms_draw_crc@draw-method-xrgb8888-blt-ytiled.html
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@kms_draw_crc@draw-method-xrgb8888-blt-ytiled.html

  * igt@kms_flip@flip-vs-suspend@c-dp1:
    - shard-kbl:          [DMESG-WARN][174] ([i915#180]) -> [PASS][175] +4 similar issues
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl1/igt@kms_flip@flip-vs-suspend@c-dp1.html
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl3/igt@kms_flip@flip-vs-suspend@c-dp1.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
    - shard-iclb:         [SKIP][176] ([i915#3701]) -> [PASS][177]
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-iclb2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb7/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-cpu:
    - {shard-rkl}:        [SKIP][178] ([i915#1849] / [i915#4098]) -> [PASS][179] +23 similar issues
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-cpu.html
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-cpu.html

  * igt@kms_hdmi_inject@inject-audio:
    - shard-tglb:         [SKIP][180] ([i915#433]) -> [PASS][181]
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-tglb7/igt@kms_hdmi_inject@inject-audio.html
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb5/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_invalid_mode@zero-clock:
    - {shard-rkl}:        [SKIP][182] ([i915#4278]) -> [PASS][183] +1 similar issue
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-5/igt@kms_invalid_mode@zero-clock.html
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@kms_invalid_mode@zero-clock.html

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-a:
    - {shard-rkl}:        [SKIP][184] ([i915#4098]) -> [PASS][185]
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-4/igt@kms_pipe_crc_basic@hang-read-crc-pipe-a.html
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@kms_pipe_crc_basic@hang-read-crc-pipe-a.html

  * igt@kms_plane@plane-position-covered@pipe-b-planes:
    - {shard-rkl}:        [SKIP][186] ([i915#3558]) -> [PASS][187] +1 similar issue
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-1/igt@kms_plane@plane-position-covered@pipe-b-planes.html
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@kms_plane@plane-position-covered@pipe-b-planes.html

  * igt@kms_plane_multiple@atomic-pipe-a-tiling-none:
    - {shard-rkl}:        [SKIP][188] ([i915#3558] / [i915#4070]) -> [PASS][189] +1 similar issue
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-1/igt@kms_plane_multiple@atomic-pipe-a-tiling-none.html
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@kms_plane_multiple@atomic-pipe-a-tiling-none.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-iclb:         [SKIP][190] ([fdo#109642] / [fdo#111068] / [i915#658]) -> [PASS][191]
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-iclb7/igt@kms_psr2_su@frontbuffer-xrgb8888.html
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb2/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr@cursor_mmap_cpu:
    - {shard-rkl}:        [SKIP][192] ([i915#1072]) -> [PASS][193] +2 similar issues
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-rkl-2/igt@kms_psr@cursor_mmap_cpu.html
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-rkl-6/igt@kms_psr@cursor_mmap_cpu.html

  * igt@kms_psr@psr2_cursor_plane_move:
    - shard-iclb:         [SKIP][194] ([fdo#109441]) -> [PASS][195]
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-iclb5/igt@kms_psr@psr2_cursor_plane_move.html
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb2/igt@kms_psr@psr2_cursor_plane_move.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-tglb:         [SKIP][196] ([i915#5519]) -> [PASS][197]
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-tglb6/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglb5/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@kms_vblank@pipe-b-ts-continuation-suspend:
    - shard-apl:          [DMESG-WARN][198] ([i915#180]) -> [PASS][199] +2 similar issues
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-apl1/igt@kms_vblank@pipe-b-ts-continuation-suspend.html
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-apl2/igt@kms_vblank@pipe-b-ts-continuation-suspend.html

  * igt@perf@enable-disable:
    - shard-apl:          [INCOMPLETE][200] -> [PASS][201]
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-apl3/igt@perf@enable-disable.html
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-apl8/igt@perf@enable-disable.html

  * igt@prime_self_import@reimport-vs-gem_close-race:
    - {shard-tglu}:       [FAIL][202] -> [PASS][203]
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-tglu-2/igt@prime_self_import@reimport-vs-gem_close-race.html
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-tglu-8/igt@prime_self_import@reimport-vs-gem_close-race.html

  
#### Warnings ####

  * igt@gem_exec_balancer@parallel-keep-submit-fence:
    - shard-iclb:         [DMESG-WARN][204] ([i915#5614]) -> [SKIP][205] ([i915#4525]) +2 similar issues
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-iclb2/igt@gem_exec_balancer@parallel-keep-submit-fence.html
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb7/igt@gem_exec_balancer@parallel-keep-submit-fence.html

  * igt@gem_exec_balancer@parallel-ordering:
    - shard-iclb:         [SKIP][206] ([i915#4525]) -> [DMESG-FAIL][207] ([i915#5614])
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-iclb8/igt@gem_exec_balancer@parallel-ordering.html
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb4/igt@gem_exec_balancer@parallel-ordering.html

  * igt@gem_exec_balancer@parallel-out-fence:
    - shard-iclb:         [SKIP][208] ([i915#4525]) -> [DMESG-WARN][209] ([i915#5614]) +1 similar issue
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-iclb8/igt@gem_exec_balancer@parallel-out-fence.html
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-iclb2/igt@gem_exec_balancer@parallel-out-fence.html

  * igt@kms_chamelium@vga-hpd-fast:
    - shard-glk:          [SKIP][210] ([fdo#109271] / [fdo#111827] / [i915#1888]) -> [SKIP][211] ([fdo#109271] / [fdo#111827])
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-glk3/igt@kms_chamelium@vga-hpd-fast.html
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-glk1/igt@kms_chamelium@vga-hpd-fast.html

  * igt@runner@aborted:
    - shard-kbl:          ([FAIL][212], [FAIL][213], [FAIL][214], [FAIL][215], [FAIL][216], [FAIL][217], [FAIL][218], [FAIL][219], [FAIL][220], [FAIL][221], [FAIL][222], [FAIL][223], [FAIL][224], [FAIL][225], [FAIL][226], [FAIL][227]) ([fdo#109271] / [i915#180] / [i915#3002] / [i915#4312] / [i915#5257] / [i915#716] / [i915#92]) -> ([FAIL][228], [FAIL][229], [FAIL][230], [FAIL][231], [FAIL][232], [FAIL][233], [FAIL][234], [FAIL][235], [FAIL][236], [FAIL][237], [FAIL][238], [FAIL][239], [FAIL][240], [FAIL][241], [FAIL][242]) ([fdo#109271] / [i915#180] / [i915#3002] / [i915#4312] / [i915#5257])
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl4/igt@runner@aborted.html
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl6/igt@runner@aborted.html
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl1/igt@runner@aborted.html
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl7/igt@runner@aborted.html
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl6/igt@runner@aborted.html
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl3/igt@runner@aborted.html
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl1/igt@runner@aborted.html
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl4/igt@runner@aborted.html
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl3/igt@runner@aborted.html
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl1/igt@runner@aborted.html
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl3/igt@runner@aborted.html
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl4/igt@runner@aborted.html
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl1/igt@runner@aborted.html
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl1/igt@runner@aborted.html
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl7/igt@runner@aborted.html
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6469/shard-kbl7/igt@runner@aborted.html
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl1/igt@runner@aborted.html
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl1/igt@runner@aborted.html
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl4/igt@runner@aborted.html
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl4/igt@runner@aborted.html
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl1/igt@runner@aborted.html
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl4/igt@runner@aborted.html
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl1/igt@runner@aborted.html
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl4/igt@runner@aborted.html
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl4/igt@runner@aborted.html
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl4/igt@runner@aborted.html
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl1/igt@runner@aborted.html
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl7/igt@runner@aborted.html
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl7/igt@runner@aborted.html
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl3/igt@runner@aborted.html
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/shard-kbl1/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).

  [IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [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#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
  [fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109290]: https://bugs.freedesktop.org/show_bug.cgi?id=109290
  [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291
  [fdo#109293]: https://bugs.freedesktop.org/show_bug.cgi?id=109293
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109300]: https://bugs.freedesktop.org/show_bug.cgi?id=109300
  [fdo#109302]: https://bugs.freedesktop.org/show_bug.cgi?id=109302
  [fdo#109303]: https://bugs.freedesktop.org/show_bug.cgi?id=109303
  [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308
  [fdo#109312]: https://bugs.freedesktop.org/show_bug.cgi?id=109312
  [fdo#109314]: https://bugs.freedesktop.org/show_bug.cgi?id=109314
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110542]: https://bugs.freedesktop.org/show_bug.cgi?id=110542
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#110725]: https://bugs.freedesktop.org/show_bug.cgi?id=110725
  [fdo#110892]: https://bugs.freedesktop.org/show_bug.cgi?id=110892
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111314]: https://bugs.freedesktop.org/show_bug.cgi?id=111314
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111644]: https://bugs.freedesktop.org/show_bug.cgi?id=111644
  [fdo#111656]: https://bugs.freedesktop.org/show_bug.cgi?id=111656
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112022]: https://bugs.freedesktop.org/show_bug.cgi?id=112022
  [fdo#112054]: https://bugs.freedesktop.org/show_bug.cgi?id=112054
  [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
  [i915#1063]: https://gitlab.freedesktop.org/drm/intel/issues/1063
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099
  [i915#1149]: https://gitlab.freedesktop.org/drm/intel/issues/1149
  [i915#1155]: https://gitlab.freedesktop.org/drm/intel/issues/1155
  [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
  [i915#1257]: https://gitlab.freedesktop.org/drm/intel/issues/1257
  [i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319
  [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#1769]: https://gitlab.freedesktop.org/drm/intel/issues/1769
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1836]: https://gitlab.freedesktop.org/drm/intel/issues/1836
  [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#1888]: https://gitlab.freedesktop.org/drm/intel/issues/1888
  [i915#1902]: https://gitlab.freedesktop.org/drm/intel/issues/1902
  [i915#1911]: https://gitlab.freedesktop.org/drm/intel/issues/1911
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2411]: https://gitlab.freedesktop.org/drm/intel/issues/2411
  [i915#2433]: https://gitlab.freedesktop.org/drm/intel/issues/2433
  [i915#2435]: https://gitlab.freedesktop.org/drm/intel/issues/2435
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2530]: https://gitlab.freedesktop.org/drm/intel/issues/2530
  [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587
  [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
  [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
  [i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#2994]: https://gitlab.freedesktop.org/drm/intel/issues/2994
  [i915#3002]: https://gitlab.freedesktop.org/drm/intel/issues/3002
  [i915#3012]: https://gitlab.freedesktop.org/drm/intel/issues/3012
  [i915#3063]: https://gitlab.freedesktop.org/drm/intel/issues/3063
  [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318
  [i915#3319]: https://gitlab.freedesktop.org/drm/intel/issues/3319
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3376]: https://gitlab.freedesktop.org/drm/intel/issues/3376
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3467]: https://gitlab.freedesktop.org/drm/intel/issues/3467
  [i915#3469]: https://gitlab.freedesktop.org/drm/intel/issues/3469
  [i915#3536]: https://gitlab.freedesktop.org/drm/intel/issues/3536
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3558]: https://gitlab.freedesktop.org/drm/intel/issues/3558
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3701]: https://gitlab.freedesktop.org/drm/intel/issues/3701
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742
  [i915#3828]: https://gitlab.freedesktop.org/drm/intel/issues/3828
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3938]: https://gitlab.freedesktop.org/drm/intel/issues/3938
  [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
  [i915#3966]: https://gitlab.freedesktop.org/drm/intel/issues/3966
  [i915#4016]: https://gitlab.freedesktop.org/drm/intel/issues/4016
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [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#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [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#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4278]: https://gitlab.freedesktop.org/drm/intel/issues/4278
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#433]: https://gitlab.freedesktop.org/drm/intel/issues/433
  [i915#4369]: https://gitlab.freedesktop.org/drm/intel/issues/4369
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#4565]: https://gitlab.freedesktop.org/drm/intel/issues/4565
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4765]: https://gitlab.freedesktop.org/drm/intel/issues/4765
  [i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771
  [i915#4807]: https://gitlab.freedesktop.org/drm/intel/issues/4807
  [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
  [i915#4833]: https://gitlab.freedesktop.org/drm/intel/issues/4833
  [i915#4842]: https://gitlab.freedesktop.org/drm/intel/issues/4842
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#4853]: https://gitlab.freedesktop.org/drm/intel/issues/4853
  [i915#4855]: https://gitlab.freedesktop.org/drm/intel/issues/4855
  [i915#4859]: https://gitlab.freedesktop.org/drm/intel/issues/4859
  [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
  [i915#4877]: https://gitlab.freedesktop.org/drm/intel/issues/4877
  [i915#4880]: https://gitlab.freedesktop.org/drm/intel/issues/4880
  [i915#4885]: https://gitlab.freedesktop.org/drm/intel/issues/4885
  [i915#4886]: https://gitlab.freedesktop.org/drm/intel/issues/4886
  [i915#4893]: https://gitlab.freedesktop.org/drm/intel/issues/4893
  [i915#4941]: https://gitlab.freedesktop.org/drm/intel/issues/4941
  [i915#5076]: https://gitlab.freedesktop.org/drm/intel/issues/5076
  [i915#5098]: https://gitlab.freedesktop.org/drm/intel/issues/5098
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5257]: https://gitlab.freedesktop.org/drm/intel/issues/5257
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5287]: https://gitlab.freedesktop.org/drm/intel/issues/5287
  [i915#5288]: https://gitlab.freedesktop.org/drm/intel/issues/5288
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5438]: https://gitlab.freedesktop.org/drm/intel/issues/5438
  [i915#5439]: https://gitlab.freedesktop.org/drm/intel/issues/5439
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5519]: https://gitlab.freedesktop.org/drm/intel/issues/5519
  [i915#5563]: https://gitlab.freedesktop.org/drm/intel/issues/5563
  [i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
  [i915#5614]: https://gitlab.freedesktop.org/drm/intel/issues/5614
  [i915#5691]: https://gitlab.freedesktop.org/drm/intel/issues/5691
  [i915#5754]: https://gitlab.freedesktop.org/drm/intel/issues/5754
  [i915#5815]: https://gitlab.freedesktop.org/drm/intel/issues/5815
  [i915#5849]: https://gitlab.freedesktop.org/drm/intel/issues/5849
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716
  [i915#72]: https://gitlab.freedesktop.org/drm/intel/issues/72
  [i915#768]: https://gitlab.freedesktop.org/drm/intel/issues/768
  [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6469 -> IGTPW_7071

  CI-20190529: 20190529
  CI_DRM_11626: 1672d1c43e4377628b445ab011343fe2496a41ce @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_7071: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7071/index.html
  IGT_6469: fe3c194ba90615e2402461348357c88a23864275 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* Re: [igt-dev] [PATCH i-g-t 1/2] tools/intel_guc_logger: Re-enable basic functionality
  2022-05-09 21:21 ` [igt-dev] [PATCH i-g-t 1/2] tools/intel_guc_logger: Re-enable basic functionality Alan Previn
@ 2022-07-19 21:35   ` Teres Alexis, Alan Previn
  0 siblings, 0 replies; 7+ messages in thread
From: Teres Alexis, Alan Previn @ 2022-07-19 21:35 UTC (permalink / raw)
  To: igt-dev


On Mon, 2022-05-09 at 14:21 -0700, Alan Previn wrote:
> Fix these multiple issues to get basic functionality up
> and running on GuC using:
> 1. Start using the updated debugfs path for all GuC relay-logging
>    file names.
> 2. Use the updated debugfs names for the relay-logging control
>    and channel files to match kernel changes.
> 3. Start querrying the relay sub-buffer info (buffer size and
>    number of sub-buffers) from kernel's new debugfs files.
> 4. Separate the control enabling from the log-level-setting and
>    keep the control handle open while collecting the logs.
> 
> Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com>
> ---
>  tools/intel_guc_logger.c | 179 ++++++++++++++++++++++++++++-----------
>  1 file changed, 129 insertions(+), 50 deletions(-)
> 
> diff --git a/tools/intel_guc_logger.c b/tools/intel_guc_logger.c
> index 5f1de8db..4a991127 100644
> --- a/tools/intel_guc_logger.c
> +++ b/tools/intel_guc_logger.c
> @@ -42,24 +42,30 @@
>  
>  #include "igt.h"
>  
> +#define KB(x) ((uint64_t)(x) * 1024)
>  #define MB(x) ((uint64_t)(x) * 1024 * 1024)
>  #ifndef PAGE_SIZE
>    #define PAGE_SIZE 4096
>  #endif
> -/* Currently the size of GuC log buffer is 19 pages & so is the size of relay
> - * subbuffer. If the size changes in future, then this define also needs to be
> - * updated accordingly.
> - */
> -#define SUBBUF_SIZE (19*PAGE_SIZE)
> -/* Need large buffering from logger side to hide the DISK IO latency, Driver
> - * can only store 8 snapshots of GuC log buffer in relay.
> - */
> -#define NUM_SUBBUFS 100
>  
> -#define RELAY_FILE_NAME  "guc_log"
>  #define DEFAULT_OUTPUT_FILE_NAME  "guc_log_dump.dat"
> -#define CONTROL_FILE_NAME "i915_guc_log_control"
>  
> +#define GLR_LOGLEVEL_NAME         "guc_log_level"
> +#define GLR_CTL_NAME              "guc_log_relay_ctl"
> +#define GLR_CHANNEL_NAME          "guc_log_relay_chan0"
> +
> +#define DEFAULT_SUBBUF_COUNT         (4 * 8)
> +					/* default to kernel built-in:   *
> +					 *   4 x 8 subbuf regions        *
> +					 */
> +#define DEFAULT_SUBBUF_SIZE          (KB(4 + 8 + 64))
> +					/* default to kernel built-ins : *
> +					 *   4K -> buffer states array   *
> +					 *   8K -> GuC crash dump        *
> +					 *  64K -> log events buffer     *
> +					 */
> +
> +int drm_fd;
>  char *read_buffer;
>  char *out_filename;
>  int poll_timeout = 2; /* by default 2ms timeout */
> @@ -68,23 +74,53 @@ pthread_t flush_thread;
>  int verbosity_level = 3; /* by default capture logs at max verbosity */
>  uint32_t produced, consumed;
>  uint64_t total_bytes_written;
> -int num_buffers = NUM_SUBBUFS;
> -int relay_fd, outfile_fd = -1;
> +int subbuf_count;
> +int subbuf_size;
> +int ctl_fd, relay_fd, outfile_fd = -1;
>  uint32_t test_duration, max_filesize;
>  pthread_cond_t underflow_cond, overflow_cond;
>  bool stop_logging, discard_oldlogs, capturing_stopped;
> +char *gucfspath;
>  
> -static void guc_log_control(bool enable, uint32_t log_level)
> +static void get_guc_subbuf_info(void)
> +{
> +	int fd, ret, j;
> +	char *path;
> +	const char *dbg_fs_names[2] = {"guc_log_relay_buf_size\0",
> +					"guc_log_relay_subbuf_count\0"};
> +	char outstr[128];
> +	uint64_t tmp[2] = {DEFAULT_SUBBUF_SIZE, DEFAULT_SUBBUF_COUNT};
> +
> +	for (j = 0; j < 2; j++) {
> +		igt_assert_neq(asprintf(&path, "%s/%s", gucfspath, dbg_fs_names[j]), -1);
> +		igt_info("Opening subbuf path %s\n", path);
> +		fd = igt_debugfs_open(drm_fd, path, O_RDONLY);
> +		free(path);
> +		igt_assert_f(fd >= 0, "couldn't open the GuC log relay-subbuf file\n");
> +		ret = read(fd, outstr, sizeof(outstr) - 1);
> +		igt_assert(ret > 0);
> +		outstr[ret] = '\0';
> +		tmp[j] = atoll(outstr);
> +		close(fd);
> +	}
> +	subbuf_size = tmp[0];
> +	subbuf_count = tmp[1];
> +	igt_info("Debugfs retrieved subbuf info: size=%d, count=%d\n",
> +		 subbuf_size, subbuf_count);
> +}
> +
> +static void guc_log_verbosity(bool enable, int log_level)
>  {
> -	int control_fd;
> -	char data[19];
> +	char *str;
> +	int loglevelfd;
>  	uint64_t val;
>  	int ret;
>  
> -	igt_assert_lte(log_level, 3);
> -
> -	control_fd = igt_debugfs_open(-1, CONTROL_FILE_NAME, O_WRONLY);
> -	igt_assert_f(control_fd >= 0, "couldn't open the guc log control file\n");
> +	igt_assert_neq(asprintf(&str, "%s/%s", gucfspath, GLR_LOGLEVEL_NAME), -1);
> +	igt_info("Opening log level -> %s\n", str);
> +	loglevelfd = igt_debugfs_open(drm_fd, str, O_WRONLY);
> +	free(str);
> +	igt_assert_f(loglevelfd >= 0, "couldn't open the GuC log level file\n");
>  
>  	/*
>  	 * i915 expects GuC log level to be specified as:
> @@ -96,13 +132,51 @@ static void guc_log_control(bool enable, uint32_t log_level)
>  	 */
>  	val = enable ? log_level + 1 : 0;
>  
> -	ret = snprintf(data, sizeof(data), "0x%" PRIx64, val);
> -	igt_assert(ret > 2 && ret < sizeof(data));
> +	ret = asprintf(&str, "0x%" PRIx64, val);
> +	igt_assert_neq(ret, -1);
> +	ret = write(loglevelfd, str, ret);
> +	free(str);
> +	igt_assert_f(ret > 0, "couldn't write verbosity to log level file\n");
> +	igt_info("Set GuC log level = %d\n", (int)val);
> +
> +	close(loglevelfd);
> +}
>  
> -	ret = write(control_fd, data, ret);
> -	igt_assert_f(ret > 0, "couldn't write to the log control file\n");
> +static void guc_log_control(bool enable, uint32_t log_level)
> +{
> +	char *str;
> +	uint64_t val = 0;
> +	int ret;
>  
> -	close(control_fd);
> +	if (enable) {
> +		igt_assert_neq(asprintf(&str, "%s/%s", gucfspath, GLR_CTL_NAME), -1);
> +		igt_info("Opening control file -> %s\n", str);
> +		ctl_fd = igt_debugfs_open(drm_fd, str, O_WRONLY);
> +		free(str);
> +		igt_assert_f(ctl_fd >= 0, "couldn't open the GuC log relay-ctl file\n");
> +		val = 1;
> +	}
> +
> +	/*
> +	 * i915 expects relay logging controls:
> +	 * 1    : open + enable relay logging
> +	 * 2    : flush
> +	 * 0    : disable relay logging + close
> +	 */
> +	if (ctl_fd) {
> +		ret = asprintf(&str, "0x%" PRIx64, val);
> +		igt_assert_neq(ret, -1);
> +		ret = write(ctl_fd, str, ret);
> +		free(str);
> +		igt_assert_f(ret > 0, "couldn't write to the log control file\n");
> +	}
> +
> +	guc_log_verbosity(enable, log_level);
> +
> +	if (!enable) {
> +		igt_info("Closing control file\n");
> +		close(ctl_fd);
> +	}
>  }
>  
>  static void int_sig_handler(int sig)
> @@ -119,18 +193,18 @@ static void pull_leftover_data(void)
>  
>  	do {
>  		/* Read the logs from relay buffer */
> -		ret = read(relay_fd, read_buffer, SUBBUF_SIZE);
> +		ret = read(relay_fd, read_buffer, subbuf_size);
>  		if (!ret)
>  			break;
>  
> -		igt_assert_f(ret > 0, "failed to read from the guc log file\n");
> -		igt_assert_f(ret == SUBBUF_SIZE, "invalid read from relay file\n");
> +		igt_assert_f(ret > 0, "failed to read from the GuC log file\n");
> +		igt_assert_f(ret == subbuf_size, "invalid read from relay file\n");
>  
>  		bytes_read += ret;
>  
>  		if (outfile_fd >= 0) {
> -			ret = write(outfile_fd, read_buffer, SUBBUF_SIZE);
> -			igt_assert_f(ret == SUBBUF_SIZE, "couldn't dump the logs in a file\n");
> +			ret = write(outfile_fd, read_buffer, subbuf_size);
> +			igt_assert_f(ret == subbuf_size, "couldn't dump the logs in a file\n");
>  			total_bytes_written += ret;
>  		}
>  	} while(1);
> @@ -149,7 +223,7 @@ static void pull_data(void)
>  	int ret;
>  
>  	pthread_mutex_lock(&mutex);
> -	while (num_filled_bufs() >= num_buffers) {
> +	while (num_filled_bufs() >= subbuf_count) {
>  		igt_debug("overflow, will wait, produced %u, consumed %u\n", produced, consumed);
>  		/* Stall the main thread in case of overflow, as there are no
>  		 * buffers available to store the new logs, otherwise there
> @@ -159,12 +233,12 @@ static void pull_data(void)
>  	};
>  	pthread_mutex_unlock(&mutex);
>  
> -	ptr = read_buffer + (produced % num_buffers) * SUBBUF_SIZE;
> +	ptr = read_buffer + (produced % subbuf_count) * subbuf_size;
>  
>  	/* Read the logs from relay buffer */
> -	ret = read(relay_fd, ptr, SUBBUF_SIZE);
> -	igt_assert_f(ret >= 0, "failed to read from the guc log file\n");
> -	igt_assert_f(!ret || ret == SUBBUF_SIZE, "invalid read from relay file\n");
> +	ret = read(relay_fd, ptr, subbuf_size);
> +	igt_assert_f(ret >= 0, "failed to read from the GuC log file\n");
> +	igt_assert_f(!ret || ret == subbuf_size, "invalid read from relay file\n");
>  
>  	if (ret) {
>  		pthread_mutex_lock(&mutex);
> @@ -204,10 +278,10 @@ static void *flusher(void *arg)
>  		};
>  		pthread_mutex_unlock(&mutex);
>  
> -		ptr = read_buffer + (consumed % num_buffers) * SUBBUF_SIZE;
> +		ptr = read_buffer + (consumed % subbuf_count) * subbuf_size;
>  
> -		ret = write(outfile_fd, ptr, SUBBUF_SIZE);
> -		igt_assert_f(ret == SUBBUF_SIZE, "couldn't dump the logs in a file\n");
> +		ret = write(outfile_fd, ptr, subbuf_size);
> +		igt_assert_f(ret == subbuf_size, "couldn't dump the logs in a file\n");
> 
To fix: A recent discussion with team mates revealed that the original design goal was to not just
take the incoming sequences of GuC-log-buffer snapshots from the kernel and dump to file.
The kernel is sending the entire GuC log buffers - both the guc-log-region-headers and
GuC-log-region-data. Side note: the kernel did limit the amount of data it copied over the channel
to only the new data (region usage is implemented as a ring buffer by the GuC firmware).

That said, new code needs to be added into this flusher thread to peek into the header,
and only copy the new data (reordering to flatten out wraparounds) and skip copying the
header itself.(of course keep just one header at the beginning with an ever-increasing
tail-ptr).

...alan

>  
>  		total_bytes_written += ret;
>  		if (max_filesize && (total_bytes_written > MB(max_filesize))) {
> @@ -260,8 +334,13 @@ static void init_flusher_thread(void)
>  
>  static void open_relay_file(void)
>  {
> -	relay_fd = igt_debugfs_open(-1, RELAY_FILE_NAME, O_RDONLY);
> -	igt_assert_f(relay_fd >= 0, "couldn't open the guc log file\n");
> +	char *path;
> +
> +	igt_assert_neq(asprintf(&path, "%s/%s", gucfspath, GLR_CHANNEL_NAME), -1);
> +	igt_info("Opening this path -> %s\n", path);
> +	relay_fd = igt_debugfs_open(drm_fd, path, O_RDONLY);
> +	free(path);
> +	igt_assert_f(relay_fd >= 0, "couldn't open the GuC log relay-channel file\n");
>  
>  	/* Purge the old/boot-time logs from the relay buffer.
>  	 * This is more for Val team's requirement, where they have to first
> @@ -292,7 +371,7 @@ static void open_output_file(void)
>  
>  static void init_main_thread(void)
>  {
> -	struct sched_param	thread_sched;
> +	struct sched_param thread_sched;
>  	int ret;
>  
>  	/* Run the main thread at highest priority to ensure that it always
> @@ -311,11 +390,11 @@ static void init_main_thread(void)
>  		igt_assert_f(0, "SIGALRM handler registration failed\n");
>  
>  	/* Need an aligned pointer for direct IO */
> -	ret = posix_memalign((void **)&read_buffer, PAGE_SIZE, num_buffers * SUBBUF_SIZE);
> +	ret = posix_memalign((void **)&read_buffer, PAGE_SIZE, subbuf_count * subbuf_size);
>  	igt_assert_f(ret == 0, "couldn't allocate the read buffer\n");
>  
>  	/* Keep the pages locked in RAM, avoid page fault overhead */
> -	ret = mlock(read_buffer, num_buffers * SUBBUF_SIZE);
> +	ret = mlock(read_buffer, subbuf_count * subbuf_size);
>  	igt_assert_f(ret == 0, "failed to lock memory\n");
>  
>  	/* Enable the logging, it may not have been enabled from boot and so
> @@ -342,11 +421,6 @@ static int parse_options(int opt, int opt_index, void *data)
>  		igt_assert_f(out_filename, "Couldn't allocate the o/p filename\n");
>  		igt_debug("logs to be stored in file %s\n", out_filename);
>  		break;
> -	case 'b':
> -		num_buffers = atoi(optarg);
> -		igt_assert_f(num_buffers > 0, "invalid input for -b option\n");
> -		igt_debug("number of buffers to be used is %d\n", num_buffers);
> -		break;
>  	case 't':
>  		test_duration = atoi(optarg);
>  		igt_assert_f(test_duration > 0, "invalid input for -t option\n");
> @@ -377,7 +451,6 @@ static void process_command_line(int argc, char **argv)
>  	static struct option long_options[] = {
>  		{"verbosity", required_argument, 0, 'v'},
>  		{"outputfile", required_argument, 0, 'o'},
> -		{"buffers", required_argument, 0, 'b'},
>  		{"testduration", required_argument, 0, 't'},
>  		{"polltimeout", required_argument, 0, 'p'},
>  		{"size", required_argument, 0, 's'},
> @@ -388,7 +461,6 @@ static void process_command_line(int argc, char **argv)
>  	const char *help =
>  		"  -v --verbosity=level   verbosity level of GuC logging (0-3)\n"
>  		"  -o --outputfile=name   name of the output file, including the location, where logs will be stored\n"
> -		"  -b --buffers=num       number of buffers to be maintained on logger side for storing logs\n"
>  		"  -t --testduration=sec  max duration in seconds for which the logger should run\n"
>  		"  -p --polltimeout=ms    polling timeout in ms, -1 == indefinite wait for the new data\n"
>  		"  -s --size=MB           max size of output file in MBs after which logging will be stopped\n"
> @@ -404,6 +476,11 @@ int main(int argc, char **argv)
>  	int nfds;
>  	int ret;
>  
> +	drm_fd = drm_open_driver(DRIVER_INTEL);
> +	igt_assert(drm_fd != -1);
> +	igt_assert_neq(asprintf(&gucfspath, "gt0/uc"), -1);
> +
> +	get_guc_subbuf_info();
>  	process_command_line(argc, argv);
>  
>  	init_main_thread();
> @@ -466,5 +543,7 @@ int main(int argc, char **argv)
>  	free(read_buffer);
>  	close(relay_fd);
>  	close(outfile_fd);
> +	free(gucfspath);
> +	close(drm_fd);
>  	igt_exit();
>  }
> -- 
> 2.25.1
> 


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

* Re: [igt-dev] [PATCH i-g-t 0/2] Resurrect GuC Relay Logging
  2022-05-09 21:21 [igt-dev] [PATCH i-g-t 0/2] Resurrect GuC Relay Logging Alan Previn
                   ` (3 preceding siblings ...)
  2022-05-10 10:14 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2022-12-06  2:10 ` Teres Alexis, Alan Previn
  4 siblings, 0 replies; 7+ messages in thread
From: Teres Alexis, Alan Previn @ 2022-12-06  2:10 UTC (permalink / raw)
  To: igt-dev

Alan: As i attempt to revive this series, i need to add 1 or 2 patches to allow guc log relay logging to work with
different gt's. 


On Mon, 2022-05-09 at 14:21 -0700, Alan Previn wrote:
> This series brings GuC relay logging back to life by
> re-aligning the (previously implicit, now query-able)
> guc-log-relay subbuffer-specs, debugfs file handle names
> and usages between intel_guc_logger tool and i915.
> 
> This series depends on fixes and updates on the
> kernel side via this series:
> https://patchwork.freedesktop.org/series/103767/
> 
> 

Alan:[snip]

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

end of thread, other threads:[~2022-12-06  2:10 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-09 21:21 [igt-dev] [PATCH i-g-t 0/2] Resurrect GuC Relay Logging Alan Previn
2022-05-09 21:21 ` [igt-dev] [PATCH i-g-t 1/2] tools/intel_guc_logger: Re-enable basic functionality Alan Previn
2022-07-19 21:35   ` Teres Alexis, Alan Previn
2022-05-09 21:21 ` [igt-dev] [PATCH i-g-t 2/2] tools/intel_guc_logger: Refactor intel_guc_logger globals into structs Alan Previn
2022-05-09 22:12 ` [igt-dev] ✓ Fi.CI.BAT: success for Resurrect GuC Relay Logging Patchwork
2022-05-10 10:14 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2022-12-06  2:10 ` [igt-dev] [PATCH i-g-t 0/2] " Teres Alexis, Alan Previn

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.