Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t v3 00/12] gputop: Add support for xe
@ 2024-05-04  6:46 Lucas De Marchi
  2024-05-04  6:46 ` [PATCH i-g-t v3 01/13] lib/igt_drm_fdinfo: Extract ignore_space() Lucas De Marchi
                   ` (18 more replies)
  0 siblings, 19 replies; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-04  6:46 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa, Tvrtko Ursulin, Lucas De Marchi

v3 of https://lore.kernel.org/all/20240423234431.1959354-1-lucas.demarchi@intel.com

I moved some gputop eye candy to a separate series:
https://lore.kernel.org/all/20240501173303.115737-1-lucas.demarchi@intel.com

This now also moves all the refactors to come as prep patches. The
drm-total-cycles addition is  in the last 3 patches.

As requested fdinfo and drm-clients libraries now don't take any
decision: they only read the fdinfo and calculate the deltas
respectively. The decision about what aproach to use to calculate the
client utilization is left to gputop.

Lucas De Marchi (13):
  lib/igt_drm_fdinfo: Extract ignore_space()
  lib/igt_drm_fdinfo: Allow any number of spaces before unit
  fixup! lib/igt_drm_fdinfo: Allow any number of spaces before unit
  lib/igt_drm_fdinfo: Stop passing key twice
  lib/igt_drm_fdinfo: Remove prefix arg from parse functions
  lib/igt_drm_fdinfo: Parse drm-cycles
  lib/igt_drm_fdinfo: Start tracking available engine keys
  treewide: Rename engine busyness variables
  lib/igt_drm_clients: Move engine fields to substruct
  lib/igt_drm_clients: Record drm-cycles
  lib/igt_drm_fdinfo: Parse drm-total-cycles
  lib/igt_drm_clients: Record total cycles
  gputop: Add support to drm-cycles/drm-total-cycles

 lib/igt_drm_clients.c    |  55 ++++++++++----
 lib/igt_drm_clients.h    |  27 ++++++-
 lib/igt_drm_fdinfo.c     | 154 +++++++++++++++++++++------------------
 lib/igt_drm_fdinfo.h     |  17 ++++-
 tests/intel/drm_fdinfo.c |  44 +++++------
 tools/gputop.c           |  45 ++++++++++--
 tools/intel_gpu_top.c    |  24 +++---
 7 files changed, 235 insertions(+), 131 deletions(-)

-- 
2.43.0


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

* [PATCH i-g-t v3 01/13] lib/igt_drm_fdinfo: Extract ignore_space()
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
@ 2024-05-04  6:46 ` Lucas De Marchi
  2024-05-06 20:21   ` Umesh Nerlige Ramappa
  2024-05-04  6:46 ` [PATCH i-g-t v3 02/13] lib/igt_drm_fdinfo: Allow any number of spaces before unit Lucas De Marchi
                   ` (17 subsequent siblings)
  18 siblings, 1 reply; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-04  6:46 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa, Tvrtko Ursulin, Lucas De Marchi

Extract ignore_space() to be used in other places.

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

diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
index cab677df2..b3f6fc35a 100644
--- a/lib/igt_drm_fdinfo.c
+++ b/lib/igt_drm_fdinfo.c
@@ -53,6 +53,14 @@ static size_t read_fdinfo(char *buf, const size_t sz, int at, const char *name)
 	return count > 0 ? count : 0;
 }
 
+static const char *ignore_space(const char *s)
+{
+	for (; *s && isspace(*s); s++)
+		;
+
+	return s;
+}
+
 static int parse_engine(char *line, struct drm_client_fdinfo *info,
 			size_t prefix_len,
 			const char **name_map, unsigned int map_entries,
@@ -115,8 +123,8 @@ static const char *find_kv(const char *buf, const char *key, size_t keylen)
 	if (*p != ':')
 		return NULL;
 
-	for (p++; *p && isspace(*p); p++)
-		;
+	p++;
+	p = ignore_space(p);
 
 	return *p ? p : NULL;
 }
-- 
2.43.0


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

* [PATCH i-g-t v3 02/13] lib/igt_drm_fdinfo: Allow any number of spaces before unit
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
  2024-05-04  6:46 ` [PATCH i-g-t v3 01/13] lib/igt_drm_fdinfo: Extract ignore_space() Lucas De Marchi
@ 2024-05-04  6:46 ` Lucas De Marchi
  2024-05-06 20:28   ` Umesh Nerlige Ramappa
  2024-05-04  6:46 ` [PATCH i-g-t v3 03/13] fixup! " Lucas De Marchi
                   ` (16 subsequent siblings)
  18 siblings, 1 reply; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-04  6:46 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa, Tvrtko Ursulin, Lucas De Marchi

When parsing memory region, allow any number of spaces between value and
unit by using ignore_space() and adjusting constness of the variables.

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

diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
index b3f6fc35a..3b2778eee 100644
--- a/lib/igt_drm_fdinfo.c
+++ b/lib/igt_drm_fdinfo.c
@@ -134,7 +134,8 @@ static int parse_region(char *line, struct drm_client_fdinfo *info,
 			const char **region_map, unsigned int region_entries,
 			uint64_t *val)
 {
-	char *name, *p, *unit = NULL;
+	const char *name, *p, *unit = NULL;
+	char *end_ptr;
 	ssize_t name_len;
 	int found = -1;
 	unsigned int i;
@@ -180,9 +181,9 @@ static int parse_region(char *line, struct drm_client_fdinfo *info,
 		goto out;
 
 	p++;
-	*val = strtoull(p, &p, 10);
+	*val = strtoull(p, &end_ptr, 10);
 
-	p = index(p, ' ');
+	p = ignore_space(end_ptr);
 	if (!p)
 		goto out;
 
-- 
2.43.0


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

* [PATCH i-g-t v3 03/13] fixup! lib/igt_drm_fdinfo: Allow any number of spaces before unit
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
  2024-05-04  6:46 ` [PATCH i-g-t v3 01/13] lib/igt_drm_fdinfo: Extract ignore_space() Lucas De Marchi
  2024-05-04  6:46 ` [PATCH i-g-t v3 02/13] lib/igt_drm_fdinfo: Allow any number of spaces before unit Lucas De Marchi
@ 2024-05-04  6:46 ` Lucas De Marchi
  2024-05-06 20:33   ` Umesh Nerlige Ramappa
  2024-05-04  6:46 ` [PATCH i-g-t v3 04/13] lib/igt_drm_fdinfo: Stop passing key twice Lucas De Marchi
                   ` (15 subsequent siblings)
  18 siblings, 1 reply; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-04  6:46 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa, Tvrtko Ursulin, Lucas De Marchi

---
 lib/igt_drm_fdinfo.c | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
index 3b2778eee..3b8e79a35 100644
--- a/lib/igt_drm_fdinfo.c
+++ b/lib/igt_drm_fdinfo.c
@@ -134,8 +134,7 @@ static int parse_region(char *line, struct drm_client_fdinfo *info,
 			const char **region_map, unsigned int region_entries,
 			uint64_t *val)
 {
-	const char *name, *p, *unit = NULL;
-	char *end_ptr;
+	char *name, *p;
 	ssize_t name_len;
 	int found = -1;
 	unsigned int i;
@@ -181,18 +180,16 @@ static int parse_region(char *line, struct drm_client_fdinfo *info,
 		goto out;
 
 	p++;
-	*val = strtoull(p, &end_ptr, 10);
-
-	p = ignore_space(end_ptr);
-	if (!p)
+	*val = strtoull(p, &p, 10);
+	p = (char *)ignore_space(p);
+	if (!*p)
 		goto out;
 
-	unit = ++p;
-	if (!strcmp(unit, "KiB")) {
+	if (!strcmp(p, "KiB")) {
 		*val *= 1024;
-	} else if (!strcmp(unit, "MiB")) {
+	} else if (!strcmp(p, "MiB")) {
 		*val *= 1024 * 1024;
-	} else if (!strcmp(unit, "GiB")) {
+	} else if (!strcmp(p, "GiB")) {
 		*val *= 1024 * 1024 * 1024;
 	}
 
-- 
2.43.0


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

* [PATCH i-g-t v3 04/13] lib/igt_drm_fdinfo: Stop passing key twice
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (2 preceding siblings ...)
  2024-05-04  6:46 ` [PATCH i-g-t v3 03/13] fixup! " Lucas De Marchi
@ 2024-05-04  6:46 ` Lucas De Marchi
  2024-05-04  6:46 ` [PATCH i-g-t v3 05/13] lib/igt_drm_fdinfo: Remove prefix arg from parse functions Lucas De Marchi
                   ` (14 subsequent siblings)
  18 siblings, 0 replies; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-04  6:46 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa, Tvrtko Ursulin, Lucas De Marchi

Change strstartswith() so it also returns the length, which then can be
used inside the branch when it matches. A good compiler shall optimize
out the strlen call since the argument is a constant literal.

With this, the find_kv() is not needed anymore and the difference with
regard the other branches can be summarized with a new ignore_space()
helper and the fact it matches the entire key by appending the ':'. The
helper is added on top of the file so it can be reused later.

v2: Fix missing ignore_space() on drm-driver and drm-pdev

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 lib/igt_drm_fdinfo.c | 71 +++++++++++++++++++-------------------------
 1 file changed, 30 insertions(+), 41 deletions(-)

diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
index 3b8e79a35..254f4c52b 100644
--- a/lib/igt_drm_fdinfo.c
+++ b/lib/igt_drm_fdinfo.c
@@ -112,23 +112,6 @@ static int parse_engine(char *line, struct drm_client_fdinfo *info,
 	return found;
 }
 
-static const char *find_kv(const char *buf, const char *key, size_t keylen)
-{
-	const char *p;
-
-	if (strncmp(buf, key, keylen))
-		return NULL;
-
-	p = buf + keylen;
-	if (*p != ':')
-		return NULL;
-
-	p++;
-	p = ignore_space(p);
-
-	return *p ? p : NULL;
-}
-
 static int parse_region(char *line, struct drm_client_fdinfo *info,
 			size_t prefix_len,
 			const char **region_map, unsigned int region_entries,
@@ -210,6 +193,11 @@ out:
 		}							\
 	} while (0)
 
+#define strstartswith(a, b, plen__) ({					\
+		*plen__ = strlen(b);					\
+		strncmp(a, b, *plen__) == 0;				\
+})
+
 unsigned int
 __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
 		       const char **name_map, unsigned int map_entries,
@@ -227,34 +215,36 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
 
 	while ((l = strtok_r(_buf, "\n", &ctx))) {
 		uint64_t val = 0;
+		size_t keylen;
 		const char *v;
 		char *end_ptr;
 		int idx;
 
 		_buf = NULL;
 
-		if ((v = find_kv(l, "drm-driver", strlen("drm-driver")))) {
-			strncpy(info->driver, v, sizeof(info->driver) - 1);
-			good++;
-		}  else if ((v = find_kv(l, "drm-client-id",
-					 strlen("drm-client-id")))) {
+		if (strstartswith(l, "drm-driver:", &keylen)) {
+			v = ignore_space(l + keylen);
+			if (*v) {
+				strncpy(info->driver, v, sizeof(info->driver) - 1);
+				good++;
+			}
+		}  else if (strstartswith(l, "drm-client-id:", &keylen)) {
+			v = l + keylen;
 			info->id = strtol(v, &end_ptr, 10);
 			if (end_ptr != v)
 				good++;
-		} else if ((v = find_kv(l, "drm-pdev", strlen("drm-pdev")))) {
-			/* optional */
-			assert(strlen(v) < sizeof(info->pdev));
+		} else if (strstartswith(l, "drm-pdev:", &keylen)) {
+			v = ignore_space(l + keylen);
 			strncpy(info->pdev, v, sizeof(info->pdev) - 1);
-		} else if (!strncmp(l, "drm-engine-capacity-", 20)) {
-			idx = parse_engine(l, info,
-					   strlen("drm-engine-capacity-"),
+		} else if (strstartswith(l, "drm-engine-capacity-", &keylen)) {
+			idx = parse_engine(l, info, keylen,
 					   name_map, map_entries, &val);
 			if (idx >= 0) {
 				info->capacity[idx] = val;
 				num_capacity++;
 			}
-		} else if (!strncmp(l, "drm-engine-", 11)) {
-			idx = parse_engine(l, info, strlen("drm-engine-"),
+		} else if (strstartswith(l, "drm-engine-", &keylen)) {
+			idx = parse_engine(l, info, keylen,
 					   name_map, map_entries, &val);
 			if (idx >= 0) {
 				if (!info->capacity[idx])
@@ -264,25 +254,24 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
 				if (idx > info->last_engine_index)
 					info->last_engine_index = idx;
 			}
-		} else if (!strncmp(l, "drm-total-", 10)) {
-			idx = parse_region(l, info, strlen("drm-total-"),
+		} else if (strstartswith(l, "drm-total-", &keylen)) {
+			idx = parse_region(l, info, keylen,
 					   region_map, region_entries, &val);
 			UPDATE_REGION(idx, total, val);
-		} else if (!strncmp(l, "drm-shared-", 11)) {
-			idx = parse_region(l, info, strlen("drm-shared-"),
+		} else if (strstartswith(l, "drm-shared-", &keylen)) {
+			idx = parse_region(l, info, keylen,
 					   region_map, region_entries, &val);
 			UPDATE_REGION(idx, shared, val);
-
-		} else if (!strncmp(l, "drm-resident-", 13)) {
-			idx = parse_region(l, info, strlen("drm-resident-"),
+		} else if (strstartswith(l, "drm-resident-", &keylen)) {
+			idx = parse_region(l, info, keylen,
 					   region_map, region_entries, &val);
 			UPDATE_REGION(idx, resident, val);
-		} else if (!strncmp(l, "drm-purgeable-", 14)) {
-			idx = parse_region(l, info, strlen("drm-purgeable-"),
+		} else if (strstartswith(l, "drm-purgeable-", &keylen)) {
+			idx = parse_region(l, info, keylen,
 					   region_map, region_entries, &val);
 			UPDATE_REGION(idx, purgeable, val);
-		} else if (!strncmp(l, "drm-active-", 11)) {
-			idx = parse_region(l, info, strlen("drm-active-"),
+		} else if (strstartswith(l, "drm-active-", &keylen)) {
+			idx = parse_region(l, info, keylen,
 					   region_map, region_entries, &val);
 			UPDATE_REGION(idx, active, val);
 		}
-- 
2.43.0


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

* [PATCH i-g-t v3 05/13] lib/igt_drm_fdinfo: Remove prefix arg from parse functions
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (3 preceding siblings ...)
  2024-05-04  6:46 ` [PATCH i-g-t v3 04/13] lib/igt_drm_fdinfo: Stop passing key twice Lucas De Marchi
@ 2024-05-04  6:46 ` Lucas De Marchi
  2024-05-04  6:46 ` [PATCH i-g-t v3 06/13] lib/igt_drm_fdinfo: Parse drm-cycles Lucas De Marchi
                   ` (13 subsequent siblings)
  18 siblings, 0 replies; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-04  6:46 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa, Tvrtko Ursulin, Lucas De Marchi

The prefix is not really needed and __igt_parse_drm_fdinfo()
can simply pass l + keylen as argument which simplifies the parse
functions.

While refactoring this, it also replaces the remaining calls to index()
to use strchr().

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 lib/igt_drm_fdinfo.c | 43 ++++++++++++++++++++-----------------------
 1 file changed, 20 insertions(+), 23 deletions(-)

diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
index 254f4c52b..2d8ad8b81 100644
--- a/lib/igt_drm_fdinfo.c
+++ b/lib/igt_drm_fdinfo.c
@@ -61,25 +61,23 @@ static const char *ignore_space(const char *s)
 	return s;
 }
 
-static int parse_engine(char *line, struct drm_client_fdinfo *info,
-			size_t prefix_len,
+static int parse_engine(const char *name, struct drm_client_fdinfo *info,
 			const char **name_map, unsigned int map_entries,
 			uint64_t *val)
 {
-	ssize_t name_len;
-	char *name, *p;
+	const char *p;
+	size_t name_len;
 	int found = -1;
 	unsigned int i;
 
-	p = index(line, ':');
-	if (!p || p == line)
+	p = strchr(name, ':');
+	if (!p)
 		return -1;
 
-	name_len = p - line - prefix_len;
+	name_len = p - name;
 	if (name_len < 1)
 		return -1;
-
-	name = line + prefix_len;
+	p++;
 
 	if (name_map) {
 		for (i = 0; i < map_entries; i++) {
@@ -112,25 +110,24 @@ static int parse_engine(char *line, struct drm_client_fdinfo *info,
 	return found;
 }
 
-static int parse_region(char *line, struct drm_client_fdinfo *info,
-			size_t prefix_len,
+static int parse_region(const char *name, struct drm_client_fdinfo *info,
 			const char **region_map, unsigned int region_entries,
 			uint64_t *val)
 {
-	char *name, *p;
+	char *p;
 	ssize_t name_len;
 	int found = -1;
 	unsigned int i;
 
-	p = index(line, ':');
-	if (!p || p == line)
+	p = strchr(name, ':');
+	if (!p)
 		return -1;
 
-	name_len = p - line - prefix_len;
+	name_len = p - name;
 	if (name_len < 1)
 		return -1;
 
-	name = line + prefix_len;
+	p++;
 
 	if (region_map) {
 		for (i = 0; i < region_entries; i++) {
@@ -237,14 +234,14 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
 			v = ignore_space(l + keylen);
 			strncpy(info->pdev, v, sizeof(info->pdev) - 1);
 		} else if (strstartswith(l, "drm-engine-capacity-", &keylen)) {
-			idx = parse_engine(l, info, keylen,
+			idx = parse_engine(l + keylen, info,
 					   name_map, map_entries, &val);
 			if (idx >= 0) {
 				info->capacity[idx] = val;
 				num_capacity++;
 			}
 		} else if (strstartswith(l, "drm-engine-", &keylen)) {
-			idx = parse_engine(l, info, keylen,
+			idx = parse_engine(l + keylen, info,
 					   name_map, map_entries, &val);
 			if (idx >= 0) {
 				if (!info->capacity[idx])
@@ -255,23 +252,23 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
 					info->last_engine_index = idx;
 			}
 		} else if (strstartswith(l, "drm-total-", &keylen)) {
-			idx = parse_region(l, info, keylen,
+			idx = parse_region(l + keylen, info,
 					   region_map, region_entries, &val);
 			UPDATE_REGION(idx, total, val);
 		} else if (strstartswith(l, "drm-shared-", &keylen)) {
-			idx = parse_region(l, info, keylen,
+			idx = parse_region(l + keylen, info,
 					   region_map, region_entries, &val);
 			UPDATE_REGION(idx, shared, val);
 		} else if (strstartswith(l, "drm-resident-", &keylen)) {
-			idx = parse_region(l, info, keylen,
+			idx = parse_region(l + keylen, info,
 					   region_map, region_entries, &val);
 			UPDATE_REGION(idx, resident, val);
 		} else if (strstartswith(l, "drm-purgeable-", &keylen)) {
-			idx = parse_region(l, info, keylen,
+			idx = parse_region(l + keylen, info,
 					   region_map, region_entries, &val);
 			UPDATE_REGION(idx, purgeable, val);
 		} else if (strstartswith(l, "drm-active-", &keylen)) {
-			idx = parse_region(l, info, keylen,
+			idx = parse_region(l + keylen, info,
 					   region_map, region_entries, &val);
 			UPDATE_REGION(idx, active, val);
 		}
-- 
2.43.0


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

* [PATCH i-g-t v3 06/13] lib/igt_drm_fdinfo: Parse drm-cycles
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (4 preceding siblings ...)
  2024-05-04  6:46 ` [PATCH i-g-t v3 05/13] lib/igt_drm_fdinfo: Remove prefix arg from parse functions Lucas De Marchi
@ 2024-05-04  6:46 ` Lucas De Marchi
  2024-05-07  1:11   ` Umesh Nerlige Ramappa
  2024-05-04  6:46 ` [PATCH i-g-t v3 07/13] lib/igt_drm_fdinfo: Start tracking available engine keys Lucas De Marchi
                   ` (12 subsequent siblings)
  18 siblings, 1 reply; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-04  6:46 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa, Tvrtko Ursulin, Lucas De Marchi

Read drm-cycles from fdinfo and save it for later use. Like with the mem
regions, allow the number of engines to be updated regardless if
drm-engine-* or drm-cycles-* shows up first.

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 lib/igt_drm_fdinfo.c | 29 +++++++++++++++++++++--------
 lib/igt_drm_fdinfo.h |  4 ++++
 2 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
index 2d8ad8b81..f0a30677c 100644
--- a/lib/igt_drm_fdinfo.c
+++ b/lib/igt_drm_fdinfo.c
@@ -190,6 +190,21 @@ out:
 		}							\
 	} while (0)
 
+#define UPDATE_ENGINE(idx, engine, val)					\
+	do {								\
+		if (idx >= 0) {						\
+			info->engine[idx] = val;			\
+			if (!info->capacity[idx])			\
+					info->capacity[idx] = 1;	\
+			if (!engines_found[idx]) {			\
+				info->num_engines++;			\
+				engines_found[idx] = true;		\
+				if (idx > info->last_engine_index)	\
+					info->last_engine_index = idx;	\
+			}						\
+		}							\
+	} while (0)
+
 #define strstartswith(a, b, plen__) ({					\
 		*plen__ = strlen(b);					\
 		strncmp(a, b, *plen__) == 0;				\
@@ -201,6 +216,7 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
 		       const char **region_map, unsigned int region_entries)
 {
 	bool regions_found[DRM_CLIENT_FDINFO_MAX_REGIONS] = { };
+	bool engines_found[DRM_CLIENT_FDINFO_MAX_ENGINES] = { };
 	unsigned int good = 0, num_capacity = 0;
 	char buf[4096], *_buf = buf;
 	char *l, *ctx = NULL;
@@ -243,14 +259,11 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
 		} else if (strstartswith(l, "drm-engine-", &keylen)) {
 			idx = parse_engine(l + keylen, info,
 					   name_map, map_entries, &val);
-			if (idx >= 0) {
-				if (!info->capacity[idx])
-					info->capacity[idx] = 1;
-				info->busy[idx] = val;
-				info->num_engines++;
-				if (idx > info->last_engine_index)
-					info->last_engine_index = idx;
-			}
+			UPDATE_ENGINE(idx, busy, val);
+		} else if (strstartswith(l, "drm-cycles-", &keylen)) {
+			idx = parse_engine(l + keylen, info,
+					   name_map, map_entries, &val);
+			UPDATE_ENGINE(idx, cycles, val);
 		} else if (strstartswith(l, "drm-total-", &keylen)) {
 			idx = parse_region(l + keylen, info,
 					   region_map, region_entries, &val);
diff --git a/lib/igt_drm_fdinfo.h b/lib/igt_drm_fdinfo.h
index 1999c4f2b..17a47f94a 100644
--- a/lib/igt_drm_fdinfo.h
+++ b/lib/igt_drm_fdinfo.h
@@ -50,7 +50,11 @@ struct drm_client_fdinfo {
 	unsigned int last_engine_index;
 	unsigned int capacity[DRM_CLIENT_FDINFO_MAX_ENGINES];
 	char names[DRM_CLIENT_FDINFO_MAX_ENGINES][256];
+
+	/* drm-engine-<engine> values */
 	uint64_t busy[DRM_CLIENT_FDINFO_MAX_ENGINES];
+	/* drm-cycles-<engine> values */
+	uint64_t cycles[DRM_CLIENT_FDINFO_MAX_ENGINES];
 
 	unsigned int num_regions;
 	unsigned int last_region_index;
-- 
2.43.0


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

* [PATCH i-g-t v3 07/13] lib/igt_drm_fdinfo: Start tracking available engine keys
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (5 preceding siblings ...)
  2024-05-04  6:46 ` [PATCH i-g-t v3 06/13] lib/igt_drm_fdinfo: Parse drm-cycles Lucas De Marchi
@ 2024-05-04  6:46 ` Lucas De Marchi
  2024-05-07  1:14   ` Umesh Nerlige Ramappa
  2024-05-04  6:46 ` [PATCH i-g-t v3 08/13] treewide: Rename engine busyness variables Lucas De Marchi
                   ` (11 subsequent siblings)
  18 siblings, 1 reply; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-04  6:46 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa, Tvrtko Ursulin, Lucas De Marchi

Start tracking what are the available keys related to engine utilization
that were parsed from fdinfo. This can be later used by application to
make decisions on which of them to use.

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 lib/igt_drm_fdinfo.c | 7 ++++---
 lib/igt_drm_fdinfo.h | 8 ++++++++
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
index f0a30677c..79b72c54d 100644
--- a/lib/igt_drm_fdinfo.c
+++ b/lib/igt_drm_fdinfo.c
@@ -190,10 +190,11 @@ out:
 		}							\
 	} while (0)
 
-#define UPDATE_ENGINE(idx, engine, val)					\
+#define UPDATE_ENGINE(idx, engine, val, utilization_key)		\
 	do {								\
 		if (idx >= 0) {						\
 			info->engine[idx] = val;			\
+			info->utilization_mask |= utilization_key;	\
 			if (!info->capacity[idx])			\
 					info->capacity[idx] = 1;	\
 			if (!engines_found[idx]) {			\
@@ -259,11 +260,11 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
 		} else if (strstartswith(l, "drm-engine-", &keylen)) {
 			idx = parse_engine(l + keylen, info,
 					   name_map, map_entries, &val);
-			UPDATE_ENGINE(idx, busy, val);
+			UPDATE_ENGINE(idx, busy, val, DRM_FDINFO_UTILIZATION_ENGINE_TIME);
 		} else if (strstartswith(l, "drm-cycles-", &keylen)) {
 			idx = parse_engine(l + keylen, info,
 					   name_map, map_entries, &val);
-			UPDATE_ENGINE(idx, cycles, val);
+			UPDATE_ENGINE(idx, cycles, val, DRM_FDINFO_UTILIZATION_CYCLES);
 		} else if (strstartswith(l, "drm-total-", &keylen)) {
 			idx = parse_region(l + keylen, info,
 					   region_map, region_entries, &val);
diff --git a/lib/igt_drm_fdinfo.h b/lib/igt_drm_fdinfo.h
index 17a47f94a..3f641d79d 100644
--- a/lib/igt_drm_fdinfo.h
+++ b/lib/igt_drm_fdinfo.h
@@ -41,6 +41,11 @@ struct drm_client_meminfo {
 	uint64_t active;
 };
 
+enum drm_fdinfo_utilization {
+	DRM_FDINFO_UTILIZATION_ENGINE_TIME	= 1U << 0,
+	DRM_FDINFO_UTILIZATION_CYCLES		= 1U << 1,
+};
+
 struct drm_client_fdinfo {
 	char driver[128];
 	char pdev[128];
@@ -51,6 +56,9 @@ struct drm_client_fdinfo {
 	unsigned int capacity[DRM_CLIENT_FDINFO_MAX_ENGINES];
 	char names[DRM_CLIENT_FDINFO_MAX_ENGINES][256];
 
+	/* mask of enum drm_fdinfo_utilization parsed from fdinfo */
+	unsigned int utilization_mask;
+
 	/* drm-engine-<engine> values */
 	uint64_t busy[DRM_CLIENT_FDINFO_MAX_ENGINES];
 	/* drm-cycles-<engine> values */
-- 
2.43.0


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

* [PATCH i-g-t v3 08/13] treewide: Rename engine busyness variables
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (6 preceding siblings ...)
  2024-05-04  6:46 ` [PATCH i-g-t v3 07/13] lib/igt_drm_fdinfo: Start tracking available engine keys Lucas De Marchi
@ 2024-05-04  6:46 ` Lucas De Marchi
  2024-05-08 18:45   ` Umesh Nerlige Ramappa
  2024-05-04  6:46 ` [PATCH i-g-t v3 09/13] lib/igt_drm_clients: Move engine fields to substruct Lucas De Marchi
                   ` (10 subsequent siblings)
  18 siblings, 1 reply; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-04  6:46 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa, Tvrtko Ursulin, Lucas De Marchi

In preparation to have more possible ways to calculate engine
busyness/utilization, rename variables related to the current way: it's
reading the "engine time in nsec" spent by the client on each engine.

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 lib/igt_drm_clients.c    | 28 +++++++++++++------------
 lib/igt_drm_clients.h    |  8 ++++----
 lib/igt_drm_fdinfo.c     |  6 +++---
 lib/igt_drm_fdinfo.h     |  2 +-
 tests/intel/drm_fdinfo.c | 44 ++++++++++++++++++++--------------------
 tools/gputop.c           |  8 ++++----
 tools/intel_gpu_top.c    | 24 +++++++++++-----------
 7 files changed, 61 insertions(+), 59 deletions(-)

diff --git a/lib/igt_drm_clients.c b/lib/igt_drm_clients.c
index ab0c2cec2..3f4265015 100644
--- a/lib/igt_drm_clients.c
+++ b/lib/igt_drm_clients.c
@@ -103,19 +103,19 @@ igt_drm_client_update(struct igt_drm_client *c, unsigned int pid, char *name,
 
 	/* Engines */
 
-	c->last_runtime = 0;
-	c->total_runtime = 0;
+	c->agg_delta_engine_time = 0;
+	c->total_engine_time = 0;
 
 	for (i = 0; i <= c->engines->max_engine_id; i++) {
-		assert(i < ARRAY_SIZE(info->busy));
+		assert(i < ARRAY_SIZE(info->engine_time));
 
-		if (info->busy[i] < c->last[i])
+		if (info->engine_time[i] < c->last_engine_time[i])
 			continue; /* It will catch up soon. */
 
-		c->total_runtime += info->busy[i];
-		c->val[i] = info->busy[i] - c->last[i];
-		c->last_runtime += c->val[i];
-		c->last[i] = info->busy[i];
+		c->total_engine_time += info->engine_time[i];
+		c->delta_engine_time[i] = info->engine_time[i] - c->last_engine_time[i];
+		c->agg_delta_engine_time += c->delta_engine_time[i];
+		c->last_engine_time[i] = info->engine_time[i];
 	}
 
 	/* Memory regions */
@@ -183,9 +183,11 @@ igt_drm_client_add(struct igt_drm_clients *clients,
 		c->engines->max_engine_id = i;
 	}
 
-	c->val = calloc(c->engines->max_engine_id + 1, sizeof(*c->val));
-	c->last = calloc(c->engines->max_engine_id + 1, sizeof(*c->last));
-	assert(c->val && c->last);
+	c->delta_engine_time = calloc(c->engines->max_engine_id + 1,
+			       sizeof(*c->delta_engine_time));
+	c->last_engine_time = calloc(c->engines->max_engine_id + 1,
+			      sizeof(*c->last_engine_time));
+	assert(c->delta_engine_time && c->last_engine_time);
 
 	/* Memory regions */
 	c->regions = calloc(1, sizeof(*c->regions));
@@ -223,8 +225,8 @@ void igt_drm_client_free(struct igt_drm_client *c, bool clear)
 	}
 	free(c->engines);
 
-	free(c->val);
-	free(c->last);
+	free(c->delta_engine_time);
+	free(c->last_engine_time);
 
 	if (c->regions) {
 		for (i = 0; i <= c->regions->max_region_id; i++)
diff --git a/lib/igt_drm_clients.h b/lib/igt_drm_clients.h
index 52888aedc..f2ff13182 100644
--- a/lib/igt_drm_clients.h
+++ b/lib/igt_drm_clients.h
@@ -63,10 +63,10 @@ struct igt_drm_client {
 	char name[24]; /* Process name of the owning PID. */
 	char print_name[24]; /* Name without any non-printable characters. */
 	unsigned int samples; /* Count of times scanning updated this client. */
-	unsigned long total_runtime; /* Aggregate busyness on all engines since client start. */
-	unsigned long last_runtime; /* Aggregate busyness on all engines since previous scan. */
-	unsigned long *val; /* Array of engine busyness data, relative to previous scan. */
-	uint64_t *last; /* Array of engine busyness data as parsed from fdinfo. */
+	unsigned long total_engine_time; /* Aggregate of @agg_delta_engine_time, i.e. engine time on all engines since client start. */
+	unsigned long agg_delta_engine_time; /* Aggregate of @delta_engine_time, i.e. engine time on all engines since previous scan. */
+	unsigned long *delta_engine_time; /* Array of engine time data, relative to previous scan. */
+	uint64_t *last_engine_time; /* Array of engine time data as parsed from fdinfo. */
 	struct drm_client_meminfo *memory; /* Array of region memory utilisation as parsed from fdinfo. */
 };
 
diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
index 79b72c54d..9deeadd4e 100644
--- a/lib/igt_drm_fdinfo.c
+++ b/lib/igt_drm_fdinfo.c
@@ -190,10 +190,10 @@ out:
 		}							\
 	} while (0)
 
-#define UPDATE_ENGINE(idx, engine, val, utilization_key)		\
+#define UPDATE_ENGINE(idx, member, val, utilization_key)		\
 	do {								\
 		if (idx >= 0) {						\
-			info->engine[idx] = val;			\
+			info->member[idx] = val;			\
 			info->utilization_mask |= utilization_key;	\
 			if (!info->capacity[idx])			\
 					info->capacity[idx] = 1;	\
@@ -260,7 +260,7 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
 		} else if (strstartswith(l, "drm-engine-", &keylen)) {
 			idx = parse_engine(l + keylen, info,
 					   name_map, map_entries, &val);
-			UPDATE_ENGINE(idx, busy, val, DRM_FDINFO_UTILIZATION_ENGINE_TIME);
+			UPDATE_ENGINE(idx, engine_time, val, DRM_FDINFO_UTILIZATION_ENGINE_TIME);
 		} else if (strstartswith(l, "drm-cycles-", &keylen)) {
 			idx = parse_engine(l + keylen, info,
 					   name_map, map_entries, &val);
diff --git a/lib/igt_drm_fdinfo.h b/lib/igt_drm_fdinfo.h
index 3f641d79d..ea90edd79 100644
--- a/lib/igt_drm_fdinfo.h
+++ b/lib/igt_drm_fdinfo.h
@@ -60,7 +60,7 @@ struct drm_client_fdinfo {
 	unsigned int utilization_mask;
 
 	/* drm-engine-<engine> values */
-	uint64_t busy[DRM_CLIENT_FDINFO_MAX_ENGINES];
+	uint64_t engine_time[DRM_CLIENT_FDINFO_MAX_ENGINES];
 	/* drm-cycles-<engine> values */
 	uint64_t cycles[DRM_CLIENT_FDINFO_MAX_ENGINES];
 
diff --git a/tests/intel/drm_fdinfo.c b/tests/intel/drm_fdinfo.c
index 61c66079e..2d155180f 100644
--- a/tests/intel/drm_fdinfo.c
+++ b/tests/intel/drm_fdinfo.c
@@ -192,14 +192,14 @@ static void end_spin(int fd, igt_spin_t *spin, unsigned int flags)
 	}
 }
 
-static uint64_t read_busy(int i915, unsigned int class)
+static uint64_t read_engine_time(int i915, unsigned int class)
 {
 	struct drm_client_fdinfo info = { };
 
 	igt_assert(igt_parse_drm_fdinfo(i915, &info, engine_map,
 					ARRAY_SIZE(engine_map), NULL, 0));
 
-	return info.busy[class];
+	return info.engine_time[class];
 }
 
 static void
@@ -229,11 +229,11 @@ single(int gem_fd, const intel_ctx_t *ctx,
 	else
 		spin = NULL;
 
-	val = read_busy(gem_fd, e->class);
+	val = read_engine_time(gem_fd, e->class);
 	slept = measured_usleep(batch_duration_ns / 1000);
 	if (flags & TEST_TRAILING_IDLE)
 		end_spin(spin_fd, spin, flags);
-	val = read_busy(gem_fd, e->class) - val;
+	val = read_engine_time(gem_fd, e->class) - val;
 
 	if (flags & FLAG_HANG)
 		igt_force_gpu_reset(spin_fd);
@@ -250,9 +250,9 @@ single(int gem_fd, const intel_ctx_t *ctx,
 		gem_quiescent_gpu(spin_fd);
 		igt_assert(!gem_bo_busy(spin_fd, spin->handle));
 
-		val = read_busy(gem_fd, e->class);
+		val = read_engine_time(gem_fd, e->class);
 		slept = measured_usleep(batch_duration_ns / 1000);
-		val = read_busy(gem_fd, e->class) - val;
+		val = read_engine_time(gem_fd, e->class) - val;
 
 		assert_within_epsilon(val, 0, tolerance);
 	}
@@ -282,14 +282,14 @@ static void log_busy(unsigned int num_engines, uint64_t *val)
 	igt_info("%s", buf);
 }
 
-static void read_busy_all(int i915, uint64_t *val)
+static void read_engine_time_all(int i915, uint64_t *val)
 {
 	struct drm_client_fdinfo info = { };
 
 	igt_assert(igt_parse_drm_fdinfo(i915, &info, engine_map,
 					ARRAY_SIZE(engine_map), NULL, 0));
 
-	memcpy(val, info.busy, sizeof(info.busy));
+	memcpy(val, info.engine_time, sizeof(info.engine_time));
 }
 
 static void
@@ -312,11 +312,11 @@ busy_check_all(int gem_fd, const intel_ctx_t *ctx,
 
 	spin = igt_sync_spin(gem_fd, ahnd, ctx, e);
 
-	read_busy_all(gem_fd, tval[0]);
+	read_engine_time_all(gem_fd, tval[0]);
 	slept = measured_usleep(batch_duration_ns / 1000);
 	if (flags & TEST_TRAILING_IDLE)
 		end_spin(gem_fd, spin, flags);
-	read_busy_all(gem_fd, tval[1]);
+	read_engine_time_all(gem_fd, tval[1]);
 
 	end_spin(gem_fd, spin, FLAG_SYNC);
 	igt_spin_free(gem_fd, spin);
@@ -388,11 +388,11 @@ most_busy_check_all(int gem_fd, const intel_ctx_t *ctx,
 	/* Small delay to allow engines to start. */
 	usleep(__igt_sync_spin_wait(gem_fd, spin) * num_engines / 1e3);
 
-	read_busy_all(gem_fd, tval[0]);
+	read_engine_time_all(gem_fd, tval[0]);
 	slept = measured_usleep(batch_duration_ns / 1000);
 	if (flags & TEST_TRAILING_IDLE)
 		end_spin(gem_fd, spin, flags);
-	read_busy_all(gem_fd, tval[1]);
+	read_engine_time_all(gem_fd, tval[1]);
 
 	end_spin(gem_fd, spin, FLAG_SYNC);
 	igt_spin_free(gem_fd, spin);
@@ -443,11 +443,11 @@ all_busy_check_all(int gem_fd, const intel_ctx_t *ctx,
 	/* Small delay to allow engines to start. */
 	usleep(__igt_sync_spin_wait(gem_fd, spin) * num_engines / 1e3);
 
-	read_busy_all(gem_fd, tval[0]);
+	read_engine_time_all(gem_fd, tval[0]);
 	slept = measured_usleep(batch_duration_ns / 1000);
 	if (flags & TEST_TRAILING_IDLE)
 		end_spin(gem_fd, spin, flags);
-	read_busy_all(gem_fd, tval[1]);
+	read_engine_time_all(gem_fd, tval[1]);
 
 	end_spin(gem_fd, spin, FLAG_SYNC);
 	igt_spin_free(gem_fd, spin);
@@ -589,11 +589,11 @@ virtual(int i915, const intel_ctx_cfg_t *base_cfg, unsigned int flags)
 			else
 				spin = NULL;
 
-			val = read_busy(i915, class);
+			val = read_engine_time(i915, class);
 			slept = measured_usleep(batch_duration_ns / 1000);
 			if (flags & TEST_TRAILING_IDLE)
 				end_spin(i915, spin, flags);
-			val = read_busy(i915, class) - val;
+			val = read_engine_time(i915, class) - val;
 
 			if (flags & FLAG_HANG)
 				igt_force_gpu_reset(i915);
@@ -610,10 +610,10 @@ virtual(int i915, const intel_ctx_cfg_t *base_cfg, unsigned int flags)
 				gem_quiescent_gpu(i915);
 				igt_assert(!gem_bo_busy(i915, spin->handle));
 
-				val = read_busy(i915, class);
+				val = read_engine_time(i915, class);
 				slept = measured_usleep(batch_duration_ns /
 							1000);
-				val = read_busy(i915, class) - val;
+				val = read_engine_time(i915, class) - val;
 
 				assert_within_epsilon(val, 0, tolerance);
 			}
@@ -700,11 +700,11 @@ virtual_all(int i915, const intel_ctx_cfg_t *base_cfg, unsigned int flags)
 		/* Small delay to allow engines to start. */
 		usleep(__igt_sync_spin_wait(i915, spin) * count / 1e3);
 
-		val = read_busy(i915, class);
+		val = read_engine_time(i915, class);
 		slept = measured_usleep(batch_duration_ns / 1000);
 		if (flags & TEST_TRAILING_IDLE)
 			end_spin(i915, spin, flags);
-		val = read_busy(i915, class) - val;
+		val = read_engine_time(i915, class) - val;
 
 		if (flags & FLAG_HANG)
 			igt_force_gpu_reset(i915);
@@ -718,10 +718,10 @@ virtual_all(int i915, const intel_ctx_cfg_t *base_cfg, unsigned int flags)
 			gem_quiescent_gpu(i915);
 			igt_assert(!gem_bo_busy(i915, spin->handle));
 
-			val = read_busy(i915, class);
+			val = read_engine_time(i915, class);
 			slept = measured_usleep(batch_duration_ns /
 						1000);
-			val = read_busy(i915, class) - val;
+			val = read_engine_time(i915, class) - val;
 
 			assert_within_epsilon(val, 0, tolerance);
 		}
diff --git a/tools/gputop.c b/tools/gputop.c
index 8cec951b4..80bc94be4 100644
--- a/tools/gputop.c
+++ b/tools/gputop.c
@@ -176,7 +176,7 @@ print_client(struct igt_drm_client *c, struct igt_drm_client **prevc,
 	int len;
 
 	/* Filter out idle clients. */
-	if (!c->total_runtime || c->samples < 2)
+	if (!c->total_engine_time || c->samples < 2)
 		return lines;
 
 	/* Print header when moving to a different DRM card. */
@@ -208,7 +208,7 @@ print_client(struct igt_drm_client *c, struct igt_drm_client **prevc,
 		if (!c->engines->capacity[i])
 			continue;
 
-		pct = (double)c->val[i] / period_us / 1e3 * 100 /
+		pct = (double)c->delta_engine_time[i] / period_us / 1e3 * 100 /
 		      c->engines->capacity[i];
 
 		/*
@@ -257,8 +257,8 @@ static int client_cmp(const void *_a, const void *_b, void *unused)
 	 * Within buckets sort by last sampling period aggregated runtime, with
 	 * client id as a tie-breaker.
 	 */
-	val_a = a->last_runtime;
-	val_b = b->last_runtime;
+	val_a = a->agg_delta_engine_time;
+	val_b = b->agg_delta_engine_time;
 	if (val_a == val_b)
 		return __client_id_cmp(a, b);
 	else if (val_b > val_a)
diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c
index 5b4f94d7d..35122493c 100644
--- a/tools/intel_gpu_top.c
+++ b/tools/intel_gpu_top.c
@@ -793,7 +793,7 @@ static int client_last_cmp(const void *_a, const void *_b, void *unused)
 {
 	const struct igt_drm_client *a = _a;
 	const struct igt_drm_client *b = _b;
-	long val_a = a->last_runtime, val_b = b->last_runtime;
+	long val_a = a->agg_delta_engine_time, val_b = b->agg_delta_engine_time;
 
 	/*
 	 * Sort clients in descending order of runtime in the previous sampling
@@ -812,7 +812,7 @@ static int client_total_cmp(const void *_a, const void *_b, void *unused)
 {
 	const struct igt_drm_client *a = _a;
 	const struct igt_drm_client *b = _b;
-	long val_a = a->total_runtime, val_b = b->total_runtime;
+	long val_a = a->total_engine_time, val_b = b->total_engine_time;
 
 	if (val_a == val_b)
 		return __client_id_cmp(a, b);
@@ -893,9 +893,9 @@ static struct igt_drm_clients *display_clients(struct igt_drm_clients *clients)
 			strcpy(ac->pid_str, c->pid_str);
 			strcpy(ac->print_name, c->print_name);
 			ac->engines = c->engines;
-			ac->val = calloc(c->engines->max_engine_id + 1,
-					 sizeof(ac->val[0]));
-			assert(ac->val);
+			ac->delta_engine_time = calloc(c->engines->max_engine_id + 1,
+						sizeof(ac->delta_engine_time[0]));
+			assert(ac->delta_engine_time);
 			ac->regions = c->regions;
 			ac->memory = calloc(c->regions->max_region_id + 1,
 					    sizeof(ac->memory[0]));
@@ -908,11 +908,11 @@ static struct igt_drm_clients *display_clients(struct igt_drm_clients *clients)
 			continue;
 
 		ac->samples = 2; /* All what matters for display. */
-		ac->total_runtime += c->total_runtime;
-		ac->last_runtime += c->last_runtime;
+		ac->total_engine_time += c->total_engine_time;
+		ac->agg_delta_engine_time += c->agg_delta_engine_time;
 
 		for (i = 0; i <= c->engines->max_engine_id; i++)
-			ac->val[i] += c->val[i];
+			ac->delta_engine_time[i] += c->delta_engine_time[i];
 
 		for (i = 0; i <= c->regions->max_region_id; i++) {
 			ac->memory[i].total += c->memory[i].total;
@@ -946,7 +946,7 @@ static void free_display_clients(struct igt_drm_clients *clients)
 	 * or borrowed fields which we don't want the library to try and free.
 	 */
 	igt_for_each_drm_client(clients, c, tmp) {
-		free(c->val);
+		free(c->delta_engine_time);
 		free(c->memory);
 	}
 
@@ -2120,7 +2120,7 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li
 	int len;
 
 	if (output_mode == INTERACTIVE) {
-		if (filter_idle && (!c->total_runtime || c->samples < 2))
+		if (filter_idle && (!c->total_engine_time || c->samples < 2))
 			return lines;
 
 		lines++;
@@ -2161,7 +2161,7 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li
 				continue;
 			}
 
-			pct = (double)c->val[i] / period_us / 1e3 * 100;
+			pct = (double)c->delta_engine_time[i] / period_us / 1e3 * 100;
 
 			/*
 			 * Guard against possible time-drift between sampling
@@ -2235,7 +2235,7 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li
 					 iclients->classes.names[i]);
 				pops->open_struct(buf);
 
-				pct = (double)c->val[i] / period_us / 1e3 * 100;
+				pct = (double)c->delta_engine_time[i] / period_us / 1e3 * 100;
 				snprintf(buf, sizeof(buf), "%f", pct);
 				__json_add_member("busy", buf);
 
-- 
2.43.0


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

* [PATCH i-g-t v3 09/13] lib/igt_drm_clients: Move engine fields to substruct
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (7 preceding siblings ...)
  2024-05-04  6:46 ` [PATCH i-g-t v3 08/13] treewide: Rename engine busyness variables Lucas De Marchi
@ 2024-05-04  6:46 ` Lucas De Marchi
  2024-05-08 18:45   ` Umesh Nerlige Ramappa
  2024-05-04  6:46 ` [PATCH i-g-t v3 10/13] lib/igt_drm_clients: Record drm-cycles Lucas De Marchi
                   ` (9 subsequent siblings)
  18 siblings, 1 reply; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-04  6:46 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa, Tvrtko Ursulin, Lucas De Marchi

Instead of keep adding arrays, move all the arrays indexed by engine to
a substruct.

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 lib/igt_drm_clients.c | 20 +++++++++-----------
 lib/igt_drm_clients.h | 12 ++++++++----
 tools/gputop.c        |  2 +-
 tools/intel_gpu_top.c | 14 +++++++-------
 4 files changed, 25 insertions(+), 23 deletions(-)

diff --git a/lib/igt_drm_clients.c b/lib/igt_drm_clients.c
index 3f4265015..91d71a7bd 100644
--- a/lib/igt_drm_clients.c
+++ b/lib/igt_drm_clients.c
@@ -109,13 +109,14 @@ igt_drm_client_update(struct igt_drm_client *c, unsigned int pid, char *name,
 	for (i = 0; i <= c->engines->max_engine_id; i++) {
 		assert(i < ARRAY_SIZE(info->engine_time));
 
-		if (info->engine_time[i] < c->last_engine_time[i])
+		if (info->engine_time[i] < c->utilization[i].last_engine_time)
 			continue; /* It will catch up soon. */
 
 		c->total_engine_time += info->engine_time[i];
-		c->delta_engine_time[i] = info->engine_time[i] - c->last_engine_time[i];
-		c->agg_delta_engine_time += c->delta_engine_time[i];
-		c->last_engine_time[i] = info->engine_time[i];
+		c->utilization[i].delta_engine_time =
+			info->engine_time[i] - c->utilization[i].last_engine_time;
+		c->agg_delta_engine_time += c->utilization[i].delta_engine_time;
+		c->utilization[i].last_engine_time = info->engine_time[i];
 	}
 
 	/* Memory regions */
@@ -183,11 +184,9 @@ igt_drm_client_add(struct igt_drm_clients *clients,
 		c->engines->max_engine_id = i;
 	}
 
-	c->delta_engine_time = calloc(c->engines->max_engine_id + 1,
-			       sizeof(*c->delta_engine_time));
-	c->last_engine_time = calloc(c->engines->max_engine_id + 1,
-			      sizeof(*c->last_engine_time));
-	assert(c->delta_engine_time && c->last_engine_time);
+	c->utilization = calloc(c->engines->max_engine_id + 1,
+				sizeof(*c->utilization));
+	assert(c->utilization);
 
 	/* Memory regions */
 	c->regions = calloc(1, sizeof(*c->regions));
@@ -225,8 +224,7 @@ void igt_drm_client_free(struct igt_drm_client *c, bool clear)
 	}
 	free(c->engines);
 
-	free(c->delta_engine_time);
-	free(c->last_engine_time);
+	free(c->utilization);
 
 	if (c->regions) {
 		for (i = 0; i <= c->regions->max_region_id; i++)
diff --git a/lib/igt_drm_clients.h b/lib/igt_drm_clients.h
index f2ff13182..d44daa6dc 100644
--- a/lib/igt_drm_clients.h
+++ b/lib/igt_drm_clients.h
@@ -63,10 +63,14 @@ struct igt_drm_client {
 	char name[24]; /* Process name of the owning PID. */
 	char print_name[24]; /* Name without any non-printable characters. */
 	unsigned int samples; /* Count of times scanning updated this client. */
-	unsigned long total_engine_time; /* Aggregate of @agg_delta_engine_time, i.e. engine time on all engines since client start. */
-	unsigned long agg_delta_engine_time; /* Aggregate of @delta_engine_time, i.e. engine time on all engines since previous scan. */
-	unsigned long *delta_engine_time; /* Array of engine time data, relative to previous scan. */
-	uint64_t *last_engine_time; /* Array of engine time data as parsed from fdinfo. */
+
+	unsigned long total_engine_time; /* Aggregate of @utilization.agg_delta_engine_time, i.e. engine time on all engines since client start. */
+	unsigned long agg_delta_engine_time; /* Aggregate of @utilization.delta_engine_time, i.e. engine time on all engines since previous scan. */
+	struct igt_drm_client_utilization {
+		unsigned long delta_engine_time; /* Engine time data, relative to previous scan. */
+		uint64_t last_engine_time; /* Engine time data as parsed from fdinfo. */
+	} *utilization; /* Array of engine utilization */
+
 	struct drm_client_meminfo *memory; /* Array of region memory utilisation as parsed from fdinfo. */
 };
 
diff --git a/tools/gputop.c b/tools/gputop.c
index 80bc94be4..aa88a8021 100644
--- a/tools/gputop.c
+++ b/tools/gputop.c
@@ -208,7 +208,7 @@ print_client(struct igt_drm_client *c, struct igt_drm_client **prevc,
 		if (!c->engines->capacity[i])
 			continue;
 
-		pct = (double)c->delta_engine_time[i] / period_us / 1e3 * 100 /
+		pct = (double)c->utilization[i].delta_engine_time / period_us / 1e3 * 100 /
 		      c->engines->capacity[i];
 
 		/*
diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c
index 35122493c..9b65ae4eb 100644
--- a/tools/intel_gpu_top.c
+++ b/tools/intel_gpu_top.c
@@ -893,9 +893,9 @@ static struct igt_drm_clients *display_clients(struct igt_drm_clients *clients)
 			strcpy(ac->pid_str, c->pid_str);
 			strcpy(ac->print_name, c->print_name);
 			ac->engines = c->engines;
-			ac->delta_engine_time = calloc(c->engines->max_engine_id + 1,
-						sizeof(ac->delta_engine_time[0]));
-			assert(ac->delta_engine_time);
+			ac->utilization = calloc(c->engines->max_engine_id + 1,
+						 sizeof(*ac->utilization));
+			assert(ac->utilization);
 			ac->regions = c->regions;
 			ac->memory = calloc(c->regions->max_region_id + 1,
 					    sizeof(ac->memory[0]));
@@ -912,7 +912,7 @@ static struct igt_drm_clients *display_clients(struct igt_drm_clients *clients)
 		ac->agg_delta_engine_time += c->agg_delta_engine_time;
 
 		for (i = 0; i <= c->engines->max_engine_id; i++)
-			ac->delta_engine_time[i] += c->delta_engine_time[i];
+			ac->utilization[i].delta_engine_time += c->utilization[i].delta_engine_time;
 
 		for (i = 0; i <= c->regions->max_region_id; i++) {
 			ac->memory[i].total += c->memory[i].total;
@@ -946,7 +946,7 @@ static void free_display_clients(struct igt_drm_clients *clients)
 	 * or borrowed fields which we don't want the library to try and free.
 	 */
 	igt_for_each_drm_client(clients, c, tmp) {
-		free(c->delta_engine_time);
+		free(c->utilization);
 		free(c->memory);
 	}
 
@@ -2161,7 +2161,7 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li
 				continue;
 			}
 
-			pct = (double)c->delta_engine_time[i] / period_us / 1e3 * 100;
+			pct = (double)c->utilization[i].delta_engine_time / period_us / 1e3 * 100;
 
 			/*
 			 * Guard against possible time-drift between sampling
@@ -2235,7 +2235,7 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li
 					 iclients->classes.names[i]);
 				pops->open_struct(buf);
 
-				pct = (double)c->delta_engine_time[i] / period_us / 1e3 * 100;
+				pct = (double)c->utilization[i].delta_engine_time / period_us / 1e3 * 100;
 				snprintf(buf, sizeof(buf), "%f", pct);
 				__json_add_member("busy", buf);
 
-- 
2.43.0


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

* [PATCH i-g-t v3 10/13] lib/igt_drm_clients: Record drm-cycles
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (8 preceding siblings ...)
  2024-05-04  6:46 ` [PATCH i-g-t v3 09/13] lib/igt_drm_clients: Move engine fields to substruct Lucas De Marchi
@ 2024-05-04  6:46 ` Lucas De Marchi
  2024-05-08 18:48   ` Umesh Nerlige Ramappa
  2024-05-04  6:46 ` [PATCH i-g-t v3 11/13] lib/igt_drm_fdinfo: Parse drm-total-cycles Lucas De Marchi
                   ` (8 subsequent siblings)
  18 siblings, 1 reply; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-04  6:46 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa, Tvrtko Ursulin, Lucas De Marchi

Record drm-cycles and delta between 2 sample updates, just like done
with engine time. This also duplicates the utilization_mask so it's
available to the next layer.

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 lib/igt_drm_clients.c | 30 ++++++++++++++++++++++--------
 lib/igt_drm_clients.h | 10 ++++++++++
 2 files changed, 32 insertions(+), 8 deletions(-)

diff --git a/lib/igt_drm_clients.c b/lib/igt_drm_clients.c
index 91d71a7bd..fbbb763f7 100644
--- a/lib/igt_drm_clients.c
+++ b/lib/igt_drm_clients.c
@@ -105,18 +105,32 @@ igt_drm_client_update(struct igt_drm_client *c, unsigned int pid, char *name,
 
 	c->agg_delta_engine_time = 0;
 	c->total_engine_time = 0;
+	c->agg_delta_cycles = 0;
+	c->total_cycles = 0;
 
 	for (i = 0; i <= c->engines->max_engine_id; i++) {
 		assert(i < ARRAY_SIZE(info->engine_time));
+		assert(i < ARRAY_SIZE(info->cycles));
+
+		if (info->utilization_mask & DRM_FDINFO_UTILIZATION_ENGINE_TIME &&
+		    info->engine_time[i] >= c->utilization[i].last_engine_time) {
+			c->utilization_mask |= IGT_DRM_CLIENT_UTILIZATION_ENGINE_TIME;
+			c->total_engine_time += info->engine_time[i];
+			c->utilization[i].delta_engine_time =
+				info->engine_time[i] - c->utilization[i].last_engine_time;
+			c->agg_delta_engine_time += c->utilization[i].delta_engine_time;
+			c->utilization[i].last_engine_time = info->engine_time[i];
+		}
 
-		if (info->engine_time[i] < c->utilization[i].last_engine_time)
-			continue; /* It will catch up soon. */
-
-		c->total_engine_time += info->engine_time[i];
-		c->utilization[i].delta_engine_time =
-			info->engine_time[i] - c->utilization[i].last_engine_time;
-		c->agg_delta_engine_time += c->utilization[i].delta_engine_time;
-		c->utilization[i].last_engine_time = info->engine_time[i];
+		if (info->utilization_mask & DRM_FDINFO_UTILIZATION_CYCLES &&
+		    info->cycles[i] >= c->utilization[i].last_cycles) {
+			c->utilization_mask |= IGT_DRM_CLIENT_UTILIZATION_CYCLES;
+			c->total_cycles += info->cycles[i];
+			c->utilization[i].delta_cycles =
+				info->cycles[i] - c->utilization[i].last_cycles;
+			c->agg_delta_cycles += c->utilization[i].delta_cycles;
+			c->utilization[i].last_cycles = info->cycles[i];
+		}
 	}
 
 	/* Memory regions */
diff --git a/lib/igt_drm_clients.h b/lib/igt_drm_clients.h
index d44daa6dc..514c09e71 100644
--- a/lib/igt_drm_clients.h
+++ b/lib/igt_drm_clients.h
@@ -33,6 +33,11 @@ enum igt_drm_client_status {
 	IGT_DRM_CLIENT_PROBE
 };
 
+enum igt_drm_client_utilization_type {
+	IGT_DRM_CLIENT_UTILIZATION_ENGINE_TIME	= 1U << 0,
+	IGT_DRM_CLIENT_UTILIZATION_CYCLES	= 1U << 1,
+};
+
 struct igt_drm_client_engines {
 	unsigned int num_engines; /* Number of discovered active engines. */
 	unsigned int max_engine_id; /* Largest engine index discovered.
@@ -64,11 +69,16 @@ struct igt_drm_client {
 	char print_name[24]; /* Name without any non-printable characters. */
 	unsigned int samples; /* Count of times scanning updated this client. */
 
+	uint32_t utilization_mask; /* mask of enum igt_drm_client_utilization_type */
 	unsigned long total_engine_time; /* Aggregate of @utilization.agg_delta_engine_time, i.e. engine time on all engines since client start. */
 	unsigned long agg_delta_engine_time; /* Aggregate of @utilization.delta_engine_time, i.e. engine time on all engines since previous scan. */
+	unsigned long total_cycles; /* Aggregate of @utilization.agg_delta_cycles, i.e. engine time on all engines since client start. */
+	unsigned long agg_delta_cycles; /* Aggregate of @utilization.delta_cycles, i.e. engine time on all engines since previous scan. */
 	struct igt_drm_client_utilization {
 		unsigned long delta_engine_time; /* Engine time data, relative to previous scan. */
+		unsigned long delta_cycles; /* Engine cycles data, relative to previous scan. */
 		uint64_t last_engine_time; /* Engine time data as parsed from fdinfo. */
+		uint64_t last_cycles; /* Engine cycles data as parsed from fdinfo. */
 	} *utilization; /* Array of engine utilization */
 
 	struct drm_client_meminfo *memory; /* Array of region memory utilisation as parsed from fdinfo. */
-- 
2.43.0


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

* [PATCH i-g-t v3 11/13] lib/igt_drm_fdinfo: Parse drm-total-cycles
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (9 preceding siblings ...)
  2024-05-04  6:46 ` [PATCH i-g-t v3 10/13] lib/igt_drm_clients: Record drm-cycles Lucas De Marchi
@ 2024-05-04  6:46 ` Lucas De Marchi
  2024-05-08 18:49   ` Umesh Nerlige Ramappa
  2024-05-04  6:46 ` [PATCH i-g-t v3 12/13] lib/igt_drm_clients: Record total cycles Lucas De Marchi
                   ` (7 subsequent siblings)
  18 siblings, 1 reply; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-04  6:46 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa, Tvrtko Ursulin, Lucas De Marchi

Parse drm-total-cycles and annotate what are the possible engine
utilization types that can be used. Currently there are 2 possible ways
to calculate utilization:

1) via drm-engine, that uses the time and derive the utilization by
   comparing to the CPU time
2) via drm-cycles + drm-total-cycles, that uses the GPU time

igt_drm_fdinfo just marks the presence of the keys, letting the caller
decide which method to use.

It is assumed that if any drm-engine, drm-cycles or drm-total-cycles is
available, it's available for all engines with non-zero utilization.

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 lib/igt_drm_fdinfo.c | 4 ++++
 lib/igt_drm_fdinfo.h | 3 +++
 2 files changed, 7 insertions(+)

diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
index 9deeadd4e..f45d0440e 100644
--- a/lib/igt_drm_fdinfo.c
+++ b/lib/igt_drm_fdinfo.c
@@ -265,6 +265,10 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
 			idx = parse_engine(l + keylen, info,
 					   name_map, map_entries, &val);
 			UPDATE_ENGINE(idx, cycles, val, DRM_FDINFO_UTILIZATION_CYCLES);
+		} else if (strstartswith(l, "drm-total-cycles-", &keylen)) {
+			idx = parse_engine(l + keylen, info,
+					   name_map, map_entries, &val);
+			UPDATE_ENGINE(idx, total_cycles, val, DRM_FDINFO_UTILIZATION_TOTAL_CYCLES);
 		} else if (strstartswith(l, "drm-total-", &keylen)) {
 			idx = parse_region(l + keylen, info,
 					   region_map, region_entries, &val);
diff --git a/lib/igt_drm_fdinfo.h b/lib/igt_drm_fdinfo.h
index ea90edd79..35f43305b 100644
--- a/lib/igt_drm_fdinfo.h
+++ b/lib/igt_drm_fdinfo.h
@@ -44,6 +44,7 @@ struct drm_client_meminfo {
 enum drm_fdinfo_utilization {
 	DRM_FDINFO_UTILIZATION_ENGINE_TIME	= 1U << 0,
 	DRM_FDINFO_UTILIZATION_CYCLES		= 1U << 1,
+	DRM_FDINFO_UTILIZATION_TOTAL_CYCLES	= 1U << 2,
 };
 
 struct drm_client_fdinfo {
@@ -63,6 +64,8 @@ struct drm_client_fdinfo {
 	uint64_t engine_time[DRM_CLIENT_FDINFO_MAX_ENGINES];
 	/* drm-cycles-<engine> values */
 	uint64_t cycles[DRM_CLIENT_FDINFO_MAX_ENGINES];
+	/* drm-total-cycles-<engine> values */
+	uint64_t total_cycles[DRM_CLIENT_FDINFO_MAX_ENGINES];
 
 	unsigned int num_regions;
 	unsigned int last_region_index;
-- 
2.43.0


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

* [PATCH i-g-t v3 12/13] lib/igt_drm_clients: Record total cycles
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (10 preceding siblings ...)
  2024-05-04  6:46 ` [PATCH i-g-t v3 11/13] lib/igt_drm_fdinfo: Parse drm-total-cycles Lucas De Marchi
@ 2024-05-04  6:46 ` Lucas De Marchi
  2024-05-08 19:01   ` Umesh Nerlige Ramappa
  2024-05-04  6:46 ` [PATCH i-g-t v3 13/13] gputop: Add support to drm-cycles/drm-total-cycles Lucas De Marchi
                   ` (6 subsequent siblings)
  18 siblings, 1 reply; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-04  6:46 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa, Tvrtko Ursulin, Lucas De Marchi

If the fdinfo data indicates there's drm-total-cycles, use it to
propagate the engine utilization. Also add an assert in intel_gpu_top
since it only knows how to deal with with engine time busyness.

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 lib/igt_drm_clients.c | 13 +++++++++++++
 lib/igt_drm_clients.h |  5 +++++
 2 files changed, 18 insertions(+)

diff --git a/lib/igt_drm_clients.c b/lib/igt_drm_clients.c
index fbbb763f7..105c7d298 100644
--- a/lib/igt_drm_clients.c
+++ b/lib/igt_drm_clients.c
@@ -107,10 +107,13 @@ igt_drm_client_update(struct igt_drm_client *c, unsigned int pid, char *name,
 	c->total_engine_time = 0;
 	c->agg_delta_cycles = 0;
 	c->total_cycles = 0;
+	c->agg_delta_total_cycles = 0;
+	c->total_total_cycles = 0;
 
 	for (i = 0; i <= c->engines->max_engine_id; i++) {
 		assert(i < ARRAY_SIZE(info->engine_time));
 		assert(i < ARRAY_SIZE(info->cycles));
+		assert(i < ARRAY_SIZE(info->total_cycles));
 
 		if (info->utilization_mask & DRM_FDINFO_UTILIZATION_ENGINE_TIME &&
 		    info->engine_time[i] >= c->utilization[i].last_engine_time) {
@@ -131,6 +134,16 @@ igt_drm_client_update(struct igt_drm_client *c, unsigned int pid, char *name,
 			c->agg_delta_cycles += c->utilization[i].delta_cycles;
 			c->utilization[i].last_cycles = info->cycles[i];
 		}
+
+		if (info->utilization_mask & DRM_FDINFO_UTILIZATION_CYCLES &&
+		    info->total_cycles[i] >= c->utilization[i].last_total_cycles) {
+			c->utilization_mask |= IGT_DRM_CLIENT_UTILIZATION_TOTAL_CYCLES;
+			c->total_total_cycles += info->total_cycles[i];
+			c->utilization[i].delta_total_cycles =
+				info->total_cycles[i] - c->utilization[i].last_total_cycles;
+			c->agg_delta_total_cycles += c->utilization[i].delta_total_cycles;
+			c->utilization[i].last_total_cycles = info->total_cycles[i];
+		}
 	}
 
 	/* Memory regions */
diff --git a/lib/igt_drm_clients.h b/lib/igt_drm_clients.h
index 514c09e71..946d709de 100644
--- a/lib/igt_drm_clients.h
+++ b/lib/igt_drm_clients.h
@@ -36,6 +36,7 @@ enum igt_drm_client_status {
 enum igt_drm_client_utilization_type {
 	IGT_DRM_CLIENT_UTILIZATION_ENGINE_TIME	= 1U << 0,
 	IGT_DRM_CLIENT_UTILIZATION_CYCLES	= 1U << 1,
+	IGT_DRM_CLIENT_UTILIZATION_TOTAL_CYCLES	= 1U << 2,
 };
 
 struct igt_drm_client_engines {
@@ -74,11 +75,15 @@ struct igt_drm_client {
 	unsigned long agg_delta_engine_time; /* Aggregate of @utilization.delta_engine_time, i.e. engine time on all engines since previous scan. */
 	unsigned long total_cycles; /* Aggregate of @utilization.agg_delta_cycles, i.e. engine time on all engines since client start. */
 	unsigned long agg_delta_cycles; /* Aggregate of @utilization.delta_cycles, i.e. engine time on all engines since previous scan. */
+	unsigned long total_total_cycles; /* Aggregate of @utilization.agg_delta_total_cycles, i.e. engine time on all engines since client start. */
+	unsigned long agg_delta_total_cycles; /* Aggregate of @utilization.delta_total_cycles, i.e. engine time on all engines since previous scan. */
 	struct igt_drm_client_utilization {
 		unsigned long delta_engine_time; /* Engine time data, relative to previous scan. */
 		unsigned long delta_cycles; /* Engine cycles data, relative to previous scan. */
+		unsigned long delta_total_cycles; /* Engine total cycles data, relative to previous scan. */
 		uint64_t last_engine_time; /* Engine time data as parsed from fdinfo. */
 		uint64_t last_cycles; /* Engine cycles data as parsed from fdinfo. */
+		uint64_t last_total_cycles; /* Engine total cycles data as parsed from fdinfo. */
 	} *utilization; /* Array of engine utilization */
 
 	struct drm_client_meminfo *memory; /* Array of region memory utilisation as parsed from fdinfo. */
-- 
2.43.0


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

* [PATCH i-g-t v3 13/13] gputop: Add support to drm-cycles/drm-total-cycles
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (11 preceding siblings ...)
  2024-05-04  6:46 ` [PATCH i-g-t v3 12/13] lib/igt_drm_clients: Record total cycles Lucas De Marchi
@ 2024-05-04  6:46 ` Lucas De Marchi
  2024-05-08 19:11   ` Umesh Nerlige Ramappa
  2024-05-04  7:31 ` ✓ Fi.CI.BAT: success for gputop: Add support for xe (rev4) Patchwork
                   ` (5 subsequent siblings)
  18 siblings, 1 reply; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-04  6:46 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa, Tvrtko Ursulin, Lucas De Marchi

Add support for using only GPU timestamps to calculate the utilization.
It uses drm-cycles and drm-total-cycles read from fdinfo. For any
2 samples, the utilization is calculated as:

	         u[i+1] - u[i]
	pct  = -----------------
	        Gt[i+1] - Gt[i]

with u == drm-cycles and Gt == drm-total-cycles.

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

diff --git a/tools/gputop.c b/tools/gputop.c
index aa88a8021..11e0db482 100644
--- a/tools/gputop.c
+++ b/tools/gputop.c
@@ -30,6 +30,11 @@
 #include "igt_drm_fdinfo.h"
 #include "drmtest.h"
 
+enum utilization_type {
+	UTILIZATION_TYPE_ENGINE_TIME,
+	UTILIZATION_TYPE_TOTAL_CYCLES,
+};
+
 static const char *bars[] = { " ", "▏", "▎", "▍", "▌", "▋", "▊", "▉", "█" };
 
 static void n_spaces(const unsigned int n)
@@ -171,13 +176,33 @@ print_client(struct igt_drm_client *c, struct igt_drm_client **prevc,
 	     double t, int lines, int con_w, int con_h,
 	     unsigned int period_us, int *engine_w)
 {
+	enum utilization_type utilization_type;
 	unsigned int i;
 	uint64_t sz;
 	int len;
 
+	if (c->utilization_mask & IGT_DRM_CLIENT_UTILIZATION_TOTAL_CYCLES &&
+	    c->utilization_mask & IGT_DRM_CLIENT_UTILIZATION_CYCLES)
+		utilization_type = UTILIZATION_TYPE_TOTAL_CYCLES;
+	else if (c->utilization_mask & IGT_DRM_CLIENT_UTILIZATION_ENGINE_TIME)
+		utilization_type = UTILIZATION_TYPE_ENGINE_TIME;
+	else
+		return 0;
+
+	if (c->samples < 2)
+		return 0;
+
 	/* Filter out idle clients. */
-	if (!c->total_engine_time || c->samples < 2)
-		return lines;
+	switch (utilization_type) {
+	case UTILIZATION_TYPE_ENGINE_TIME:
+	       if (!c->total_engine_time)
+		       return 0;
+	       break;
+	case UTILIZATION_TYPE_TOTAL_CYCLES:
+	       if (!c->total_total_cycles)
+		       return 0;
+	       break;
+	}
 
 	/* Print header when moving to a different DRM card. */
 	if (newheader(c, *prevc)) {
@@ -208,8 +233,16 @@ print_client(struct igt_drm_client *c, struct igt_drm_client **prevc,
 		if (!c->engines->capacity[i])
 			continue;
 
-		pct = (double)c->utilization[i].delta_engine_time / period_us / 1e3 * 100 /
-		      c->engines->capacity[i];
+		switch (utilization_type) {
+		case UTILIZATION_TYPE_ENGINE_TIME:
+			pct = (double)c->utilization[i].delta_engine_time / period_us / 1e3 * 100 /
+				c->engines->capacity[i];
+			break;
+		case UTILIZATION_TYPE_TOTAL_CYCLES:
+			pct = (double)c->utilization[i].delta_cycles / c->utilization[i].delta_total_cycles * 100 /
+				c->engines->capacity[i];
+			break;
+		}
 
 		/*
 		 * Guard against fluctuations between our scanning period and
-- 
2.43.0


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

* ✓ Fi.CI.BAT: success for gputop: Add support for xe (rev4)
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (12 preceding siblings ...)
  2024-05-04  6:46 ` [PATCH i-g-t v3 13/13] gputop: Add support to drm-cycles/drm-total-cycles Lucas De Marchi
@ 2024-05-04  7:31 ` Patchwork
  2024-05-04  7:36 ` ✓ CI.xeBAT: " Patchwork
                   ` (4 subsequent siblings)
  18 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2024-05-04  7:31 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev

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

== Series Details ==

Series: gputop: Add support for xe (rev4)
URL   : https://patchwork.freedesktop.org/series/132059/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_14710 -> IGTPW_11100
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (41 -> 37)
------------------------------

  Additional (1): bat-dg2-11 
  Missing    (5): bat-kbl-2 bat-mtlp-9 fi-snb-2520m fi-elk-e7500 fi-kbl-8809g 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_mmap@basic:
    - bat-dg2-11:         NOTRUN -> [SKIP][1] ([i915#4083])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-11/igt@gem_mmap@basic.html

  * igt@gem_tiled_fence_blits@basic:
    - bat-dg2-11:         NOTRUN -> [SKIP][2] ([i915#4077]) +2 other tests skip
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-11/igt@gem_tiled_fence_blits@basic.html

  * igt@gem_tiled_pread_basic:
    - bat-dg2-11:         NOTRUN -> [SKIP][3] ([i915#4079]) +1 other test skip
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-11/igt@gem_tiled_pread_basic.html

  * igt@i915_pm_rps@basic-api:
    - bat-dg2-11:         NOTRUN -> [SKIP][4] ([i915#6621])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-11/igt@i915_pm_rps@basic-api.html

  * igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy:
    - bat-dg2-11:         NOTRUN -> [SKIP][5] ([i915#4212]) +7 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-11/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-dg2-11:         NOTRUN -> [SKIP][6] ([i915#5190])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-11/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - bat-dg2-11:         NOTRUN -> [SKIP][7] ([i915#4215] / [i915#5190])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-11/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - bat-dg2-11:         NOTRUN -> [SKIP][8] ([i915#4103] / [i915#4213]) +1 other test skip
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-11/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_dsc@dsc-basic:
    - bat-dg2-11:         NOTRUN -> [SKIP][9] ([i915#3555] / [i915#3840])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-11/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@force-load-detect:
    - bat-dg2-11:         NOTRUN -> [SKIP][10]
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-11/igt@kms_force_connector_basic@force-load-detect.html

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

  * igt@kms_pm_backlight@basic-brightness:
    - bat-dg2-11:         NOTRUN -> [SKIP][12] ([i915#5354])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-11/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_psr@psr-sprite-plane-onoff:
    - bat-dg2-11:         NOTRUN -> [SKIP][13] ([i915#1072] / [i915#9732]) +3 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-11/igt@kms_psr@psr-sprite-plane-onoff.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-dg2-11:         NOTRUN -> [SKIP][14] ([i915#3555])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-11/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-flip:
    - bat-dg2-11:         NOTRUN -> [SKIP][15] ([i915#3708])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-11/igt@prime_vgem@basic-fence-flip.html

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

  * igt@prime_vgem@basic-read:
    - bat-dg2-11:         NOTRUN -> [SKIP][17] ([i915#3291] / [i915#3708]) +2 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-11/igt@prime_vgem@basic-read.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@execlists:
    - fi-bsw-n3050:       [ABORT][18] ([i915#10800]) -> [PASS][19]
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/fi-bsw-n3050/igt@i915_selftest@live@execlists.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/fi-bsw-n3050/igt@i915_selftest@live@execlists.html

  * igt@i915_selftest@live@workarounds:
    - bat-dg2-9:          [DMESG-FAIL][20] ([i915#9500]) -> [PASS][21]
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/bat-dg2-9/igt@i915_selftest@live@workarounds.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/bat-dg2-9/igt@i915_selftest@live@workarounds.html

  
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#10800]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10800
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5274
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#9500]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9500
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7832 -> IGTPW_11100

  CI-20190529: 20190529
  CI_DRM_14710: ca96a1c62451ea534391d1eafe3a0b5691658c02 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_11100: ff4d40e958c3c934eaa4434973196527ffffa077 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_7832: f4a19f8c3a506c6ef7241e80ed966230d18acb03 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* ✓ CI.xeBAT: success for gputop: Add support for xe (rev4)
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (13 preceding siblings ...)
  2024-05-04  7:31 ` ✓ Fi.CI.BAT: success for gputop: Add support for xe (rev4) Patchwork
@ 2024-05-04  7:36 ` Patchwork
  2024-05-04  8:33 ` ✗ CI.xeFULL: failure " Patchwork
                   ` (3 subsequent siblings)
  18 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2024-05-04  7:36 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev

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

== Series Details ==

Series: gputop: Add support for xe (rev4)
URL   : https://patchwork.freedesktop.org/series/132059/
State : success

== Summary ==

CI Bug Log - changes from XEIGT_7832_BAT -> XEIGTPW_11100_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

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

  Additional (4): bat-pvc-2 bat-dg2-oem2 bat-adlp-7 bat-atsm-2 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_addfb_basic@addfb25-x-tiled-legacy:
    - bat-pvc-2:          NOTRUN -> [SKIP][1] ([i915#6077]) +30 other tests skip
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][2] ([Intel XE#623])
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-dg2-oem2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@invalid-set-prop-any:
    - bat-atsm-2:         NOTRUN -> [SKIP][3] ([i915#6077]) +30 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-atsm-2/igt@kms_addfb_basic@invalid-set-prop-any.html

  * igt@kms_cursor_legacy@basic-flip-after-cursor-atomic:
    - bat-pvc-2:          NOTRUN -> [SKIP][4] ([Intel XE#1024] / [Intel XE#782]) +5 other tests skip
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-flip-before-cursor-legacy:
    - bat-atsm-2:         NOTRUN -> [SKIP][5] ([Intel XE#1024] / [Intel XE#782]) +5 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-atsm-2/igt@kms_cursor_legacy@basic-flip-before-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-atsm-2:         NOTRUN -> [SKIP][6] ([Intel XE#1024] / [Intel XE#784])
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-atsm-2/igt@kms_dsc@dsc-basic.html
    - bat-pvc-2:          NOTRUN -> [SKIP][7] ([Intel XE#1024] / [Intel XE#784])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@kms_dsc@dsc-basic.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][8] ([Intel XE#455])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-dg2-oem2/igt@kms_dsc@dsc-basic.html
    - bat-adlp-7:         NOTRUN -> [SKIP][9] ([Intel XE#455])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-adlp-7/igt@kms_dsc@dsc-basic.html

  * igt@kms_flip@basic-flip-vs-dpms:
    - bat-pvc-2:          NOTRUN -> [SKIP][10] ([Intel XE#1024] / [Intel XE#947]) +3 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@kms_flip@basic-flip-vs-dpms.html

  * igt@kms_flip@basic-flip-vs-modeset:
    - bat-atsm-2:         NOTRUN -> [SKIP][11] ([Intel XE#1024] / [Intel XE#947]) +3 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-atsm-2/igt@kms_flip@basic-flip-vs-modeset.html

  * igt@kms_force_connector_basic@force-connector-state:
    - bat-pvc-2:          NOTRUN -> [SKIP][12] ([Intel XE#540]) +3 other tests skip
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@kms_force_connector_basic@force-connector-state.html
    - bat-atsm-2:         NOTRUN -> [SKIP][13] ([Intel XE#540]) +3 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-atsm-2/igt@kms_force_connector_basic@force-connector-state.html

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

  * igt@kms_frontbuffer_tracking@basic:
    - bat-pvc-2:          NOTRUN -> [SKIP][15] ([Intel XE#1024] / [Intel XE#783])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@kms_frontbuffer_tracking@basic.html
    - bat-adlp-7:         NOTRUN -> [FAIL][16] ([Intel XE#616])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-adlp-7/igt@kms_frontbuffer_tracking@basic.html
    - bat-atsm-2:         NOTRUN -> [SKIP][17] ([Intel XE#1024] / [Intel XE#783])
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-atsm-2/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24:
    - bat-atsm-2:         NOTRUN -> [SKIP][18] ([i915#1836]) +6 other tests skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-atsm-2/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
    - bat-pvc-2:          NOTRUN -> [SKIP][19] ([Intel XE#829]) +6 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html

  * igt@kms_prop_blob@basic:
    - bat-pvc-2:          NOTRUN -> [SKIP][20] ([Intel XE#780])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@kms_prop_blob@basic.html
    - bat-atsm-2:         NOTRUN -> [SKIP][21] ([Intel XE#780])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-atsm-2/igt@kms_prop_blob@basic.html

  * igt@kms_psr@psr-cursor-plane-move:
    - bat-pvc-2:          NOTRUN -> [SKIP][22] ([Intel XE#1024]) +2 other tests skip
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@kms_psr@psr-cursor-plane-move.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][23] ([Intel XE#929]) +2 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-dg2-oem2/igt@kms_psr@psr-cursor-plane-move.html

  * igt@kms_psr@psr-primary-page-flip:
    - bat-atsm-2:         NOTRUN -> [SKIP][24] ([Intel XE#1024]) +2 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-atsm-2/igt@kms_psr@psr-primary-page-flip.html

  * igt@xe_evict@evict-beng-small-external:
    - bat-pvc-2:          NOTRUN -> [FAIL][25] ([Intel XE#1000]) +3 other tests fail
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@xe_evict@evict-beng-small-external.html
    - bat-adlp-7:         NOTRUN -> [SKIP][26] ([Intel XE#261] / [Intel XE#688]) +15 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-adlp-7/igt@xe_evict@evict-beng-small-external.html

  * igt@xe_evict@evict-small-cm:
    - bat-pvc-2:          NOTRUN -> [DMESG-FAIL][27] ([Intel XE#482]) +3 other tests dmesg-fail
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@xe_evict@evict-small-cm.html

  * igt@xe_evict_ccs@evict-overcommit-simple:
    - bat-adlp-7:         NOTRUN -> [SKIP][28] ([Intel XE#688]) +1 other test skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-adlp-7/igt@xe_evict_ccs@evict-overcommit-simple.html

  * igt@xe_exec_fault_mode@many-basic:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][29] ([Intel XE#288]) +32 other tests skip
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-dg2-oem2/igt@xe_exec_fault_mode@many-basic.html

  * igt@xe_exec_fault_mode@twice-userptr:
    - bat-adlp-7:         NOTRUN -> [SKIP][30] ([Intel XE#288]) +32 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-adlp-7/igt@xe_exec_fault_mode@twice-userptr.html

  * igt@xe_exec_fault_mode@twice-userptr-invalidate-imm:
    - bat-atsm-2:         NOTRUN -> [SKIP][31] ([Intel XE#288]) +32 other tests skip
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-atsm-2/igt@xe_exec_fault_mode@twice-userptr-invalidate-imm.html

  * igt@xe_gt_freq@freq_range_idle:
    - bat-pvc-2:          NOTRUN -> [SKIP][32] ([Intel XE#1021]) +1 other test skip
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@xe_gt_freq@freq_range_idle.html

  * igt@xe_huc_copy@huc_copy:
    - bat-pvc-2:          NOTRUN -> [SKIP][33] ([Intel XE#255])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@xe_huc_copy@huc_copy.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][34] ([Intel XE#255])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-dg2-oem2/igt@xe_huc_copy@huc_copy.html
    - bat-atsm-2:         NOTRUN -> [SKIP][35] ([Intel XE#255])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-atsm-2/igt@xe_huc_copy@huc_copy.html

  * igt@xe_intel_bb@render:
    - bat-pvc-2:          NOTRUN -> [SKIP][36] ([Intel XE#532])
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@xe_intel_bb@render.html

  * igt@xe_mmap@vram:
    - bat-adlp-7:         NOTRUN -> [SKIP][37] ([Intel XE#1008])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-adlp-7/igt@xe_mmap@vram.html

  * igt@xe_pat@pat-index-xe2:
    - bat-pvc-2:          NOTRUN -> [SKIP][38] ([Intel XE#977]) +1 other test skip
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@xe_pat@pat-index-xe2.html
    - bat-adlp-7:         NOTRUN -> [SKIP][39] ([Intel XE#977])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-adlp-7/igt@xe_pat@pat-index-xe2.html
    - bat-atsm-2:         NOTRUN -> [SKIP][40] ([Intel XE#977])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-atsm-2/igt@xe_pat@pat-index-xe2.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][41] ([Intel XE#977])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-dg2-oem2/igt@xe_pat@pat-index-xe2.html

  * igt@xe_pat@pat-index-xehpc:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][42] ([Intel XE#979]) +1 other test skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-dg2-oem2/igt@xe_pat@pat-index-xehpc.html
    - bat-adlp-7:         NOTRUN -> [SKIP][43] ([Intel XE#979]) +1 other test skip
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-adlp-7/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pat@pat-index-xehpc@render:
    - bat-pvc-2:          NOTRUN -> [SKIP][44] ([Intel XE#976])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@xe_pat@pat-index-xehpc@render.html

  * igt@xe_pat@pat-index-xelpg:
    - bat-atsm-2:         NOTRUN -> [SKIP][45] ([Intel XE#979]) +1 other test skip
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-atsm-2/igt@xe_pat@pat-index-xelpg.html
    - bat-pvc-2:          NOTRUN -> [SKIP][46] ([Intel XE#979])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_pm_residency@gt-c6-on-idle:
    - bat-pvc-2:          NOTRUN -> [SKIP][47] ([Intel XE#531])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/bat-pvc-2/igt@xe_pm_residency@gt-c6-on-idle.html

  
  [Intel XE#1000]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1000
  [Intel XE#1008]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1008
  [Intel XE#1021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1021
  [Intel XE#1024]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1024
  [Intel XE#255]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/255
  [Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/482
  [Intel XE#531]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/531
  [Intel XE#532]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/532
  [Intel XE#540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/540
  [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
  [Intel XE#623]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/623
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#780]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/780
  [Intel XE#782]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/782
  [Intel XE#783]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/783
  [Intel XE#784]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/784
  [Intel XE#829]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/829
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#947]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/947
  [Intel XE#976]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/976
  [Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979
  [i915#1836]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1836
  [i915#5274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5274
  [i915#6077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6077


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

  * IGT: IGT_7832 -> IGTPW_11100
  * Linux: xe-1235-3bc655eb4a31c9a89cccac484e09112f73414b29 -> xe-1238-ca96a1c62451ea534391d1eafe3a0b5691658c02

  IGTPW_11100: ff4d40e958c3c934eaa4434973196527ffffa077 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_7832: f4a19f8c3a506c6ef7241e80ed966230d18acb03 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1235-3bc655eb4a31c9a89cccac484e09112f73414b29: 3bc655eb4a31c9a89cccac484e09112f73414b29
  xe-1238-ca96a1c62451ea534391d1eafe3a0b5691658c02: ca96a1c62451ea534391d1eafe3a0b5691658c02

== Logs ==

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

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

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

* ✗ CI.xeFULL: failure for gputop: Add support for xe (rev4)
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (14 preceding siblings ...)
  2024-05-04  7:36 ` ✓ CI.xeBAT: " Patchwork
@ 2024-05-04  8:33 ` Patchwork
  2024-05-04 12:50 ` ✗ Fi.CI.IGT: " Patchwork
                   ` (2 subsequent siblings)
  18 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2024-05-04  8:33 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev

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

== Series Details ==

Series: gputop: Add support for xe (rev4)
URL   : https://patchwork.freedesktop.org/series/132059/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_7832_full -> XEIGTPW_11100_full
====================================================

Summary
-------

  **FAILURE**

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

  

Participating hosts (3 -> 1)
------------------------------

  ERROR: It appears as if the changes made in XEIGTPW_11100_full prevented too many machines from booting.

  Missing    (2): shard-adlp shard-lnl 

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

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

### IGT changes ###

#### Warnings ####

  * igt@xe_pm@s4-exec-after:
    - shard-dg2-set2:     [FAIL][1] ([Intel XE#1043] / [Intel XE#845]) -> [DMESG-FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-433/igt@xe_pm@s4-exec-after.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-436/igt@xe_pm@s4-exec-after.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
    - shard-dg2-set2:     [PASS][3] -> [SKIP][4] ([Intel XE#1201] / [i915#6077]) +1 other test skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-466/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html

  * igt@kms_async_flips@invalid-async-flip:
    - shard-dg2-set2:     NOTRUN -> [SKIP][5] ([Intel XE#1201] / [Intel XE#873])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-464/igt@kms_async_flips@invalid-async-flip.html

  * igt@kms_big_fb@linear-16bpp-rotate-0:
    - shard-dg2-set2:     [PASS][6] -> [SKIP][7] ([Intel XE#1201] / [Intel XE#829]) +1 other test skip
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-464/igt@kms_big_fb@linear-16bpp-rotate-0.html
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_big_fb@linear-16bpp-rotate-0.html

  * igt@kms_big_fb@x-tiled-8bpp-rotate-270:
    - shard-dg2-set2:     NOTRUN -> [SKIP][8] ([Intel XE#1201] / [Intel XE#316]) +3 other tests skip
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-434/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-64bpp-rotate-180:
    - shard-dg2-set2:     NOTRUN -> [SKIP][9] ([Intel XE#1124] / [Intel XE#1201]) +7 other tests skip
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-435/igt@kms_big_fb@yf-tiled-64bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-addfb:
    - shard-dg2-set2:     NOTRUN -> [SKIP][10] ([Intel XE#1201] / [Intel XE#619])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-436/igt@kms_big_fb@yf-tiled-addfb.html

  * igt@kms_bw@linear-tiling-1-displays-2160x1440p:
    - shard-dg2-set2:     NOTRUN -> [SKIP][11] ([Intel XE#1201] / [Intel XE#367]) +1 other test skip
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_bw@linear-tiling-1-displays-2160x1440p.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][12] ([Intel XE#1201] / [Intel XE#829]) +1 other test skip
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-7:
    - shard-dg2-set2:     NOTRUN -> [SKIP][13] ([Intel XE#1201] / [Intel XE#787]) +105 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-464/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-7.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc@pipe-c-dp-4:
    - shard-dg2-set2:     NOTRUN -> [FAIL][14] ([Intel XE#616]) +4 other tests fail
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc@pipe-c-dp-4.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-xe2-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][15] ([Intel XE#1201] / [Intel XE#1252])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-466/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-xe2-ccs.html

  * igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][16] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +31 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-434/igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs@pipe-d-dp-4.html

  * igt@kms_cdclk@mode-transition@pipe-c-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][17] ([Intel XE#1201] / [Intel XE#314]) +3 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-463/igt@kms_cdclk@mode-transition@pipe-c-dp-4.html

  * igt@kms_cdclk@plane-scaling@pipe-b-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][18] ([Intel XE#1152] / [Intel XE#1201]) +3 other tests skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_cdclk@plane-scaling@pipe-b-dp-4.html

  * igt@kms_chamelium_color@ctm-limited-range:
    - shard-dg2-set2:     NOTRUN -> [SKIP][19] ([Intel XE#1201] / [Intel XE#306])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_chamelium_color@ctm-limited-range.html

  * igt@kms_chamelium_frames@hdmi-crc-multiple:
    - shard-dg2-set2:     NOTRUN -> [SKIP][20] ([Intel XE#1201] / [Intel XE#373]) +7 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-436/igt@kms_chamelium_frames@hdmi-crc-multiple.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-dg2-set2:     NOTRUN -> [SKIP][21] ([Intel XE#1201] / [Intel XE#307])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-463/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_cursor_crc@cursor-onscreen-512x512:
    - shard-dg2-set2:     NOTRUN -> [SKIP][22] ([Intel XE#1201] / [Intel XE#308]) +1 other test skip
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_cursor_crc@cursor-onscreen-512x512.html

  * igt@kms_cursor_edge_walk@128x128-right-edge:
    - shard-dg2-set2:     NOTRUN -> [FAIL][23] ([Intel XE#581])
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_cursor_edge_walk@128x128-right-edge.html

  * igt@kms_cursor_edge_walk@256x256-top-edge:
    - shard-dg2-set2:     NOTRUN -> [DMESG-WARN][24] ([Intel XE#1214] / [Intel XE#282]) +7 other tests dmesg-warn
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-466/igt@kms_cursor_edge_walk@256x256-top-edge.html

  * igt@kms_cursor_edge_walk@64x64-top-edge:
    - shard-dg2-set2:     [PASS][25] -> [FAIL][26] ([Intel XE#581])
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-433/igt@kms_cursor_edge_walk@64x64-top-edge.html
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_cursor_edge_walk@64x64-top-edge.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy:
    - shard-dg2-set2:     NOTRUN -> [DMESG-WARN][27] ([Intel XE#1214] / [Intel XE#282] / [Intel XE#910])
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-434/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - shard-dg2-set2:     NOTRUN -> [SKIP][28] ([Intel XE#1201] / [Intel XE#323]) +1 other test skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-436/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic:
    - shard-dg2-set2:     [PASS][29] -> [DMESG-WARN][30] ([Intel XE#1214] / [Intel XE#282])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-464/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic.html
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-435/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic.html

  * igt@kms_cursor_legacy@torture-bo@pipe-b:
    - shard-dg2-set2:     [PASS][31] -> [DMESG-WARN][32] ([Intel XE#1214] / [Intel XE#282] / [Intel XE#877]) +1 other test dmesg-warn
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-436/igt@kms_cursor_legacy@torture-bo@pipe-b.html
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-436/igt@kms_cursor_legacy@torture-bo@pipe-b.html

  * igt@kms_feature_discovery@psr2:
    - shard-dg2-set2:     NOTRUN -> [SKIP][33] ([Intel XE#1135] / [Intel XE#1201])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_feature_discovery@psr2.html

  * igt@kms_flip@2x-flip-vs-panning-interruptible:
    - shard-dg2-set2:     [PASS][34] -> [DMESG-WARN][35] ([Intel XE#1214] / [Intel XE#877])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-466/igt@kms_flip@2x-flip-vs-panning-interruptible.html
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-463/igt@kms_flip@2x-flip-vs-panning-interruptible.html

  * igt@kms_flip@2x-flip-vs-panning-interruptible@ad-hdmi-a6-dp4:
    - shard-dg2-set2:     [PASS][36] -> [DMESG-WARN][37] ([Intel XE#1214])
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-466/igt@kms_flip@2x-flip-vs-panning-interruptible@ad-hdmi-a6-dp4.html
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-463/igt@kms_flip@2x-flip-vs-panning-interruptible@ad-hdmi-a6-dp4.html

  * igt@kms_flip@flip-vs-suspend-interruptible@b-hdmi-a7:
    - shard-dg2-set2:     NOTRUN -> [DMESG-WARN][38] ([Intel XE#1162] / [Intel XE#1214]) +13 other tests dmesg-warn
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-464/igt@kms_flip@flip-vs-suspend-interruptible@b-hdmi-a7.html

  * igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling:
    - shard-dg2-set2:     [PASS][39] -> [SKIP][40] ([Intel XE#1201] / [Intel XE#1226]) +11 other tests skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-433/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling.html
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
    - shard-dg2-set2:     NOTRUN -> [SKIP][41] ([Intel XE#1201] / [Intel XE#455]) +21 other tests skip
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-436/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-move:
    - shard-dg2-set2:     NOTRUN -> [SKIP][42] ([Intel XE#1201] / [Intel XE#651]) +21 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-434/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][43] ([Intel XE#1201] / [Intel XE#1226]) +4 other tests skip
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-dg2-set2:     [PASS][44] -> [SKIP][45] ([Intel XE#1201] / [Intel XE#1226] / [Intel XE#1234])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-434/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-wc.html
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-render:
    - shard-dg2-set2:     NOTRUN -> [SKIP][46] ([Intel XE#1201] / [Intel XE#1226] / [Intel XE#1235])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y:
    - shard-dg2-set2:     NOTRUN -> [SKIP][47] ([Intel XE#1201] / [Intel XE#658])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y.html

  * igt@kms_frontbuffer_tracking@psr-suspend:
    - shard-dg2-set2:     NOTRUN -> [SKIP][48] ([Intel XE#1201] / [Intel XE#653]) +28 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-436/igt@kms_frontbuffer_tracking@psr-suspend.html

  * igt@kms_getfb@getfb-addfb-different-handles:
    - shard-dg2-set2:     [PASS][49] -> [SKIP][50] ([Intel XE#1201] / [Intel XE#687])
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-436/igt@kms_getfb@getfb-addfb-different-handles.html
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_getfb@getfb-addfb-different-handles.html

  * igt@kms_plane@pixel-format-source-clamping:
    - shard-dg2-set2:     NOTRUN -> [FAIL][51] ([Intel XE#650]) +2 other tests fail
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-464/igt@kms_plane@pixel-format-source-clamping.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b:
    - shard-dg2-set2:     NOTRUN -> [DMESG-FAIL][52] ([Intel XE#1162]) +1 other test dmesg-fail
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-434/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-dg2-set2:     NOTRUN -> [SKIP][53] ([Intel XE#1129] / [Intel XE#1201]) +1 other test skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-435/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_psr@psr-sprite-plane-onoff:
    - shard-dg2-set2:     NOTRUN -> [SKIP][54] ([Intel XE#1201] / [Intel XE#929]) +15 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-436/igt@kms_psr@psr-sprite-plane-onoff.html

  * igt@kms_universal_plane@cursor-fb-leak:
    - shard-dg2-set2:     [PASS][55] -> [FAIL][56] ([Intel XE#771] / [Intel XE#899])
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-464/igt@kms_universal_plane@cursor-fb-leak.html
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-435/igt@kms_universal_plane@cursor-fb-leak.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [PASS][57] -> [FAIL][58] ([Intel XE#899])
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-464/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-6.html
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-435/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-6.html

  * igt@kms_writeback@writeback-fb-id:
    - shard-dg2-set2:     NOTRUN -> [SKIP][59] ([Intel XE#1201] / [Intel XE#756])
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-466/igt@kms_writeback@writeback-fb-id.html

  * igt@xe_copy_basic@mem-copy-linear-0x369:
    - shard-dg2-set2:     NOTRUN -> [SKIP][60] ([Intel XE#1123] / [Intel XE#1201])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-463/igt@xe_copy_basic@mem-copy-linear-0x369.html

  * igt@xe_evict@evict-large-multi-vm-cm:
    - shard-dg2-set2:     [PASS][61] -> [FAIL][62] ([Intel XE#1600])
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-435/igt@xe_evict@evict-large-multi-vm-cm.html
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-463/igt@xe_evict@evict-large-multi-vm-cm.html

  * igt@xe_evict@evict-mixed-many-threads-large:
    - shard-dg2-set2:     NOTRUN -> [TIMEOUT][63] ([Intel XE#1041] / [Intel XE#1473] / [Intel XE#392])
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-466/igt@xe_evict@evict-mixed-many-threads-large.html

  * igt@xe_evict@evict-threads-large:
    - shard-dg2-set2:     [PASS][64] -> [INCOMPLETE][65] ([Intel XE#1195] / [Intel XE#1473] / [Intel XE#392]) +1 other test incomplete
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-436/igt@xe_evict@evict-threads-large.html
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@xe_evict@evict-threads-large.html

  * igt@xe_exec_compute_mode@many-bindexecqueue-userptr-invalidate:
    - shard-dg2-set2:     [PASS][66] -> [FAIL][67] ([Intel XE#1069])
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-463/igt@xe_exec_compute_mode@many-bindexecqueue-userptr-invalidate.html
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-463/igt@xe_exec_compute_mode@many-bindexecqueue-userptr-invalidate.html

  * igt@xe_exec_fault_mode@once-userptr-invalidate-imm:
    - shard-dg2-set2:     NOTRUN -> [SKIP][68] ([Intel XE#1201] / [Intel XE#1562]) +1 other test skip
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-463/igt@xe_exec_fault_mode@once-userptr-invalidate-imm.html

  * igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-rebind-prefetch:
    - shard-dg2-set2:     NOTRUN -> [SKIP][69] ([Intel XE#1201] / [Intel XE#288]) +14 other tests skip
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-435/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-rebind-prefetch.html

  * igt@xe_live_ktest@xe_migrate:
    - shard-dg2-set2:     [PASS][70] -> [SKIP][71] ([Intel XE#1192] / [Intel XE#1201])
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-436/igt@xe_live_ktest@xe_migrate.html
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@xe_live_ktest@xe_migrate.html

  * igt@xe_live_ktest@xe_mocs:
    - shard-dg2-set2:     [PASS][72] -> [SKIP][73] ([Intel XE#1201])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-466/igt@xe_live_ktest@xe_mocs.html
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-464/igt@xe_live_ktest@xe_mocs.html

  * igt@xe_module_load@many-reload:
    - shard-dg2-set2:     [PASS][74] -> [DMESG-WARN][75] ([Intel XE#1162] / [Intel XE#1214]) +4 other tests dmesg-warn
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-434/igt@xe_module_load@many-reload.html
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@xe_module_load@many-reload.html

  * igt@xe_pm@s2idle-d3cold-basic-exec:
    - shard-dg2-set2:     NOTRUN -> [SKIP][76] ([Intel XE#1201] / [Intel XE#366])
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-435/igt@xe_pm@s2idle-d3cold-basic-exec.html

  * igt@xe_pm@s4-basic:
    - shard-dg2-set2:     NOTRUN -> [FAIL][77] ([Intel XE#1043] / [Intel XE#845])
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-464/igt@xe_pm@s4-basic.html

  * igt@xe_pm@vram-d3cold-threshold:
    - shard-dg2-set2:     NOTRUN -> [SKIP][78] ([Intel XE#1201] / [Intel XE#579])
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@xe_pm@vram-d3cold-threshold.html

  * igt@xe_query@multigpu-query-cs-cycles:
    - shard-dg2-set2:     NOTRUN -> [SKIP][79] ([Intel XE#1201] / [Intel XE#944]) +3 other tests skip
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@xe_query@multigpu-query-cs-cycles.html

  
#### Possible fixes ####

  * igt@kms_cursor_legacy@forked-move@pipe-b:
    - shard-dg2-set2:     [DMESG-WARN][80] ([Intel XE#1214] / [Intel XE#282]) -> [PASS][81] +7 other tests pass
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-434/igt@kms_cursor_legacy@forked-move@pipe-b.html
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-464/igt@kms_cursor_legacy@forked-move@pipe-b.html

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc:
    - shard-dg2-set2:     [SKIP][82] ([Intel XE#1201] / [Intel XE#455]) -> [PASS][83]
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-464/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-435/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html

  * igt@kms_flip@2x-flip-vs-modeset:
    - shard-dg2-set2:     [SKIP][84] ([Intel XE#1201]) -> [PASS][85] +2 other tests pass
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-436/igt@kms_flip@2x-flip-vs-modeset.html
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-464/igt@kms_flip@2x-flip-vs-modeset.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12:
    - shard-dg2-set2:     [INCOMPLETE][86] ([Intel XE#1195]) -> [PASS][87] +4 other tests pass
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-434/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12.html
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-466/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12.html

  * igt@kms_pipe_crc_basic@suspend-read-crc:
    - shard-dg2-set2:     [DMESG-WARN][88] ([Intel XE#1162] / [Intel XE#1214]) -> [PASS][89] +3 other tests pass
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-435/igt@kms_pipe_crc_basic@suspend-read-crc.html
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-463/igt@kms_pipe_crc_basic@suspend-read-crc.html

  * igt@xe_evict@evict-beng-cm-threads-large:
    - shard-dg2-set2:     [TIMEOUT][90] ([Intel XE#1473] / [Intel XE#392]) -> [PASS][91]
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-435/igt@xe_evict@evict-beng-cm-threads-large.html
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-436/igt@xe_evict@evict-beng-cm-threads-large.html

  * {igt@xe_pm@s2idle-vm-bind-prefetch}:
    - shard-dg2-set2:     [INCOMPLETE][92] ([Intel XE#1195] / [Intel XE#1694]) -> [PASS][93]
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-466/igt@xe_pm@s2idle-vm-bind-prefetch.html
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-434/igt@xe_pm@s2idle-vm-bind-prefetch.html

  
#### Warnings ####

  * igt@core_hotunplug@hotreplug-lateclose:
    - shard-dg2-set2:     [DMESG-FAIL][94] ([Intel XE#1548]) -> [DMESG-FAIL][95] ([Intel XE#1162] / [Intel XE#1548]) +1 other test dmesg-fail
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-436/igt@core_hotunplug@hotreplug-lateclose.html
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-436/igt@core_hotunplug@hotreplug-lateclose.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
    - shard-dg2-set2:     [SKIP][96] ([Intel XE#1124] / [Intel XE#1201]) -> [SKIP][97] ([Intel XE#1201] / [Intel XE#829]) +1 other test skip
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-464/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html

  * igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc:
    - shard-dg2-set2:     [SKIP][98] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) -> [SKIP][99] ([Intel XE#1201] / [Intel XE#829]) +2 other tests skip
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc.html
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k:
    - shard-dg2-set2:     [SKIP][100] ([Intel XE#1201] / [Intel XE#373]) -> [SKIP][101] ([Intel XE#1201] / [Intel XE#1226]) +1 other test skip
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-463/igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k.html
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k.html

  * igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size:
    - shard-dg2-set2:     [DMESG-WARN][102] ([Intel XE#1214] / [Intel XE#282] / [Intel XE#910]) -> [SKIP][103] ([Intel XE#1201] / [Intel XE#1226] / [Intel XE#1234])
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-436/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size.html
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size:
    - shard-dg2-set2:     [DMESG-WARN][104] ([Intel XE#1214] / [Intel XE#282]) -> [SKIP][105] ([Intel XE#1201] / [Intel XE#1226])
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-436/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][106] ([Intel XE#1201] / [Intel XE#455] / [i915#3804]) -> [SKIP][107] ([Intel XE#1201] / [i915#3804])
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-464/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-6.html
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-435/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-6.html

  * igt@kms_flip@flip-vs-suspend:
    - shard-dg2-set2:     [INCOMPLETE][108] ([Intel XE#1195]) -> [DMESG-WARN][109] ([Intel XE#1162] / [Intel XE#1214])
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-463/igt@kms_flip@flip-vs-suspend.html
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-435/igt@kms_flip@flip-vs-suspend.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff:
    - shard-dg2-set2:     [SKIP][110] ([Intel XE#1201] / [Intel XE#651]) -> [SKIP][111] ([Intel XE#1201] / [Intel XE#1226]) +2 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-433/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff.html
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-wc:
    - shard-dg2-set2:     [SKIP][112] ([Intel XE#1201] / [Intel XE#651]) -> [SKIP][113] ([Intel XE#1201] / [Intel XE#1226] / [Intel XE#1234])
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-463/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-wc.html
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-blt:
    - shard-dg2-set2:     [SKIP][114] ([Intel XE#1201]) -> [SKIP][115] ([Intel XE#1201] / [Intel XE#653])
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-436/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-blt.html
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-464/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render:
    - shard-dg2-set2:     [SKIP][116] ([Intel XE#1201] / [Intel XE#653]) -> [SKIP][117] ([Intel XE#1201] / [Intel XE#1226]) +3 other tests skip
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-464/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render.html
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format:
    - shard-dg2-set2:     [SKIP][118] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#498]) -> [SKIP][119] ([Intel XE#1201] / [Intel XE#1226])
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-466/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format.html
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format:
    - shard-dg2-set2:     [INCOMPLETE][120] ([Intel XE#1195]) -> [TIMEOUT][121] ([Intel XE#380] / [Intel XE#904] / [Intel XE#909])
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-433/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format.html
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [INCOMPLETE][122] ([Intel XE#1195]) -> [TIMEOUT][123] ([Intel XE#904] / [Intel XE#909])
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-433/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-a-hdmi-a-6.html
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-a-hdmi-a-6.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-75-with-pixel-format:
    - shard-dg2-set2:     [INCOMPLETE][124] ([Intel XE#1195] / [Intel XE#904] / [Intel XE#909]) -> [INCOMPLETE][125] ([Intel XE#1195]) +1 other test incomplete
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-463/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-pixel-format.html
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-464/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-pixel-format.html

  * igt@kms_psr@fbc-psr2-primary-render:
    - shard-dg2-set2:     [SKIP][126] ([Intel XE#1201] / [Intel XE#929]) -> [SKIP][127] ([Intel XE#1201] / [Intel XE#1226]) +2 other tests skip
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-435/igt@kms_psr@fbc-psr2-primary-render.html
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_psr@fbc-psr2-primary-render.html

  * igt@kms_psr@pr-basic:
    - shard-dg2-set2:     [SKIP][128] ([Intel XE#1201] / [Intel XE#1234]) -> [SKIP][129] ([Intel XE#1201] / [Intel XE#929])
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-436/igt@kms_psr@pr-basic.html
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-435/igt@kms_psr@pr-basic.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-270:
    - shard-dg2-set2:     [SKIP][130] ([Intel XE#1201] / [Intel XE#829]) -> [SKIP][131] ([Intel XE#1201] / [Intel XE#327])
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-436/igt@kms_rotation_crc@primary-y-tiled-reflect-x-270.html
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-463/igt@kms_rotation_crc@primary-y-tiled-reflect-x-270.html

  * igt@kms_rotation_crc@sprite-rotation-270:
    - shard-dg2-set2:     [SKIP][132] ([Intel XE#1201] / [Intel XE#327]) -> [SKIP][133] ([Intel XE#1201] / [Intel XE#829])
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-434/igt@kms_rotation_crc@sprite-rotation-270.html
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_rotation_crc@sprite-rotation-270.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-dg2-set2:     [SKIP][134] ([Intel XE#1201]) -> [SKIP][135] ([Intel XE#1201] / [Intel XE#1226])
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-433/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-433/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@xe_evict@evict-beng-mixed-many-threads-large:
    - shard-dg2-set2:     [TIMEOUT][136] ([Intel XE#1041] / [Intel XE#1473] / [Intel XE#392]) -> [INCOMPLETE][137] ([Intel XE#1195] / [Intel XE#1473] / [Intel XE#392])
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-436/igt@xe_evict@evict-beng-mixed-many-threads-large.html
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-464/igt@xe_evict@evict-beng-mixed-many-threads-large.html

  * igt@xe_evict@evict-beng-mixed-threads-large:
    - shard-dg2-set2:     [TIMEOUT][138] ([Intel XE#1473] / [Intel XE#392]) -> [INCOMPLETE][139] ([Intel XE#1195] / [Intel XE#1473] / [Intel XE#392])
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7832/shard-dg2-466/igt@xe_evict@evict-beng-mixed-threads-large.html
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11100/shard-dg2-466/igt@xe_evict@evict-beng-mixed-threads-large.html

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

  [Intel XE#1041]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1041
  [Intel XE#1043]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1043
  [Intel XE#1069]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1069
  [Intel XE#1123]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1123
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129
  [Intel XE#1135]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1135
  [Intel XE#1152]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1152
  [Intel XE#1162]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1162
  [Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192
  [Intel XE#1195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1195
  [Intel XE#1201]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1201
  [Intel XE#1214]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1214
  [Intel XE#1226]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1226
  [Intel XE#1234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1234
  [Intel XE#1235]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1235
  [Intel XE#1252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1252
  [Intel XE#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473
  [Intel XE#1548]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1548
  [Intel XE#1562]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1562
  [Intel XE#1600]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1600
  [Intel XE#1694]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1694
  [Intel XE#282]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/282
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
  [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
  [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
  [Intel XE#314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/314
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
  [Intel XE#327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/327
  [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/380
  [Intel XE#392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/392
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#498]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/498
  [Intel XE#579]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/579
  [Intel XE#581]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/581
  [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
  [Intel XE#619]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/619
  [Intel XE#650]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/650
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/658
  [Intel XE#687]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/687
  [Intel XE#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756
  [Intel XE#771]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/771
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#829]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/829
  [Intel XE#845]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/845
  [Intel XE#873]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/873
  [Intel XE#877]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/877
  [Intel XE#899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/899
  [Intel XE#904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/904
  [Intel XE#909]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/909
  [Intel XE#910]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/910
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804
  [i915#6077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6077


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

  * IGT: IGT_7832 -> IGTPW_11100
  * Linux: xe-1235-3bc655eb4a31c9a89cccac484e09112f73414b29 -> xe-1238-ca96a1c62451ea534391d1eafe3a0b5691658c02

  IGTPW_11100: ff4d40e958c3c934eaa4434973196527ffffa077 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_7832: f4a19f8c3a506c6ef7241e80ed966230d18acb03 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1235-3bc655eb4a31c9a89cccac484e09112f73414b29: 3bc655eb4a31c9a89cccac484e09112f73414b29
  xe-1238-ca96a1c62451ea534391d1eafe3a0b5691658c02: ca96a1c62451ea534391d1eafe3a0b5691658c02

== Logs ==

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

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

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

* ✗ Fi.CI.IGT: failure for gputop: Add support for xe (rev4)
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (15 preceding siblings ...)
  2024-05-04  8:33 ` ✗ CI.xeFULL: failure " Patchwork
@ 2024-05-04 12:50 ` Patchwork
  2024-05-06 10:37 ` [PATCH i-g-t v3 00/12] gputop: Add support for xe Tvrtko Ursulin
  2024-05-08 16:25 ` (subset) " Lucas De Marchi
  18 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2024-05-04 12:50 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev

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

== Series Details ==

Series: gputop: Add support for xe (rev4)
URL   : https://patchwork.freedesktop.org/series/132059/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_14710_full -> IGTPW_11100_full
====================================================

Summary
-------

  **FAILURE**

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

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

Participating hosts (9 -> 9)
------------------------------

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@gem_exec_gttfill@engines@vcs1:
    - shard-dg1:          [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-dg1-17/igt@gem_exec_gttfill@engines@vcs1.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-13/igt@gem_exec_gttfill@engines@vcs1.html

  
#### Warnings ####

  * igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs:
    - shard-snb:          [SKIP][3] -> [ABORT][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-snb6/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-snb4/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_bb@blit-reloc-keep-cache:
    - shard-dg2:          NOTRUN -> [SKIP][5] ([i915#8411])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-6/igt@api_intel_bb@blit-reloc-keep-cache.html

  * igt@api_intel_bb@render-ccs:
    - shard-dg2:          NOTRUN -> [FAIL][6] ([i915#10380])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-6/igt@api_intel_bb@render-ccs.html

  * igt@debugfs_test@basic-hwmon:
    - shard-tglu:         NOTRUN -> [SKIP][7] ([i915#9318])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-8/igt@debugfs_test@basic-hwmon.html

  * igt@device_reset@unbind-reset-rebind:
    - shard-dg2:          [PASS][8] -> [INCOMPLETE][9] ([i915#5507])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-dg2-3/igt@device_reset@unbind-reset-rebind.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-4/igt@device_reset@unbind-reset-rebind.html
    - shard-rkl:          [PASS][10] -> [INCOMPLETE][11] ([i915#5507])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-rkl-2/igt@device_reset@unbind-reset-rebind.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-4/igt@device_reset@unbind-reset-rebind.html
    - shard-tglu:         [PASS][12] -> [INCOMPLETE][13] ([i915#5507])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-tglu-7/igt@device_reset@unbind-reset-rebind.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-3/igt@device_reset@unbind-reset-rebind.html
    - shard-glk:          NOTRUN -> [INCOMPLETE][14] ([i915#5507])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-glk7/igt@device_reset@unbind-reset-rebind.html
    - shard-mtlp:         [PASS][15] -> [ABORT][16] ([i915#5507])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-mtlp-2/igt@device_reset@unbind-reset-rebind.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-4/igt@device_reset@unbind-reset-rebind.html

  * igt@drm_fdinfo@busy@bcs0:
    - shard-mtlp:         NOTRUN -> [SKIP][17] ([i915#8414]) +5 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-6/igt@drm_fdinfo@busy@bcs0.html

  * igt@drm_fdinfo@busy@rcs0:
    - shard-dg2:          NOTRUN -> [SKIP][18] ([i915#8414]) +14 other tests skip
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-4/igt@drm_fdinfo@busy@rcs0.html

  * igt@drm_fdinfo@busy@vcs1:
    - shard-dg1:          NOTRUN -> [SKIP][19] ([i915#8414]) +5 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-16/igt@drm_fdinfo@busy@vcs1.html

  * igt@gem_basic@multigpu-create-close:
    - shard-dg1:          NOTRUN -> [SKIP][20] ([i915#7697]) +1 other test skip
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-15/igt@gem_basic@multigpu-create-close.html

  * igt@gem_ccs@suspend-resume:
    - shard-rkl:          NOTRUN -> [SKIP][21] ([i915#9323])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-4/igt@gem_ccs@suspend-resume.html
    - shard-dg1:          NOTRUN -> [SKIP][22] ([i915#9323])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-17/igt@gem_ccs@suspend-resume.html

  * igt@gem_close_race@multigpu-basic-threads:
    - shard-rkl:          NOTRUN -> [SKIP][23] ([i915#7697]) +1 other test skip
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-6/igt@gem_close_race@multigpu-basic-threads.html

  * igt@gem_create@create-ext-cpu-access-sanity-check:
    - shard-tglu:         NOTRUN -> [SKIP][24] ([i915#6335])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-3/igt@gem_create@create-ext-cpu-access-sanity-check.html

  * igt@gem_ctx_persistence@heartbeat-hostile:
    - shard-dg2:          NOTRUN -> [SKIP][25] ([i915#8555])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-8/igt@gem_ctx_persistence@heartbeat-hostile.html

  * igt@gem_ctx_sseu@mmap-args:
    - shard-dg2:          NOTRUN -> [SKIP][26] ([i915#280]) +1 other test skip
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-6/igt@gem_ctx_sseu@mmap-args.html
    - shard-rkl:          NOTRUN -> [SKIP][27] ([i915#280])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-2/igt@gem_ctx_sseu@mmap-args.html
    - shard-dg1:          NOTRUN -> [SKIP][28] ([i915#280])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@gem_ctx_sseu@mmap-args.html
    - shard-tglu:         NOTRUN -> [SKIP][29] ([i915#280])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-5/igt@gem_ctx_sseu@mmap-args.html
    - shard-mtlp:         NOTRUN -> [SKIP][30] ([i915#280])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-5/igt@gem_ctx_sseu@mmap-args.html

  * igt@gem_eio@hibernate:
    - shard-rkl:          NOTRUN -> [ABORT][31] ([i915#7975] / [i915#8213])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-6/igt@gem_eio@hibernate.html

  * igt@gem_eio@reset-stress:
    - shard-dg2:          [PASS][32] -> [FAIL][33] ([i915#5784])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-dg2-1/igt@gem_eio@reset-stress.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-5/igt@gem_eio@reset-stress.html

  * igt@gem_exec_balancer@bonded-sync:
    - shard-dg2:          NOTRUN -> [SKIP][34] ([i915#4771])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-1/igt@gem_exec_balancer@bonded-sync.html
    - shard-dg1:          NOTRUN -> [SKIP][35] ([i915#4771])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-14/igt@gem_exec_balancer@bonded-sync.html

  * igt@gem_exec_balancer@sliced:
    - shard-dg2:          NOTRUN -> [SKIP][36] ([i915#4812]) +1 other test skip
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-5/igt@gem_exec_balancer@sliced.html

  * igt@gem_exec_capture@capture-recoverable:
    - shard-tglu:         NOTRUN -> [SKIP][37] ([i915#6344])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-7/igt@gem_exec_capture@capture-recoverable.html

  * igt@gem_exec_capture@many-4k-zero:
    - shard-rkl:          NOTRUN -> [FAIL][38] ([i915#9606])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-4/igt@gem_exec_capture@many-4k-zero.html

  * igt@gem_exec_endless@dispatch@ccs0:
    - shard-dg2:          [PASS][39] -> [TIMEOUT][40] ([i915#7016])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-dg2-2/igt@gem_exec_endless@dispatch@ccs0.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-1/igt@gem_exec_endless@dispatch@ccs0.html

  * igt@gem_exec_fair@basic-deadline:
    - shard-glk:          NOTRUN -> [FAIL][41] ([i915#2846])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-glk2/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-none:
    - shard-dg1:          NOTRUN -> [SKIP][42] ([i915#3539] / [i915#4852]) +4 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-13/igt@gem_exec_fair@basic-none.html

  * igt@gem_exec_fair@basic-none-share:
    - shard-mtlp:         NOTRUN -> [SKIP][43] ([i915#4473] / [i915#4771])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-2/igt@gem_exec_fair@basic-none-share.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-tglu:         [PASS][44] -> [FAIL][45] ([i915#2842]) +1 other test fail
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-tglu-5/igt@gem_exec_fair@basic-none-share@rcs0.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-10/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-none@rcs0:
    - shard-glk:          NOTRUN -> [FAIL][46] ([i915#2842]) +3 other tests fail
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-glk3/igt@gem_exec_fair@basic-none@rcs0.html

  * igt@gem_exec_fair@basic-pace-solo@rcs0:
    - shard-rkl:          NOTRUN -> [FAIL][47] ([i915#2842])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-5/igt@gem_exec_fair@basic-pace-solo@rcs0.html

  * igt@gem_exec_fair@basic-sync:
    - shard-dg1:          NOTRUN -> [SKIP][48] ([i915#3539])
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-15/igt@gem_exec_fair@basic-sync.html

  * igt@gem_exec_fence@concurrent:
    - shard-mtlp:         NOTRUN -> [SKIP][49] ([i915#4812]) +1 other test skip
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-5/igt@gem_exec_fence@concurrent.html

  * igt@gem_exec_flush@basic-wb-pro-default:
    - shard-dg2:          NOTRUN -> [SKIP][50] ([i915#3539] / [i915#4852])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-5/igt@gem_exec_flush@basic-wb-pro-default.html

  * igt@gem_exec_reloc@basic-wc-read-active:
    - shard-dg1:          NOTRUN -> [SKIP][51] ([i915#3281]) +8 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-17/igt@gem_exec_reloc@basic-wc-read-active.html

  * igt@gem_exec_reloc@basic-write-read-active:
    - shard-dg2:          NOTRUN -> [SKIP][52] ([i915#3281]) +3 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-5/igt@gem_exec_reloc@basic-write-read-active.html
    - shard-rkl:          NOTRUN -> [SKIP][53] ([i915#3281]) +7 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-4/igt@gem_exec_reloc@basic-write-read-active.html

  * igt@gem_exec_reloc@basic-write-wc-active:
    - shard-mtlp:         NOTRUN -> [SKIP][54] ([i915#3281]) +3 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-3/igt@gem_exec_reloc@basic-write-wc-active.html

  * igt@gem_exec_schedule@preempt-queue:
    - shard-dg1:          NOTRUN -> [SKIP][55] ([i915#4812]) +2 other tests skip
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-16/igt@gem_exec_schedule@preempt-queue.html
    - shard-dg2:          NOTRUN -> [SKIP][56] ([i915#4537] / [i915#4812])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-4/igt@gem_exec_schedule@preempt-queue.html

  * igt@gem_fence_thrash@bo-copy:
    - shard-dg2:          NOTRUN -> [SKIP][57] ([i915#4860])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-1/igt@gem_fence_thrash@bo-copy.html

  * igt@gem_fenced_exec_thrash@no-spare-fences-busy:
    - shard-dg1:          NOTRUN -> [SKIP][58] ([i915#4860]) +4 other tests skip
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-13/igt@gem_fenced_exec_thrash@no-spare-fences-busy.html

  * igt@gem_lmem_swapping@heavy-verify-multi-ccs@lmem0:
    - shard-dg2:          [PASS][59] -> [FAIL][60] ([i915#10378]) +1 other test fail
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-dg2-7/igt@gem_lmem_swapping@heavy-verify-multi-ccs@lmem0.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-2/igt@gem_lmem_swapping@heavy-verify-multi-ccs@lmem0.html

  * igt@gem_lmem_swapping@heavy-verify-random:
    - shard-rkl:          NOTRUN -> [SKIP][61] ([i915#4613]) +3 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-3/igt@gem_lmem_swapping@heavy-verify-random.html

  * igt@gem_lmem_swapping@massive-random:
    - shard-glk:          NOTRUN -> [SKIP][62] ([i915#4613]) +4 other tests skip
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-glk3/igt@gem_lmem_swapping@massive-random.html

  * igt@gem_lmem_swapping@parallel-random-verify-ccs@lmem0:
    - shard-dg1:          NOTRUN -> [SKIP][63] ([i915#4565])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@gem_lmem_swapping@parallel-random-verify-ccs@lmem0.html

  * igt@gem_lmem_swapping@random-engines:
    - shard-mtlp:         NOTRUN -> [SKIP][64] ([i915#4613])
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-1/igt@gem_lmem_swapping@random-engines.html

  * igt@gem_lmem_swapping@verify-random-ccs:
    - shard-tglu:         NOTRUN -> [SKIP][65] ([i915#4613])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-5/igt@gem_lmem_swapping@verify-random-ccs.html

  * igt@gem_media_fill@media-fill:
    - shard-dg2:          NOTRUN -> [SKIP][66] ([i915#8289])
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-2/igt@gem_media_fill@media-fill.html

  * igt@gem_mmap_gtt@basic-write-cpu-read-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][67] ([i915#4077]) +5 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-7/igt@gem_mmap_gtt@basic-write-cpu-read-gtt.html

  * igt@gem_mmap_gtt@medium-copy-odd:
    - shard-dg1:          NOTRUN -> [SKIP][68] ([i915#4077]) +8 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-13/igt@gem_mmap_gtt@medium-copy-odd.html

  * igt@gem_mmap_wc@close:
    - shard-dg2:          NOTRUN -> [SKIP][69] ([i915#4083]) +4 other tests skip
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-5/igt@gem_mmap_wc@close.html

  * igt@gem_mmap_wc@write-prefaulted:
    - shard-dg1:          NOTRUN -> [SKIP][70] ([i915#4083]) +2 other tests skip
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@gem_mmap_wc@write-prefaulted.html

  * igt@gem_mmap_wc@write-read:
    - shard-mtlp:         NOTRUN -> [SKIP][71] ([i915#4083]) +1 other test skip
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-6/igt@gem_mmap_wc@write-read.html

  * igt@gem_partial_pwrite_pread@reads:
    - shard-rkl:          NOTRUN -> [SKIP][72] ([i915#3282]) +4 other tests skip
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-5/igt@gem_partial_pwrite_pread@reads.html

  * igt@gem_partial_pwrite_pread@write:
    - shard-dg1:          NOTRUN -> [SKIP][73] ([i915#3282]) +3 other tests skip
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-16/igt@gem_partial_pwrite_pread@write.html

  * igt@gem_pread@exhaustion:
    - shard-tglu:         NOTRUN -> [WARN][74] ([i915#2658])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-4/igt@gem_pread@exhaustion.html

  * igt@gem_pread@snoop:
    - shard-dg2:          NOTRUN -> [SKIP][75] ([i915#3282]) +3 other tests skip
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-8/igt@gem_pread@snoop.html

  * igt@gem_pxp@protected-encrypted-src-copy-not-readible:
    - shard-rkl:          NOTRUN -> [SKIP][76] ([i915#4270]) +1 other test skip
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-4/igt@gem_pxp@protected-encrypted-src-copy-not-readible.html

  * igt@gem_pxp@reject-modify-context-protection-off-2:
    - shard-dg2:          NOTRUN -> [SKIP][77] ([i915#4270])
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-5/igt@gem_pxp@reject-modify-context-protection-off-2.html

  * igt@gem_pxp@verify-pxp-key-change-after-suspend-resume:
    - shard-dg1:          NOTRUN -> [SKIP][78] ([i915#4270]) +2 other tests skip
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-17/igt@gem_pxp@verify-pxp-key-change-after-suspend-resume.html

  * igt@gem_pxp@verify-pxp-stale-buf-optout-execution:
    - shard-tglu:         NOTRUN -> [SKIP][79] ([i915#4270])
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-5/igt@gem_pxp@verify-pxp-stale-buf-optout-execution.html

  * igt@gem_render_copy@y-tiled-ccs-to-y-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][80] ([i915#5190] / [i915#8428]) +5 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-10/igt@gem_render_copy@y-tiled-ccs-to-y-tiled.html

  * igt@gem_render_copy@y-tiled-ccs-to-y-tiled-ccs:
    - shard-mtlp:         NOTRUN -> [SKIP][81] ([i915#8428]) +2 other tests skip
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-5/igt@gem_render_copy@y-tiled-ccs-to-y-tiled-ccs.html

  * igt@gem_set_tiling_vs_blt@tiled-to-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][82] ([i915#4079])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-2/igt@gem_set_tiling_vs_blt@tiled-to-tiled.html

  * igt@gem_set_tiling_vs_blt@tiled-to-untiled:
    - shard-rkl:          NOTRUN -> [SKIP][83] ([i915#8411])
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-3/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
    - shard-dg1:          NOTRUN -> [SKIP][84] ([i915#4079])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-14/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html

  * igt@gem_spin_batch@spin-all-new:
    - shard-dg2:          NOTRUN -> [FAIL][85] ([i915#5889])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-3/igt@gem_spin_batch@spin-all-new.html

  * igt@gem_tiled_partial_pwrite_pread@writes:
    - shard-dg2:          NOTRUN -> [SKIP][86] ([i915#4077]) +8 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-2/igt@gem_tiled_partial_pwrite_pread@writes.html

  * igt@gem_userptr_blits@dmabuf-sync:
    - shard-glk:          NOTRUN -> [SKIP][87] ([i915#3323])
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-glk8/igt@gem_userptr_blits@dmabuf-sync.html

  * igt@gem_userptr_blits@dmabuf-unsync:
    - shard-dg1:          NOTRUN -> [SKIP][88] ([i915#3297]) +1 other test skip
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-16/igt@gem_userptr_blits@dmabuf-unsync.html

  * igt@gem_userptr_blits@map-fixed-invalidate-overlap:
    - shard-dg1:          NOTRUN -> [SKIP][89] ([i915#3297] / [i915#4880]) +2 other tests skip
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@gem_userptr_blits@map-fixed-invalidate-overlap.html

  * igt@gem_userptr_blits@set-cache-level:
    - shard-mtlp:         NOTRUN -> [SKIP][90] ([i915#3297]) +1 other test skip
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-4/igt@gem_userptr_blits@set-cache-level.html

  * igt@gem_userptr_blits@unsync-unmap:
    - shard-tglu:         NOTRUN -> [SKIP][91] ([i915#3297])
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-6/igt@gem_userptr_blits@unsync-unmap.html

  * igt@gem_userptr_blits@unsync-unmap-cycles:
    - shard-rkl:          NOTRUN -> [SKIP][92] ([i915#3297]) +1 other test skip
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-5/igt@gem_userptr_blits@unsync-unmap-cycles.html

  * igt@gen9_exec_parse@basic-rejected-ctx-param:
    - shard-tglu:         NOTRUN -> [SKIP][93] ([i915#2527] / [i915#2856]) +2 other tests skip
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-3/igt@gen9_exec_parse@basic-rejected-ctx-param.html

  * igt@gen9_exec_parse@bb-start-far:
    - shard-dg2:          NOTRUN -> [SKIP][94] ([i915#2856]) +2 other tests skip
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-5/igt@gen9_exec_parse@bb-start-far.html

  * igt@gen9_exec_parse@bb-start-out:
    - shard-dg1:          NOTRUN -> [SKIP][95] ([i915#2527]) +2 other tests skip
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@gen9_exec_parse@bb-start-out.html

  * igt@gen9_exec_parse@cmd-crossing-page:
    - shard-mtlp:         NOTRUN -> [SKIP][96] ([i915#2856]) +1 other test skip
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-5/igt@gen9_exec_parse@cmd-crossing-page.html

  * igt@gen9_exec_parse@valid-registers:
    - shard-rkl:          NOTRUN -> [SKIP][97] ([i915#2527]) +2 other tests skip
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-4/igt@gen9_exec_parse@valid-registers.html

  * igt@i915_pm_freq_api@freq-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][98] ([i915#8399]) +1 other test skip
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-4/igt@i915_pm_freq_api@freq-suspend.html

  * igt@i915_pm_freq_mult@media-freq@gt0:
    - shard-dg1:          NOTRUN -> [SKIP][99] ([i915#6590])
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-16/igt@i915_pm_freq_mult@media-freq@gt0.html

  * igt@i915_pm_rps@reset:
    - shard-mtlp:         NOTRUN -> [FAIL][100] ([i915#8346])
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-2/igt@i915_pm_rps@reset.html

  * igt@i915_pm_rps@thresholds@gt0:
    - shard-dg1:          NOTRUN -> [SKIP][101] ([i915#8925]) +1 other test skip
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@i915_pm_rps@thresholds@gt0.html

  * igt@i915_query@hwconfig_table:
    - shard-dg1:          NOTRUN -> [SKIP][102] ([i915#6245])
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@i915_query@hwconfig_table.html

  * igt@i915_suspend@basic-s3-without-i915:
    - shard-tglu:         NOTRUN -> [INCOMPLETE][103] ([i915#7443])
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-10/igt@i915_suspend@basic-s3-without-i915.html

  * igt@intel_hwmon@hwmon-write:
    - shard-tglu:         NOTRUN -> [SKIP][104] ([i915#7707])
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-4/igt@intel_hwmon@hwmon-write.html

  * igt@kms_addfb_basic@basic-x-tiled-legacy:
    - shard-dg1:          NOTRUN -> [SKIP][105] ([i915#4212])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-16/igt@kms_addfb_basic@basic-x-tiled-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - shard-dg1:          NOTRUN -> [SKIP][106] ([i915#4215])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-15/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_addfb_basic@framebuffer-vs-set-tiling:
    - shard-mtlp:         NOTRUN -> [SKIP][107] ([i915#4212])
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-5/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html

  * igt@kms_atomic_transition@plane-all-modeset-transition:
    - shard-mtlp:         NOTRUN -> [SKIP][108] ([i915#1769] / [i915#3555])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-2/igt@kms_atomic_transition@plane-all-modeset-transition.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
    - shard-rkl:          NOTRUN -> [SKIP][109] ([i915#1769] / [i915#3555])
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-6/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
    - shard-glk:          NOTRUN -> [SKIP][110] ([i915#1769])
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-glk3/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html

  * igt@kms_big_fb@4-tiled-16bpp-rotate-90:
    - shard-rkl:          NOTRUN -> [SKIP][111] ([i915#5286]) +6 other tests skip
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-3/igt@kms_big_fb@4-tiled-16bpp-rotate-90.html

  * igt@kms_big_fb@4-tiled-8bpp-rotate-180:
    - shard-dg1:          NOTRUN -> [SKIP][112] ([i915#4538] / [i915#5286]) +5 other tests skip
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@kms_big_fb@4-tiled-8bpp-rotate-180.html
    - shard-tglu:         NOTRUN -> [SKIP][113] ([i915#5286]) +3 other tests skip
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-5/igt@kms_big_fb@4-tiled-8bpp-rotate-180.html

  * igt@kms_big_fb@4-tiled-addfb-size-offset-overflow:
    - shard-dg1:          NOTRUN -> [SKIP][114] ([i915#5286])
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-15/igt@kms_big_fb@4-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_fb@y-tiled-32bpp-rotate-180:
    - shard-mtlp:         NOTRUN -> [SKIP][115] +4 other tests skip
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-5/igt@kms_big_fb@y-tiled-32bpp-rotate-180.html

  * igt@kms_big_fb@y-tiled-64bpp-rotate-270:
    - shard-rkl:          NOTRUN -> [SKIP][116] ([i915#3638]) +3 other tests skip
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-2/igt@kms_big_fb@y-tiled-64bpp-rotate-270.html
    - shard-dg1:          NOTRUN -> [SKIP][117] ([i915#3638]) +4 other tests skip
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-15/igt@kms_big_fb@y-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - shard-dg2:          NOTRUN -> [SKIP][118] ([i915#4538] / [i915#5190]) +7 other tests skip
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-4/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-180:
    - shard-dg1:          NOTRUN -> [SKIP][119] ([i915#4538]) +4 other tests skip
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-15/igt@kms_big_fb@yf-tiled-16bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-addfb-size-overflow:
    - shard-mtlp:         NOTRUN -> [SKIP][120] ([i915#6187])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-3/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - shard-tglu:         NOTRUN -> [SKIP][121] +55 other tests skip
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-5/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_joiner@invalid-modeset-force-joiner:
    - shard-dg2:          NOTRUN -> [SKIP][122] ([i915#10656])
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-4/igt@kms_big_joiner@invalid-modeset-force-joiner.html

  * igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][123] ([i915#10307] / [i915#10434] / [i915#6095]) +4 other tests skip
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-8/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-b-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][124] ([i915#6095]) +83 other tests skip
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-15/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-b-hdmi-a-4.html

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][125] ([i915#6095]) +31 other tests skip
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-9/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][126] ([i915#6095]) +63 other tests skip
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-3/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][127] ([i915#10307] / [i915#6095]) +194 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-8/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-b-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][128] ([i915#6095]) +11 other tests skip
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-5/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-b-edp-1.html

  * igt@kms_ccs@random-ccs-data-4-tiled-xe2-ccs:
    - shard-dg1:          NOTRUN -> [SKIP][129] ([i915#10278]) +1 other test skip
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-15/igt@kms_ccs@random-ccs-data-4-tiled-xe2-ccs.html
    - shard-tglu:         NOTRUN -> [SKIP][130] ([i915#10278])
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-2/igt@kms_ccs@random-ccs-data-4-tiled-xe2-ccs.html
    - shard-mtlp:         NOTRUN -> [SKIP][131] ([i915#10278])
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-3/igt@kms_ccs@random-ccs-data-4-tiled-xe2-ccs.html

  * igt@kms_cdclk@mode-transition@pipe-b-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [SKIP][132] ([i915#7213]) +3 other tests skip
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-3/igt@kms_cdclk@mode-transition@pipe-b-hdmi-a-2.html

  * igt@kms_cdclk@plane-scaling:
    - shard-rkl:          NOTRUN -> [SKIP][133] ([i915#3742])
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-6/igt@kms_cdclk@plane-scaling.html
    - shard-dg1:          NOTRUN -> [SKIP][134] ([i915#3742])
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-17/igt@kms_cdclk@plane-scaling.html

  * igt@kms_chamelium_edid@dp-edid-stress-resolution-4k:
    - shard-rkl:          NOTRUN -> [SKIP][135] ([i915#7828]) +6 other tests skip
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-2/igt@kms_chamelium_edid@dp-edid-stress-resolution-4k.html

  * igt@kms_chamelium_hpd@dp-hpd:
    - shard-tglu:         NOTRUN -> [SKIP][136] ([i915#7828]) +4 other tests skip
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-8/igt@kms_chamelium_hpd@dp-hpd.html

  * igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode:
    - shard-dg1:          NOTRUN -> [SKIP][137] ([i915#7828]) +7 other tests skip
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-17/igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode.html

  * igt@kms_chamelium_hpd@vga-hpd-after-suspend:
    - shard-dg2:          NOTRUN -> [SKIP][138] ([i915#7828]) +6 other tests skip
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-4/igt@kms_chamelium_hpd@vga-hpd-after-suspend.html
    - shard-mtlp:         NOTRUN -> [SKIP][139] ([i915#7828]) +1 other test skip
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-5/igt@kms_chamelium_hpd@vga-hpd-after-suspend.html

  * igt@kms_color@deep-color:
    - shard-tglu:         NOTRUN -> [SKIP][140] ([i915#3555] / [i915#9979])
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-8/igt@kms_color@deep-color.html

  * igt@kms_content_protection@atomic-dpms:
    - shard-rkl:          NOTRUN -> [SKIP][141] ([i915#7118] / [i915#9424])
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-3/igt@kms_content_protection@atomic-dpms.html

  * igt@kms_content_protection@legacy:
    - shard-dg1:          NOTRUN -> [SKIP][142] ([i915#7116] / [i915#9424])
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-16/igt@kms_content_protection@legacy.html

  * igt@kms_content_protection@mei-interface:
    - shard-rkl:          NOTRUN -> [SKIP][143] ([i915#8063])
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-5/igt@kms_content_protection@mei-interface.html
    - shard-dg1:          NOTRUN -> [SKIP][144] ([i915#9433])
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-16/igt@kms_content_protection@mei-interface.html

  * igt@kms_content_protection@uevent:
    - shard-tglu:         NOTRUN -> [SKIP][145] ([i915#6944] / [i915#7116] / [i915#7118] / [i915#9424])
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-10/igt@kms_content_protection@uevent.html

  * igt@kms_cursor_crc@cursor-offscreen-512x170:
    - shard-tglu:         NOTRUN -> [SKIP][146] ([i915#3359]) +1 other test skip
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-6/igt@kms_cursor_crc@cursor-offscreen-512x170.html
    - shard-mtlp:         NOTRUN -> [SKIP][147] ([i915#3359]) +3 other tests skip
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-5/igt@kms_cursor_crc@cursor-offscreen-512x170.html
    - shard-rkl:          NOTRUN -> [SKIP][148] ([i915#3359]) +1 other test skip
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-3/igt@kms_cursor_crc@cursor-offscreen-512x170.html
    - shard-dg1:          NOTRUN -> [SKIP][149] ([i915#3359]) +1 other test skip
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@kms_cursor_crc@cursor-offscreen-512x170.html

  * igt@kms_cursor_crc@cursor-onscreen-512x512:
    - shard-dg2:          NOTRUN -> [SKIP][150] ([i915#3359]) +2 other tests skip
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-4/igt@kms_cursor_crc@cursor-onscreen-512x512.html

  * igt@kms_cursor_crc@cursor-rapid-movement-32x10:
    - shard-dg1:          NOTRUN -> [SKIP][151] ([i915#3555]) +4 other tests skip
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-14/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
    - shard-rkl:          NOTRUN -> [SKIP][152] ([i915#4103]) +2 other tests skip
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-4/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-toggle:
    - shard-mtlp:         NOTRUN -> [SKIP][153] ([i915#9809]) +1 other test skip
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-3/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-dg2:          NOTRUN -> [SKIP][154] ([i915#4103] / [i915#4213])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-1/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html
    - shard-dg1:          NOTRUN -> [SKIP][155] ([i915#4103] / [i915#4213])
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-14/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_dirtyfb@fbc-dirtyfb-ioctl@a-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][156] ([i915#9723])
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@kms_dirtyfb@fbc-dirtyfb-ioctl@a-hdmi-a-4.html

  * igt@kms_display_modes@extended-mode-basic:
    - shard-dg2:          NOTRUN -> [SKIP][157] ([i915#3555]) +4 other tests skip
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-2/igt@kms_display_modes@extended-mode-basic.html
    - shard-tglu:         NOTRUN -> [SKIP][158] ([i915#3555]) +1 other test skip
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-9/igt@kms_display_modes@extended-mode-basic.html
    - shard-mtlp:         NOTRUN -> [SKIP][159] ([i915#3555] / [i915#8827])
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-7/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_dp_aux_dev:
    - shard-dg2:          NOTRUN -> [SKIP][160] ([i915#1257])
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-5/igt@kms_dp_aux_dev.html

  * igt@kms_draw_crc@draw-method-mmap-gtt:
    - shard-dg1:          NOTRUN -> [SKIP][161] ([i915#8812])
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-16/igt@kms_draw_crc@draw-method-mmap-gtt.html

  * igt@kms_dsc@dsc-fractional-bpp:
    - shard-rkl:          NOTRUN -> [SKIP][162] ([i915#3840])
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-6/igt@kms_dsc@dsc-fractional-bpp.html
    - shard-dg1:          NOTRUN -> [SKIP][163] ([i915#3840])
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-17/igt@kms_dsc@dsc-fractional-bpp.html

  * igt@kms_dsc@dsc-with-bpc:
    - shard-tglu:         NOTRUN -> [SKIP][164] ([i915#3555] / [i915#3840])
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-4/igt@kms_dsc@dsc-with-bpc.html
    - shard-dg2:          NOTRUN -> [SKIP][165] ([i915#3555] / [i915#3840])
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-8/igt@kms_dsc@dsc-with-bpc.html
    - shard-dg1:          NOTRUN -> [SKIP][166] ([i915#3555] / [i915#3840])
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@kms_dsc@dsc-with-bpc.html

  * igt@kms_dsc@dsc-with-bpc-formats:
    - shard-mtlp:         NOTRUN -> [SKIP][167] ([i915#3555] / [i915#3840]) +1 other test skip
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-2/igt@kms_dsc@dsc-with-bpc-formats.html

  * igt@kms_dsc@dsc-with-output-formats:
    - shard-rkl:          NOTRUN -> [SKIP][168] ([i915#3555] / [i915#3840])
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-4/igt@kms_dsc@dsc-with-output-formats.html

  * igt@kms_feature_discovery@chamelium:
    - shard-rkl:          NOTRUN -> [SKIP][169] ([i915#4854])
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-3/igt@kms_feature_discovery@chamelium.html

  * igt@kms_feature_discovery@psr1:
    - shard-dg1:          NOTRUN -> [SKIP][170] ([i915#658])
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@kms_feature_discovery@psr1.html

  * igt@kms_feature_discovery@psr2:
    - shard-tglu:         NOTRUN -> [SKIP][171] ([i915#658])
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-2/igt@kms_feature_discovery@psr2.html

  * igt@kms_flip@2x-absolute-wf_vblank:
    - shard-dg2:          NOTRUN -> [SKIP][172] +15 other tests skip
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-4/igt@kms_flip@2x-absolute-wf_vblank.html

  * igt@kms_flip@2x-blocking-absolute-wf_vblank:
    - shard-tglu:         NOTRUN -> [SKIP][173] ([i915#3637]) +6 other tests skip
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-9/igt@kms_flip@2x-blocking-absolute-wf_vblank.html

  * igt@kms_flip@2x-plain-flip-ts-check-interruptible:
    - shard-dg1:          NOTRUN -> [SKIP][174] ([i915#9934]) +7 other tests skip
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-14/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html
    - shard-mtlp:         NOTRUN -> [SKIP][175] ([i915#3637]) +2 other tests skip
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-2/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html

  * igt@kms_flip@flip-vs-fences:
    - shard-mtlp:         NOTRUN -> [SKIP][176] ([i915#8381])
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-8/igt@kms_flip@flip-vs-fences.html

  * igt@kms_flip@flip-vs-fences-interruptible:
    - shard-dg2:          NOTRUN -> [SKIP][177] ([i915#8381])
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-2/igt@kms_flip@flip-vs-fences-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-valid-mode:
    - shard-dg1:          NOTRUN -> [SKIP][178] ([i915#2587] / [i915#2672]) +5 other tests skip
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-14/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode:
    - shard-rkl:          NOTRUN -> [SKIP][179] ([i915#2672]) +4 other tests skip
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][180] ([i915#2672]) +2 other tests skip
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-4/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][181] ([i915#2672] / [i915#3555])
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-6/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][182] ([i915#2672])
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-7/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling@pipe-a-valid-mode:
    - shard-tglu:         NOTRUN -> [SKIP][183] ([i915#2587] / [i915#2672]) +3 other tests skip
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-4/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff:
    - shard-mtlp:         NOTRUN -> [SKIP][184] ([i915#1825]) +12 other tests skip
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt:
    - shard-snb:          NOTRUN -> [SKIP][185] +56 other tests skip
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-snb6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite:
    - shard-dg2:          [PASS][186] -> [FAIL][187] ([i915#6880])
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite.html
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-5/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-render:
    - shard-dg1:          NOTRUN -> [SKIP][188] ([i915#3458]) +16 other tests skip
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt:
    - shard-dg2:          NOTRUN -> [SKIP][189] ([i915#3458]) +10 other tests skip
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-1/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-rte:
    - shard-rkl:          NOTRUN -> [SKIP][190] ([i915#3023]) +25 other tests skip
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-indfb-fliptrack-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][191] +44 other tests skip
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-indfb-fliptrack-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-wc:
    - shard-dg2:          NOTRUN -> [SKIP][192] ([i915#8708]) +13 other tests skip
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-plflip-blt:
    - shard-dg2:          NOTRUN -> [SKIP][193] ([i915#5354]) +18 other tests skip
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt:
    - shard-rkl:          NOTRUN -> [SKIP][194] ([i915#1825]) +38 other tests skip
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
    - shard-dg2:          NOTRUN -> [SKIP][195] ([i915#10055]) +1 other test skip
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-6/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html

  * igt@kms_frontbuffer_tracking@pipe-fbc-rte:
    - shard-rkl:          NOTRUN -> [SKIP][196] ([i915#9766])
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-2/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html
    - shard-dg1:          NOTRUN -> [SKIP][197] ([i915#9766])
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-13/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html
    - shard-dg2:          NOTRUN -> [SKIP][198] ([i915#9766])
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-10/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc:
    - shard-dg1:          NOTRUN -> [SKIP][199] ([i915#8708]) +17 other tests skip
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][200] ([i915#8708]) +3 other tests skip
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-7/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_hdr@invalid-metadata-sizes:
    - shard-dg2:          NOTRUN -> [SKIP][201] ([i915#3555] / [i915#8228]) +1 other test skip
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-10/igt@kms_hdr@invalid-metadata-sizes.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-dg1:          NOTRUN -> [SKIP][202] ([i915#1839])
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-15/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_panel_fitting@legacy:
    - shard-tglu:         NOTRUN -> [SKIP][203] ([i915#6301])
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-5/igt@kms_panel_fitting@legacy.html
    - shard-dg2:          NOTRUN -> [SKIP][204] ([i915#6301])
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-3/igt@kms_panel_fitting@legacy.html
    - shard-rkl:          NOTRUN -> [SKIP][205] ([i915#6301])
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-5/igt@kms_panel_fitting@legacy.html
    - shard-dg1:          NOTRUN -> [SKIP][206] ([i915#6301])
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-15/igt@kms_panel_fitting@legacy.html

  * igt@kms_plane_lowres@tiling-yf:
    - shard-rkl:          NOTRUN -> [SKIP][207] ([i915#3555]) +3 other tests skip
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-2/igt@kms_plane_lowres@tiling-yf.html

  * igt@kms_plane_multiple@tiling-y:
    - shard-dg2:          NOTRUN -> [SKIP][208] ([i915#8806])
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-5/igt@kms_plane_multiple@tiling-y.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [FAIL][209] ([i915#8292])
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-3/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-2.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][210] ([i915#9423]) +3 other tests skip
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-8/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-d-hdmi-a-1.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b-hdmi-a-1:
    - shard-glk:          NOTRUN -> [SKIP][211] +395 other tests skip
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-glk4/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b-hdmi-a-1.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-a-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][212] ([i915#9423]) +3 other tests skip
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-4/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-a-hdmi-a-1.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][213] ([i915#9423]) +5 other tests skip
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-5/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-a-hdmi-a-1.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c-hdmi-a-3:
    - shard-dg1:          NOTRUN -> [SKIP][214] ([i915#9423]) +3 other tests skip
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-13/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c-hdmi-a-3.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-d-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [SKIP][215] ([i915#5235] / [i915#9423] / [i915#9728]) +7 other tests skip
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-3/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-d-hdmi-a-2.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][216] ([i915#5235]) +3 other tests skip
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-5/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d-hdmi-a-1.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-c-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][217] ([i915#5235]) +15 other tests skip
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-16/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-c-hdmi-a-4.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][218] ([i915#5235]) +5 other tests skip
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-3/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a-hdmi-a-2.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-a-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][219] ([i915#5235] / [i915#9423]) +7 other tests skip
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-6/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-a-hdmi-a-3.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][220] ([i915#5354])
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-4/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-tglu:         NOTRUN -> [SKIP][221] ([i915#9685])
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-5/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_pm_dc@dc9-dpms:
    - shard-rkl:          NOTRUN -> [SKIP][222] ([i915#3361])
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-6/igt@kms_pm_dc@dc9-dpms.html
    - shard-tglu:         [PASS][223] -> [SKIP][224] ([i915#4281])
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-tglu-5/igt@kms_pm_dc@dc9-dpms.html
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-2/igt@kms_pm_dc@dc9-dpms.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-dg2:          NOTRUN -> [SKIP][225] ([i915#9340])
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-6/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_pm_lpsp@screens-disabled:
    - shard-tglu:         NOTRUN -> [SKIP][226] ([i915#8430])
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-7/igt@kms_pm_lpsp@screens-disabled.html

  * igt@kms_pm_rpm@dpms-lpsp:
    - shard-rkl:          [PASS][227] -> [SKIP][228] ([i915#9519]) +1 other test skip
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-rkl-5/igt@kms_pm_rpm@dpms-lpsp.html
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-3/igt@kms_pm_rpm@dpms-lpsp.html
    - shard-dg1:          NOTRUN -> [SKIP][229] ([i915#9519])
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-14/igt@kms_pm_rpm@dpms-lpsp.html

  * igt@kms_pm_rpm@i2c:
    - shard-dg2:          [PASS][230] -> [FAIL][231] ([i915#8717])
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-dg2-5/igt@kms_pm_rpm@i2c.html
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-2/igt@kms_pm_rpm@i2c.html

  * igt@kms_prime@basic-crc-vgem:
    - shard-dg2:          NOTRUN -> [SKIP][232] ([i915#6524] / [i915#6805])
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-8/igt@kms_prime@basic-crc-vgem.html

  * igt@kms_prime@basic-modeset-hybrid:
    - shard-dg1:          NOTRUN -> [SKIP][233] ([i915#6524]) +1 other test skip
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-16/igt@kms_prime@basic-modeset-hybrid.html

  * igt@kms_psr2_sf@fbc-overlay-plane-update-sf-dmg-area:
    - shard-dg1:          NOTRUN -> [SKIP][234] +55 other tests skip
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-16/igt@kms_psr2_sf@fbc-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-mtlp:         NOTRUN -> [SKIP][235] ([i915#4348])
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-1/igt@kms_psr2_su@page_flip-nv12.html

  * igt@kms_psr@fbc-psr2-cursor-mmap-cpu:
    - shard-tglu:         NOTRUN -> [SKIP][236] ([i915#9732]) +10 other tests skip
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-7/igt@kms_psr@fbc-psr2-cursor-mmap-cpu.html

  * igt@kms_psr@pr-sprite-blt:
    - shard-mtlp:         NOTRUN -> [SKIP][237] ([i915#9688]) +4 other tests skip
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-6/igt@kms_psr@pr-sprite-blt.html

  * igt@kms_psr@psr-cursor-render:
    - shard-dg2:          NOTRUN -> [SKIP][238] ([i915#1072] / [i915#9732]) +13 other tests skip
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-3/igt@kms_psr@psr-cursor-render.html

  * igt@kms_psr@psr-sprite-plane-onoff:
    - shard-dg1:          NOTRUN -> [SKIP][239] ([i915#1072] / [i915#9732]) +17 other tests skip
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@kms_psr@psr-sprite-plane-onoff.html

  * igt@kms_psr@psr2-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][240] ([i915#1072] / [i915#9732]) +23 other tests skip
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-3/igt@kms_psr@psr2-suspend.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-dg1:          NOTRUN -> [SKIP][241] ([i915#9685]) +2 other tests skip
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-15/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
    - shard-rkl:          NOTRUN -> [SKIP][242] ([i915#9685])
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-2/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@kms_rotation_crc@exhaust-fences:
    - shard-dg1:          NOTRUN -> [SKIP][243] ([i915#4884])
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-15/igt@kms_rotation_crc@exhaust-fences.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
    - shard-tglu:         NOTRUN -> [SKIP][244] ([i915#5289])
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-3/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html

  * igt@kms_setmode@basic@pipe-a-hdmi-a-1:
    - shard-snb:          [PASS][245] -> [FAIL][246] ([i915#5465]) +1 other test fail
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-snb7/igt@kms_setmode@basic@pipe-a-hdmi-a-1.html
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-snb4/igt@kms_setmode@basic@pipe-a-hdmi-a-1.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1:
    - shard-tglu:         [PASS][247] -> [FAIL][248] ([i915#9196])
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-tglu-5/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1.html
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-9/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1.html

  * igt@kms_vrr@max-min:
    - shard-dg1:          NOTRUN -> [SKIP][249] ([i915#9906])
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-16/igt@kms_vrr@max-min.html
    - shard-rkl:          NOTRUN -> [SKIP][250] ([i915#9906])
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-4/igt@kms_vrr@max-min.html

  * igt@kms_writeback@writeback-fb-id:
    - shard-glk:          NOTRUN -> [SKIP][251] ([i915#2437]) +1 other test skip
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-glk7/igt@kms_writeback@writeback-fb-id.html
    - shard-dg1:          NOTRUN -> [SKIP][252] ([i915#2437])
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-16/igt@kms_writeback@writeback-fb-id.html

  * igt@kms_writeback@writeback-fb-id-xrgb2101010:
    - shard-rkl:          NOTRUN -> [SKIP][253] ([i915#2437] / [i915#9412])
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-5/igt@kms_writeback@writeback-fb-id-xrgb2101010.html

  * igt@kms_writeback@writeback-pixel-formats:
    - shard-tglu:         NOTRUN -> [SKIP][254] ([i915#2437] / [i915#9412])
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-7/igt@kms_writeback@writeback-pixel-formats.html

  * igt@perf_pmu@busy-double-start@bcs0:
    - shard-mtlp:         [PASS][255] -> [FAIL][256] ([i915#4349])
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-mtlp-2/igt@perf_pmu@busy-double-start@bcs0.html
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-2/igt@perf_pmu@busy-double-start@bcs0.html

  * igt@perf_pmu@rc6@other-idle-gt0:
    - shard-dg2:          NOTRUN -> [SKIP][257] ([i915#8516])
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-4/igt@perf_pmu@rc6@other-idle-gt0.html

  * igt@prime_vgem@basic-fence-mmap:
    - shard-mtlp:         NOTRUN -> [SKIP][258] ([i915#3708] / [i915#4077])
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-7/igt@prime_vgem@basic-fence-mmap.html

  * igt@prime_vgem@basic-write:
    - shard-rkl:          NOTRUN -> [SKIP][259] ([i915#3291] / [i915#3708])
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-2/igt@prime_vgem@basic-write.html
    - shard-dg1:          NOTRUN -> [SKIP][260] ([i915#3708])
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@prime_vgem@basic-write.html

  * igt@prime_vgem@coherency-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][261] ([i915#3708])
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-6/igt@prime_vgem@coherency-gtt.html
    - shard-dg1:          NOTRUN -> [SKIP][262] ([i915#3708] / [i915#4077])
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-17/igt@prime_vgem@coherency-gtt.html

  * igt@sriov_basic@enable-vfs-bind-unbind-each:
    - shard-dg1:          NOTRUN -> [SKIP][263] ([i915#9917]) +1 other test skip
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-14/igt@sriov_basic@enable-vfs-bind-unbind-each.html

  * igt@syncobj_wait@invalid-wait-zero-handles:
    - shard-rkl:          NOTRUN -> [FAIL][264] ([i915#9779])
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-5/igt@syncobj_wait@invalid-wait-zero-handles.html
    - shard-glk:          NOTRUN -> [FAIL][265] ([i915#9779])
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-glk8/igt@syncobj_wait@invalid-wait-zero-handles.html

  * igt@tools_test@sysfs_l3_parity:
    - shard-dg1:          NOTRUN -> [SKIP][266] ([i915#4818])
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-15/igt@tools_test@sysfs_l3_parity.html

  * igt@v3d/v3d_perfmon@destroy-invalid-perfmon:
    - shard-tglu:         NOTRUN -> [SKIP][267] ([i915#2575]) +10 other tests skip
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-7/igt@v3d/v3d_perfmon@destroy-invalid-perfmon.html
    - shard-mtlp:         NOTRUN -> [SKIP][268] ([i915#2575]) +3 other tests skip
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-3/igt@v3d/v3d_perfmon@destroy-invalid-perfmon.html

  * igt@v3d/v3d_submit_cl@bad-perfmon:
    - shard-dg2:          NOTRUN -> [SKIP][269] ([i915#2575]) +7 other tests skip
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-5/igt@v3d/v3d_submit_cl@bad-perfmon.html

  * igt@v3d/v3d_submit_cl@job-perfmon:
    - shard-dg1:          NOTRUN -> [SKIP][270] ([i915#2575]) +6 other tests skip
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-18/igt@v3d/v3d_submit_cl@job-perfmon.html

  * igt@vc4/vc4_label_bo@set-label:
    - shard-rkl:          NOTRUN -> [SKIP][271] ([i915#7711]) +5 other tests skip
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-3/igt@vc4/vc4_label_bo@set-label.html
    - shard-dg1:          NOTRUN -> [SKIP][272] ([i915#7711]) +5 other tests skip
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-14/igt@vc4/vc4_label_bo@set-label.html

  * igt@vc4/vc4_purgeable_bo@mark-willneed:
    - shard-mtlp:         NOTRUN -> [SKIP][273] ([i915#7711]) +2 other tests skip
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-1/igt@vc4/vc4_purgeable_bo@mark-willneed.html

  * igt@vc4/vc4_tiling@set-get:
    - shard-dg2:          NOTRUN -> [SKIP][274] ([i915#7711]) +4 other tests skip
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-10/igt@vc4/vc4_tiling@set-get.html

  
#### Possible fixes ####

  * igt@gem_eio@kms:
    - shard-snb:          [ABORT][275] -> [PASS][276]
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-snb2/igt@gem_eio@kms.html
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-snb6/igt@gem_eio@kms.html

  * igt@gem_eio@unwedge-stress:
    - shard-dg1:          [FAIL][277] ([i915#5784]) -> [PASS][278] +1 other test pass
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-dg1-14/igt@gem_eio@unwedge-stress.html
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-15/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_fair@basic-deadline:
    - shard-rkl:          [FAIL][279] ([i915#2846]) -> [PASS][280]
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-rkl-4/igt@gem_exec_fair@basic-deadline.html
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-2/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-none@vecs0:
    - shard-rkl:          [FAIL][281] ([i915#2842]) -> [PASS][282]
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-rkl-5/igt@gem_exec_fair@basic-none@vecs0.html
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-2/igt@gem_exec_fair@basic-none@vecs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-glk:          [FAIL][283] ([i915#2842]) -> [PASS][284]
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-glk1/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-glk5/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-dg2:          [INCOMPLETE][285] ([i915#1982] / [i915#9820] / [i915#9849]) -> [PASS][286]
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-dg2-2/igt@i915_module_load@reload-with-fault-injection.html
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-8/igt@i915_module_load@reload-with-fault-injection.html

  * igt@kms_async_flips@alternate-sync-async-flip@pipe-c-hdmi-a-1:
    - shard-tglu:         [FAIL][287] ([i915#10991] / [i915#2521]) -> [PASS][288]
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-tglu-6/igt@kms_async_flips@alternate-sync-async-flip@pipe-c-hdmi-a-1.html
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-7/igt@kms_async_flips@alternate-sync-async-flip@pipe-c-hdmi-a-1.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0:
    - shard-mtlp:         [DMESG-FAIL][289] ([i915#2017]) -> [PASS][290]
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-mtlp-8/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0.html
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0.html

  * igt@kms_flip@blocking-wf_vblank@b-vga1:
    - shard-snb:          [FAIL][291] ([i915#2122]) -> [PASS][292] +2 other tests pass
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-snb7/igt@kms_flip@blocking-wf_vblank@b-vga1.html
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-snb5/igt@kms_flip@blocking-wf_vblank@b-vga1.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - shard-dg2:          [SKIP][293] ([i915#9519]) -> [PASS][294] +1 other test pass
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-dg2-2/igt@kms_pm_rpm@modeset-lpsp.html
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-4/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-rkl:          [SKIP][295] ([i915#9519]) -> [PASS][296] +1 other test pass
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-rkl-2/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-3/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1:
    - shard-tglu:         [FAIL][297] ([i915#9196]) -> [PASS][298] +1 other test pass
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-tglu-5/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-9/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html

  * igt@perf_pmu@most-busy-idle-check-all@rcs0:
    - shard-rkl:          [FAIL][299] ([i915#4349]) -> [PASS][300]
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-rkl-4/igt@perf_pmu@most-busy-idle-check-all@rcs0.html
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-3/igt@perf_pmu@most-busy-idle-check-all@rcs0.html

  
#### Warnings ####

  * igt@device_reset@unbind-reset-rebind:
    - shard-dg1:          [INCOMPLETE][301] ([i915#9408] / [i915#9618]) -> [ABORT][302] ([i915#9618])
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-dg1-15/igt@device_reset@unbind-reset-rebind.html
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg1-13/igt@device_reset@unbind-reset-rebind.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-tglu:         [INCOMPLETE][303] ([i915#10047] / [i915#9697]) -> [INCOMPLETE][304] ([i915#10047] / [i915#10887] / [i915#9820])
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-tglu-7/igt@i915_module_load@reload-with-fault-injection.html
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-6/igt@i915_module_load@reload-with-fault-injection.html
    - shard-mtlp:         [ABORT][305] ([i915#10131] / [i915#9697]) -> [ABORT][306] ([i915#10131] / [i915#10887] / [i915#9820])
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-mtlp-3/igt@i915_module_load@reload-with-fault-injection.html
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-mtlp-1/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_pm_rc6_residency@rc6-idle@gt0-bcs0:
    - shard-tglu:         [FAIL][307] ([i915#3591]) -> [WARN][308] ([i915#2681])
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-tglu-4/igt@i915_pm_rc6_residency@rc6-idle@gt0-bcs0.html
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-9/igt@i915_pm_rc6_residency@rc6-idle@gt0-bcs0.html

  * igt@kms_content_protection@mei-interface:
    - shard-tglu:         [SKIP][309] ([i915#6944] / [i915#9424]) -> [SKIP][310] ([i915#8063])
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-tglu-4/igt@kms_content_protection@mei-interface.html
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-tglu-4/igt@kms_content_protection@mei-interface.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-pwrite:
    - shard-dg2:          [SKIP][311] ([i915#3458]) -> [SKIP][312] ([i915#10433] / [i915#3458]) +4 other tests skip
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-dg2-10/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-pwrite.html
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary:
    - shard-dg2:          [SKIP][313] ([i915#10433] / [i915#3458]) -> [SKIP][314] ([i915#3458])
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-6/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-rkl:          [SKIP][315] ([i915#3361]) -> [FAIL][316] ([i915#9295])
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-rkl-6/igt@kms_pm_dc@dc6-dpms.html
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-rkl-5/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_psr@psr-primary-mmap-cpu:
    - shard-dg2:          [SKIP][317] ([i915#1072] / [i915#9673] / [i915#9732]) -> [SKIP][318] ([i915#1072] / [i915#9732]) +11 other tests skip
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14710/shard-dg2-11/igt@kms_psr@psr-primary-mmap-cpu.html
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11100/shard-dg2-4/igt@kms_psr@psr-primary-mmap-cpu.html

  
  [i915#10047]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10047
  [i915#10055]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10055
  [i915#10131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10131
  [i915#10278]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10278
  [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
  [i915#10378]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10378
  [i915#10380]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10380
  [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
  [i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
  [i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#10887]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10887
  [i915#10991]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10991
  [i915#1257]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1257
  [i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
  [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1839
  [i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982
  [i915#2017]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2017
  [i915#2122]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2122
  [i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
  [i915#2521]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2521
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#2575]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2575
  [i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
  [i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2681
  [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
  [i915#2842]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2842
  [i915#2846]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2846
  [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
  [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
  [i915#3323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3323
  [i915#3359]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3359
  [i915#3361]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3361
  [i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
  [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3591]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3591
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [i915#4281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4281
  [i915#4348]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4348
  [i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
  [i915#4473]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4473
  [i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
  [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
  [i915#4565]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4565
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
  [i915#4818]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4818
  [i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
  [i915#4854]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4854
  [i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
  [i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
  [i915#4884]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4884
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#5465]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5465
  [i915#5507]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5507
  [i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
  [i915#5889]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5889
  [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
  [i915#6187]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6187
  [i915#6245]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6245
  [i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
  [i915#6335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6335
  [i915#6344]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6344
  [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
  [i915#6590]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6590
  [i915#6805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6805
  [i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
  [i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944
  [i915#7016]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7016
  [i915#7116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7116
  [i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
  [i915#7213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7213
  [i915#7443]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7443
  [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
  [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
  [i915#7711]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7711
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#7975]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7975
  [i915#8063]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8063
  [i915#8213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8213
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8289
  [i915#8292]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8292
  [i915#8346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8346
  [i915#8381]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8381
  [i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
  [i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
  [i915#8414]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8414
  [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
  [i915#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430
  [i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
  [i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8717]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8717
  [i915#8806]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8806
  [i915#8812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8812
  [i915#8827]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8827
  [i915#8925]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8925
  [i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196
  [i915#9295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9295
  [i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318
  [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
  [i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340
  [i915#9408]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9408
  [i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412
  [i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423
  [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
  [i915#9433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9433
  [i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519
  [i915#9606]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9606
  [i915#9618]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9618
  [i915#9673]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9673
  [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#9697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9697
  [i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723
  [i915#9728]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9728
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
  [i915#9766]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9766
  [i915#9779]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9779
  [i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809
  [i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820
  [i915#9849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9849
  [i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
  [i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
  [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934
  [i915#9979]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9979


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7832 -> IGTPW_11100
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_14710: ca96a1c62451ea534391d1eafe3a0b5691658c02 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_11100: ff4d40e958c3c934eaa4434973196527ffffa077 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_7832: f4a19f8c3a506c6ef7241e80ed966230d18acb03 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

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

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

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

* Re: [PATCH i-g-t v3 00/12] gputop: Add support for xe
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (16 preceding siblings ...)
  2024-05-04 12:50 ` ✗ Fi.CI.IGT: " Patchwork
@ 2024-05-06 10:37 ` Tvrtko Ursulin
  2024-05-06 20:40   ` Lucas De Marchi
  2024-05-08 16:25 ` (subset) " Lucas De Marchi
  18 siblings, 1 reply; 36+ messages in thread
From: Tvrtko Ursulin @ 2024-05-06 10:37 UTC (permalink / raw)
  To: Lucas De Marchi, igt-dev; +Cc: Umesh Nerlige Ramappa


On 04/05/2024 07:46, Lucas De Marchi wrote:
> v3 of https://lore.kernel.org/all/20240423234431.1959354-1-lucas.demarchi@intel.com
> 
> I moved some gputop eye candy to a separate series:
> https://lore.kernel.org/all/20240501173303.115737-1-lucas.demarchi@intel.com
> 
> This now also moves all the refactors to come as prep patches. The
> drm-total-cycles addition is  in the last 3 patches.
> 
> As requested fdinfo and drm-clients libraries now don't take any
> decision: they only read the fdinfo and calculate the deltas
> respectively. The decision about what aproach to use to calculate the
> client utilization is left to gputop.

Approach LGTM so ack for the series. Hopefully someone else can do the 
detailed review.

Just two observations - 3/13 I don't know what the "fixup" is, supposed 
to be and 12/13 incorrectly mentions it is adding some assert to 
intel_gpu_top.

Regards,

Tvrtko

> Lucas De Marchi (13):
>    lib/igt_drm_fdinfo: Extract ignore_space()
>    lib/igt_drm_fdinfo: Allow any number of spaces before unit
>    fixup! lib/igt_drm_fdinfo: Allow any number of spaces before unit
>    lib/igt_drm_fdinfo: Stop passing key twice
>    lib/igt_drm_fdinfo: Remove prefix arg from parse functions
>    lib/igt_drm_fdinfo: Parse drm-cycles
>    lib/igt_drm_fdinfo: Start tracking available engine keys
>    treewide: Rename engine busyness variables
>    lib/igt_drm_clients: Move engine fields to substruct
>    lib/igt_drm_clients: Record drm-cycles
>    lib/igt_drm_fdinfo: Parse drm-total-cycles
>    lib/igt_drm_clients: Record total cycles
>    gputop: Add support to drm-cycles/drm-total-cycles
> 
>   lib/igt_drm_clients.c    |  55 ++++++++++----
>   lib/igt_drm_clients.h    |  27 ++++++-
>   lib/igt_drm_fdinfo.c     | 154 +++++++++++++++++++++------------------
>   lib/igt_drm_fdinfo.h     |  17 ++++-
>   tests/intel/drm_fdinfo.c |  44 +++++------
>   tools/gputop.c           |  45 ++++++++++--
>   tools/intel_gpu_top.c    |  24 +++---
>   7 files changed, 235 insertions(+), 131 deletions(-)
> 

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

* Re: [PATCH i-g-t v3 01/13] lib/igt_drm_fdinfo: Extract ignore_space()
  2024-05-04  6:46 ` [PATCH i-g-t v3 01/13] lib/igt_drm_fdinfo: Extract ignore_space() Lucas De Marchi
@ 2024-05-06 20:21   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 36+ messages in thread
From: Umesh Nerlige Ramappa @ 2024-05-06 20:21 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev, Tvrtko Ursulin

On Fri, May 03, 2024 at 11:46:31PM -0700, Lucas De Marchi wrote:
>Extract ignore_space() to be used in other places.
>
>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>---
> lib/igt_drm_fdinfo.c | 12 ++++++++++--
> 1 file changed, 10 insertions(+), 2 deletions(-)
>
>diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
>index cab677df2..b3f6fc35a 100644
>--- a/lib/igt_drm_fdinfo.c
>+++ b/lib/igt_drm_fdinfo.c
>@@ -53,6 +53,14 @@ static size_t read_fdinfo(char *buf, const size_t sz, int at, const char *name)
> 	return count > 0 ? count : 0;
> }
>
>+static const char *ignore_space(const char *s)
>+{
>+	for (; *s && isspace(*s); s++)
>+		;
>+
>+	return s;
>+}
>+
> static int parse_engine(char *line, struct drm_client_fdinfo *info,
> 			size_t prefix_len,
> 			const char **name_map, unsigned int map_entries,
>@@ -115,8 +123,8 @@ static const char *find_kv(const char *buf, const char *key, size_t keylen)
> 	if (*p != ':')
> 		return NULL;
>
>-	for (p++; *p && isspace(*p); p++)
>-		;
>+	p++;
>+	p = ignore_space(p);
>
> 	return *p ? p : NULL;
> }
>-- 
>2.43.0
>

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

* Re: [PATCH i-g-t v3 02/13] lib/igt_drm_fdinfo: Allow any number of spaces before unit
  2024-05-04  6:46 ` [PATCH i-g-t v3 02/13] lib/igt_drm_fdinfo: Allow any number of spaces before unit Lucas De Marchi
@ 2024-05-06 20:28   ` Umesh Nerlige Ramappa
  2024-05-06 20:32     ` Umesh Nerlige Ramappa
  0 siblings, 1 reply; 36+ messages in thread
From: Umesh Nerlige Ramappa @ 2024-05-06 20:28 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev, Tvrtko Ursulin

On Fri, May 03, 2024 at 11:46:32PM -0700, Lucas De Marchi wrote:
>When parsing memory region, allow any number of spaces between value and
>unit by using ignore_space() and adjusting constness of the variables.
>
>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>---
> lib/igt_drm_fdinfo.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
>diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
>index b3f6fc35a..3b2778eee 100644
>--- a/lib/igt_drm_fdinfo.c
>+++ b/lib/igt_drm_fdinfo.c
>@@ -134,7 +134,8 @@ static int parse_region(char *line, struct drm_client_fdinfo *info,
> 			const char **region_map, unsigned int region_entries,
> 			uint64_t *val)
> {
>-	char *name, *p, *unit = NULL;
>+	const char *name, *p, *unit = NULL;
>+	char *end_ptr;
> 	ssize_t name_len;
> 	int found = -1;
> 	unsigned int i;
>@@ -180,9 +181,9 @@ static int parse_region(char *line, struct drm_client_fdinfo *info,
> 		goto out;
>
> 	p++;
>-	*val = strtoull(p, &p, 10);
>+	*val = strtoull(p, &end_ptr, 10);
>
>-	p = index(p, ' ');
>+	p = ignore_space(end_ptr);
> 	if (!p)
> 		goto out;

I think the next line of code here is 

	unit = ++p;

but p should already be pointing to the unit after ignoring the spaces.

Regards,
Umesh
>
>-- 
>2.43.0
>

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

* Re: [PATCH i-g-t v3 02/13] lib/igt_drm_fdinfo: Allow any number of spaces before unit
  2024-05-06 20:28   ` Umesh Nerlige Ramappa
@ 2024-05-06 20:32     ` Umesh Nerlige Ramappa
  2024-05-06 20:38       ` Lucas De Marchi
  0 siblings, 1 reply; 36+ messages in thread
From: Umesh Nerlige Ramappa @ 2024-05-06 20:32 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev, Tvrtko Ursulin

On Mon, May 06, 2024 at 01:28:33PM -0700, Umesh Nerlige Ramappa wrote:
>On Fri, May 03, 2024 at 11:46:32PM -0700, Lucas De Marchi wrote:
>>When parsing memory region, allow any number of spaces between value and
>>unit by using ignore_space() and adjusting constness of the variables.
>>
>>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>>---
>>lib/igt_drm_fdinfo.c | 7 ++++---
>>1 file changed, 4 insertions(+), 3 deletions(-)
>>
>>diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
>>index b3f6fc35a..3b2778eee 100644
>>--- a/lib/igt_drm_fdinfo.c
>>+++ b/lib/igt_drm_fdinfo.c
>>@@ -134,7 +134,8 @@ static int parse_region(char *line, struct drm_client_fdinfo *info,
>>			const char **region_map, unsigned int region_entries,
>>			uint64_t *val)
>>{
>>-	char *name, *p, *unit = NULL;
>>+	const char *name, *p, *unit = NULL;
>>+	char *end_ptr;
>>	ssize_t name_len;
>>	int found = -1;
>>	unsigned int i;
>>@@ -180,9 +181,9 @@ static int parse_region(char *line, struct drm_client_fdinfo *info,
>>		goto out;
>>
>>	p++;
>>-	*val = strtoull(p, &p, 10);
>>+	*val = strtoull(p, &end_ptr, 10);
>>
>>-	p = index(p, ' ');
>>+	p = ignore_space(end_ptr);
>>	if (!p)
>>		goto out;
>
>I think the next line of code here is
>
>	unit = ++p;
>
>but p should already be pointing to the unit after ignoring the spaces.

Looks like this is fixed in the next patch. Not sure why the next patch 
is a fixup!.

Maybe squash the patches into one and then this is 

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>
>Regards,
>Umesh
>>
>>-- 
>>2.43.0
>>

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

* Re: [PATCH i-g-t v3 03/13] fixup! lib/igt_drm_fdinfo: Allow any number of spaces before unit
  2024-05-04  6:46 ` [PATCH i-g-t v3 03/13] fixup! " Lucas De Marchi
@ 2024-05-06 20:33   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 36+ messages in thread
From: Umesh Nerlige Ramappa @ 2024-05-06 20:33 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev, Tvrtko Ursulin

On Fri, May 03, 2024 at 11:46:33PM -0700, Lucas De Marchi wrote:
>---
> lib/igt_drm_fdinfo.c | 17 +++++++----------
> 1 file changed, 7 insertions(+), 10 deletions(-)
>
>diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
>index 3b2778eee..3b8e79a35 100644
>--- a/lib/igt_drm_fdinfo.c
>+++ b/lib/igt_drm_fdinfo.c
>@@ -134,8 +134,7 @@ static int parse_region(char *line, struct drm_client_fdinfo *info,
> 			const char **region_map, unsigned int region_entries,
> 			uint64_t *val)
> {
>-	const char *name, *p, *unit = NULL;
>-	char *end_ptr;
>+	char *name, *p;
> 	ssize_t name_len;
> 	int found = -1;
> 	unsigned int i;
>@@ -181,18 +180,16 @@ static int parse_region(char *line, struct drm_client_fdinfo *info,
> 		goto out;
>
> 	p++;
>-	*val = strtoull(p, &end_ptr, 10);
>-
>-	p = ignore_space(end_ptr);
>-	if (!p)
>+	*val = strtoull(p, &p, 10);
>+	p = (char *)ignore_space(p);
>+	if (!*p)
> 		goto out;
>
>-	unit = ++p;
>-	if (!strcmp(unit, "KiB")) {
>+	if (!strcmp(p, "KiB")) {
> 		*val *= 1024;
>-	} else if (!strcmp(unit, "MiB")) {
>+	} else if (!strcmp(p, "MiB")) {
> 		*val *= 1024 * 1024;
>-	} else if (!strcmp(unit, "GiB")) {
>+	} else if (!strcmp(p, "GiB")) {
> 		*val *= 1024 * 1024 * 1024;
> 	}

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com> 

>
>-- 
>2.43.0
>

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

* Re: [PATCH i-g-t v3 02/13] lib/igt_drm_fdinfo: Allow any number of spaces before unit
  2024-05-06 20:32     ` Umesh Nerlige Ramappa
@ 2024-05-06 20:38       ` Lucas De Marchi
  0 siblings, 0 replies; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-06 20:38 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa; +Cc: igt-dev, Tvrtko Ursulin

On Mon, May 06, 2024 at 01:32:16PM GMT, Umesh Nerlige Ramappa wrote:
>On Mon, May 06, 2024 at 01:28:33PM -0700, Umesh Nerlige Ramappa wrote:
>>On Fri, May 03, 2024 at 11:46:32PM -0700, Lucas De Marchi wrote:
>>>When parsing memory region, allow any number of spaces between value and
>>>unit by using ignore_space() and adjusting constness of the variables.
>>>
>>>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>>>---
>>>lib/igt_drm_fdinfo.c | 7 ++++---
>>>1 file changed, 4 insertions(+), 3 deletions(-)
>>>
>>>diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
>>>index b3f6fc35a..3b2778eee 100644
>>>--- a/lib/igt_drm_fdinfo.c
>>>+++ b/lib/igt_drm_fdinfo.c
>>>@@ -134,7 +134,8 @@ static int parse_region(char *line, struct drm_client_fdinfo *info,
>>>			const char **region_map, unsigned int region_entries,
>>>			uint64_t *val)
>>>{
>>>-	char *name, *p, *unit = NULL;
>>>+	const char *name, *p, *unit = NULL;
>>>+	char *end_ptr;
>>>	ssize_t name_len;
>>>	int found = -1;
>>>	unsigned int i;
>>>@@ -180,9 +181,9 @@ static int parse_region(char *line, struct drm_client_fdinfo *info,
>>>		goto out;
>>>
>>>	p++;
>>>-	*val = strtoull(p, &p, 10);
>>>+	*val = strtoull(p, &end_ptr, 10);
>>>
>>>-	p = index(p, ' ');
>>>+	p = ignore_space(end_ptr);
>>>	if (!p)
>>>		goto out;
>>
>>I think the next line of code here is
>>
>>	unit = ++p;
>>
>>but p should already be pointing to the unit after ignoring the spaces.
>
>Looks like this is fixed in the next patch. Not sure why the next 
>patch is a fixup!.
>
>Maybe squash the patches into one and then this is

yeah.. that was actually my intention, but I forgot to squash them.

>
>Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

thanks
Lucas De Marchi

>
>>
>>Regards,
>>Umesh
>>>
>>>-- 
>>>2.43.0
>>>

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

* Re: [PATCH i-g-t v3 00/12] gputop: Add support for xe
  2024-05-06 10:37 ` [PATCH i-g-t v3 00/12] gputop: Add support for xe Tvrtko Ursulin
@ 2024-05-06 20:40   ` Lucas De Marchi
  0 siblings, 0 replies; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-06 20:40 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: igt-dev, Umesh Nerlige Ramappa

On Mon, May 06, 2024 at 11:37:13AM GMT, Tvrtko Ursulin wrote:
>
>On 04/05/2024 07:46, Lucas De Marchi wrote:
>>v3 of https://lore.kernel.org/all/20240423234431.1959354-1-lucas.demarchi@intel.com
>>
>>I moved some gputop eye candy to a separate series:
>>https://lore.kernel.org/all/20240501173303.115737-1-lucas.demarchi@intel.com
>>
>>This now also moves all the refactors to come as prep patches. The
>>drm-total-cycles addition is  in the last 3 patches.
>>
>>As requested fdinfo and drm-clients libraries now don't take any
>>decision: they only read the fdinfo and calculate the deltas
>>respectively. The decision about what aproach to use to calculate the
>>client utilization is left to gputop.
>
>Approach LGTM so ack for the series. Hopefully someone else can do the 
>detailed review.
>
>Just two observations - 3/13 I don't know what the "fixup" is, 

my bad when fixing the previous patch and forgetting to really squash
that in the previous patch.

>supposed to be and 12/13 incorrectly mentions it is adding some assert 
>to intel_gpu_top.

I will reword that, thanks

Lucas De Marchi

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

* Re: [PATCH i-g-t v3 06/13] lib/igt_drm_fdinfo: Parse drm-cycles
  2024-05-04  6:46 ` [PATCH i-g-t v3 06/13] lib/igt_drm_fdinfo: Parse drm-cycles Lucas De Marchi
@ 2024-05-07  1:11   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 36+ messages in thread
From: Umesh Nerlige Ramappa @ 2024-05-07  1:11 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev, Tvrtko Ursulin

On Fri, May 03, 2024 at 11:46:36PM -0700, Lucas De Marchi wrote:
>Read drm-cycles from fdinfo and save it for later use. Like with the mem
>regions, allow the number of engines to be updated regardless if
>drm-engine-* or drm-cycles-* shows up first.
>
>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>---
> lib/igt_drm_fdinfo.c | 29 +++++++++++++++++++++--------
> lib/igt_drm_fdinfo.h |  4 ++++
> 2 files changed, 25 insertions(+), 8 deletions(-)
>
>diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
>index 2d8ad8b81..f0a30677c 100644
>--- a/lib/igt_drm_fdinfo.c
>+++ b/lib/igt_drm_fdinfo.c
>@@ -190,6 +190,21 @@ out:
> 		}							\
> 	} while (0)
>
>+#define UPDATE_ENGINE(idx, engine, val)					\
>+	do {								\
>+		if (idx >= 0) {						\
>+			info->engine[idx] = val;			\
>+			if (!info->capacity[idx])			\
>+					info->capacity[idx] = 1;	\

nit^: extra tab

LGTM,

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Umesh

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

* Re: [PATCH i-g-t v3 07/13] lib/igt_drm_fdinfo: Start tracking available engine keys
  2024-05-04  6:46 ` [PATCH i-g-t v3 07/13] lib/igt_drm_fdinfo: Start tracking available engine keys Lucas De Marchi
@ 2024-05-07  1:14   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 36+ messages in thread
From: Umesh Nerlige Ramappa @ 2024-05-07  1:14 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev, Tvrtko Ursulin

On Fri, May 03, 2024 at 11:46:37PM -0700, Lucas De Marchi wrote:
>Start tracking what are the available keys related to engine utilization
>that were parsed from fdinfo. This can be later used by application to
>make decisions on which of them to use.
>
>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>

LGTM,

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Umesh
>---
> lib/igt_drm_fdinfo.c | 7 ++++---
> lib/igt_drm_fdinfo.h | 8 ++++++++
> 2 files changed, 12 insertions(+), 3 deletions(-)
>
>diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
>index f0a30677c..79b72c54d 100644
>--- a/lib/igt_drm_fdinfo.c
>+++ b/lib/igt_drm_fdinfo.c
>@@ -190,10 +190,11 @@ out:
> 		}							\
> 	} while (0)
>
>-#define UPDATE_ENGINE(idx, engine, val)					\
>+#define UPDATE_ENGINE(idx, engine, val, utilization_key)		\
> 	do {								\
> 		if (idx >= 0) {						\
> 			info->engine[idx] = val;			\
>+			info->utilization_mask |= utilization_key;	\
> 			if (!info->capacity[idx])			\
> 					info->capacity[idx] = 1;	\
> 			if (!engines_found[idx]) {			\
>@@ -259,11 +260,11 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
> 		} else if (strstartswith(l, "drm-engine-", &keylen)) {
> 			idx = parse_engine(l + keylen, info,
> 					   name_map, map_entries, &val);
>-			UPDATE_ENGINE(idx, busy, val);
>+			UPDATE_ENGINE(idx, busy, val, DRM_FDINFO_UTILIZATION_ENGINE_TIME);
> 		} else if (strstartswith(l, "drm-cycles-", &keylen)) {
> 			idx = parse_engine(l + keylen, info,
> 					   name_map, map_entries, &val);
>-			UPDATE_ENGINE(idx, cycles, val);
>+			UPDATE_ENGINE(idx, cycles, val, DRM_FDINFO_UTILIZATION_CYCLES);
> 		} else if (strstartswith(l, "drm-total-", &keylen)) {
> 			idx = parse_region(l + keylen, info,
> 					   region_map, region_entries, &val);
>diff --git a/lib/igt_drm_fdinfo.h b/lib/igt_drm_fdinfo.h
>index 17a47f94a..3f641d79d 100644
>--- a/lib/igt_drm_fdinfo.h
>+++ b/lib/igt_drm_fdinfo.h
>@@ -41,6 +41,11 @@ struct drm_client_meminfo {
> 	uint64_t active;
> };
>
>+enum drm_fdinfo_utilization {
>+	DRM_FDINFO_UTILIZATION_ENGINE_TIME	= 1U << 0,
>+	DRM_FDINFO_UTILIZATION_CYCLES		= 1U << 1,
>+};
>+
> struct drm_client_fdinfo {
> 	char driver[128];
> 	char pdev[128];
>@@ -51,6 +56,9 @@ struct drm_client_fdinfo {
> 	unsigned int capacity[DRM_CLIENT_FDINFO_MAX_ENGINES];
> 	char names[DRM_CLIENT_FDINFO_MAX_ENGINES][256];
>
>+	/* mask of enum drm_fdinfo_utilization parsed from fdinfo */
>+	unsigned int utilization_mask;
>+
> 	/* drm-engine-<engine> values */
> 	uint64_t busy[DRM_CLIENT_FDINFO_MAX_ENGINES];
> 	/* drm-cycles-<engine> values */
>-- 
>2.43.0
>

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

* Re: (subset) [PATCH i-g-t v3 00/12] gputop: Add support for xe
  2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
                   ` (17 preceding siblings ...)
  2024-05-06 10:37 ` [PATCH i-g-t v3 00/12] gputop: Add support for xe Tvrtko Ursulin
@ 2024-05-08 16:25 ` Lucas De Marchi
  18 siblings, 0 replies; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-08 16:25 UTC (permalink / raw)
  To: igt-dev, Lucas De Marchi; +Cc: Umesh Nerlige Ramappa, Tvrtko Ursulin


On Fri, 03 May 2024 23:46:30 -0700, Lucas De Marchi wrote:
> v3 of https://lore.kernel.org/all/20240423234431.1959354-1-lucas.demarchi@intel.com
> 
> I moved some gputop eye candy to a separate series:
> https://lore.kernel.org/all/20240501173303.115737-1-lucas.demarchi@intel.com
> 
> This now also moves all the refactors to come as prep patches. The
> drm-total-cycles addition is  in the last 3 patches.
> 
> [...]

Thanks Tvrtko and Umesh for reviews. I applied the first patches 7 patches
after double checking CI results.

[01/13] lib/igt_drm_fdinfo: Extract ignore_space()
        commit: bab6f1688c844a2b6503a962c0e4ab6f6336339f
[02/13] lib/igt_drm_fdinfo: Allow any number of spaces before unit
        commit: 1e47a01ba9553a4e9c7fec1b374f6daa627f4771
[03/13] fixup! lib/igt_drm_fdinfo: Allow any number of spaces before unit
        (no commit info)

	^ this was squashed in patch 2, as it should had been before submitting.

[04/13] lib/igt_drm_fdinfo: Stop passing key twice
        commit: f5ff62103ec67dd232aecba613ec4211f2dcd98e
[05/13] lib/igt_drm_fdinfo: Remove prefix arg from parse functions
        commit: 01c1ddba269b6a1f8e96b4a504e81fbb2fcc9dde
[06/13] lib/igt_drm_fdinfo: Parse drm-cycles
        commit: 55281583000fae8d359ee985b168e59f614651f5

	^ additional whitespace removed

[07/13] lib/igt_drm_fdinfo: Start tracking available engine keys
        commit: 0df7b9b97f9da0e364f5ee30fe331004b8c86b56

Best regards,
-- 
Lucas De Marchi <lucas.demarchi@intel.com>

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

* Re: [PATCH i-g-t v3 08/13] treewide: Rename engine busyness variables
  2024-05-04  6:46 ` [PATCH i-g-t v3 08/13] treewide: Rename engine busyness variables Lucas De Marchi
@ 2024-05-08 18:45   ` Umesh Nerlige Ramappa
  2024-05-21 13:47     ` Lucas De Marchi
  0 siblings, 1 reply; 36+ messages in thread
From: Umesh Nerlige Ramappa @ 2024-05-08 18:45 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev, Tvrtko Ursulin

On Fri, May 03, 2024 at 11:46:38PM -0700, Lucas De Marchi wrote:
>In preparation to have more possible ways to calculate engine
>busyness/utilization, rename variables related to the current way: it's
>reading the "engine time in nsec" spent by the client on each engine.
>
>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>

IMO, I still prefer the earlier names since the word "busy" is ingrained 
in the PMU work that we have done so far :). I would have just done 
this:

s/c->val/c->delta_busy/ (since val is descriptive)
s/c->last/c->last_busy/ (since you intend to add cycles later)

The new counter would just have similar names, but with s/busy/cycles/.

It looks fine as is, so this is

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Regards,
Umesh

>---
> lib/igt_drm_clients.c    | 28 +++++++++++++------------
> lib/igt_drm_clients.h    |  8 ++++----
> lib/igt_drm_fdinfo.c     |  6 +++---
> lib/igt_drm_fdinfo.h     |  2 +-
> tests/intel/drm_fdinfo.c | 44 ++++++++++++++++++++--------------------
> tools/gputop.c           |  8 ++++----
> tools/intel_gpu_top.c    | 24 +++++++++++-----------
> 7 files changed, 61 insertions(+), 59 deletions(-)
>
>diff --git a/lib/igt_drm_clients.c b/lib/igt_drm_clients.c
>index ab0c2cec2..3f4265015 100644
>--- a/lib/igt_drm_clients.c
>+++ b/lib/igt_drm_clients.c
>@@ -103,19 +103,19 @@ igt_drm_client_update(struct igt_drm_client *c, unsigned int pid, char *name,
>
> 	/* Engines */
>
>-	c->last_runtime = 0;
>-	c->total_runtime = 0;
>+	c->agg_delta_engine_time = 0;
>+	c->total_engine_time = 0;
>
> 	for (i = 0; i <= c->engines->max_engine_id; i++) {
>-		assert(i < ARRAY_SIZE(info->busy));
>+		assert(i < ARRAY_SIZE(info->engine_time));
>
>-		if (info->busy[i] < c->last[i])
>+		if (info->engine_time[i] < c->last_engine_time[i])
> 			continue; /* It will catch up soon. */
>
>-		c->total_runtime += info->busy[i];
>-		c->val[i] = info->busy[i] - c->last[i];
>-		c->last_runtime += c->val[i];
>-		c->last[i] = info->busy[i];
>+		c->total_engine_time += info->engine_time[i];
>+		c->delta_engine_time[i] = info->engine_time[i] - c->last_engine_time[i];
>+		c->agg_delta_engine_time += c->delta_engine_time[i];
>+		c->last_engine_time[i] = info->engine_time[i];
> 	}
>
> 	/* Memory regions */
>@@ -183,9 +183,11 @@ igt_drm_client_add(struct igt_drm_clients *clients,
> 		c->engines->max_engine_id = i;
> 	}
>
>-	c->val = calloc(c->engines->max_engine_id + 1, sizeof(*c->val));
>-	c->last = calloc(c->engines->max_engine_id + 1, sizeof(*c->last));
>-	assert(c->val && c->last);
>+	c->delta_engine_time = calloc(c->engines->max_engine_id + 1,
>+			       sizeof(*c->delta_engine_time));
>+	c->last_engine_time = calloc(c->engines->max_engine_id + 1,
>+			      sizeof(*c->last_engine_time));
>+	assert(c->delta_engine_time && c->last_engine_time);
>
> 	/* Memory regions */
> 	c->regions = calloc(1, sizeof(*c->regions));
>@@ -223,8 +225,8 @@ void igt_drm_client_free(struct igt_drm_client *c, bool clear)
> 	}
> 	free(c->engines);
>
>-	free(c->val);
>-	free(c->last);
>+	free(c->delta_engine_time);
>+	free(c->last_engine_time);
>
> 	if (c->regions) {
> 		for (i = 0; i <= c->regions->max_region_id; i++)
>diff --git a/lib/igt_drm_clients.h b/lib/igt_drm_clients.h
>index 52888aedc..f2ff13182 100644
>--- a/lib/igt_drm_clients.h
>+++ b/lib/igt_drm_clients.h
>@@ -63,10 +63,10 @@ struct igt_drm_client {
> 	char name[24]; /* Process name of the owning PID. */
> 	char print_name[24]; /* Name without any non-printable characters. */
> 	unsigned int samples; /* Count of times scanning updated this client. */
>-	unsigned long total_runtime; /* Aggregate busyness on all engines since client start. */
>-	unsigned long last_runtime; /* Aggregate busyness on all engines since previous scan. */
>-	unsigned long *val; /* Array of engine busyness data, relative to previous scan. */
>-	uint64_t *last; /* Array of engine busyness data as parsed from fdinfo. */
>+	unsigned long total_engine_time; /* Aggregate of @agg_delta_engine_time, i.e. engine time on all engines since client start. */
>+	unsigned long agg_delta_engine_time; /* Aggregate of @delta_engine_time, i.e. engine time on all engines since previous scan. */
>+	unsigned long *delta_engine_time; /* Array of engine time data, relative to previous scan. */
>+	uint64_t *last_engine_time; /* Array of engine time data as parsed from fdinfo. */
> 	struct drm_client_meminfo *memory; /* Array of region memory utilisation as parsed from fdinfo. */
> };
>
>diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
>index 79b72c54d..9deeadd4e 100644
>--- a/lib/igt_drm_fdinfo.c
>+++ b/lib/igt_drm_fdinfo.c
>@@ -190,10 +190,10 @@ out:
> 		}							\
> 	} while (0)
>
>-#define UPDATE_ENGINE(idx, engine, val, utilization_key)		\
>+#define UPDATE_ENGINE(idx, member, val, utilization_key)		\
> 	do {								\
> 		if (idx >= 0) {						\
>-			info->engine[idx] = val;			\
>+			info->member[idx] = val;			\
> 			info->utilization_mask |= utilization_key;	\
> 			if (!info->capacity[idx])			\
> 					info->capacity[idx] = 1;	\
>@@ -260,7 +260,7 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
> 		} else if (strstartswith(l, "drm-engine-", &keylen)) {
> 			idx = parse_engine(l + keylen, info,
> 					   name_map, map_entries, &val);
>-			UPDATE_ENGINE(idx, busy, val, DRM_FDINFO_UTILIZATION_ENGINE_TIME);
>+			UPDATE_ENGINE(idx, engine_time, val, DRM_FDINFO_UTILIZATION_ENGINE_TIME);
> 		} else if (strstartswith(l, "drm-cycles-", &keylen)) {
> 			idx = parse_engine(l + keylen, info,
> 					   name_map, map_entries, &val);
>diff --git a/lib/igt_drm_fdinfo.h b/lib/igt_drm_fdinfo.h
>index 3f641d79d..ea90edd79 100644
>--- a/lib/igt_drm_fdinfo.h
>+++ b/lib/igt_drm_fdinfo.h
>@@ -60,7 +60,7 @@ struct drm_client_fdinfo {
> 	unsigned int utilization_mask;
>
> 	/* drm-engine-<engine> values */
>-	uint64_t busy[DRM_CLIENT_FDINFO_MAX_ENGINES];
>+	uint64_t engine_time[DRM_CLIENT_FDINFO_MAX_ENGINES];
> 	/* drm-cycles-<engine> values */
> 	uint64_t cycles[DRM_CLIENT_FDINFO_MAX_ENGINES];
>
>diff --git a/tests/intel/drm_fdinfo.c b/tests/intel/drm_fdinfo.c
>index 61c66079e..2d155180f 100644
>--- a/tests/intel/drm_fdinfo.c
>+++ b/tests/intel/drm_fdinfo.c
>@@ -192,14 +192,14 @@ static void end_spin(int fd, igt_spin_t *spin, unsigned int flags)
> 	}
> }
>
>-static uint64_t read_busy(int i915, unsigned int class)
>+static uint64_t read_engine_time(int i915, unsigned int class)
> {
> 	struct drm_client_fdinfo info = { };
>
> 	igt_assert(igt_parse_drm_fdinfo(i915, &info, engine_map,
> 					ARRAY_SIZE(engine_map), NULL, 0));
>
>-	return info.busy[class];
>+	return info.engine_time[class];
> }
>
> static void
>@@ -229,11 +229,11 @@ single(int gem_fd, const intel_ctx_t *ctx,
> 	else
> 		spin = NULL;
>
>-	val = read_busy(gem_fd, e->class);
>+	val = read_engine_time(gem_fd, e->class);
> 	slept = measured_usleep(batch_duration_ns / 1000);
> 	if (flags & TEST_TRAILING_IDLE)
> 		end_spin(spin_fd, spin, flags);
>-	val = read_busy(gem_fd, e->class) - val;
>+	val = read_engine_time(gem_fd, e->class) - val;
>
> 	if (flags & FLAG_HANG)
> 		igt_force_gpu_reset(spin_fd);
>@@ -250,9 +250,9 @@ single(int gem_fd, const intel_ctx_t *ctx,
> 		gem_quiescent_gpu(spin_fd);
> 		igt_assert(!gem_bo_busy(spin_fd, spin->handle));
>
>-		val = read_busy(gem_fd, e->class);
>+		val = read_engine_time(gem_fd, e->class);
> 		slept = measured_usleep(batch_duration_ns / 1000);
>-		val = read_busy(gem_fd, e->class) - val;
>+		val = read_engine_time(gem_fd, e->class) - val;
>
> 		assert_within_epsilon(val, 0, tolerance);
> 	}
>@@ -282,14 +282,14 @@ static void log_busy(unsigned int num_engines, uint64_t *val)
> 	igt_info("%s", buf);
> }
>
>-static void read_busy_all(int i915, uint64_t *val)
>+static void read_engine_time_all(int i915, uint64_t *val)
> {
> 	struct drm_client_fdinfo info = { };
>
> 	igt_assert(igt_parse_drm_fdinfo(i915, &info, engine_map,
> 					ARRAY_SIZE(engine_map), NULL, 0));
>
>-	memcpy(val, info.busy, sizeof(info.busy));
>+	memcpy(val, info.engine_time, sizeof(info.engine_time));
> }
>
> static void
>@@ -312,11 +312,11 @@ busy_check_all(int gem_fd, const intel_ctx_t *ctx,
>
> 	spin = igt_sync_spin(gem_fd, ahnd, ctx, e);
>
>-	read_busy_all(gem_fd, tval[0]);
>+	read_engine_time_all(gem_fd, tval[0]);
> 	slept = measured_usleep(batch_duration_ns / 1000);
> 	if (flags & TEST_TRAILING_IDLE)
> 		end_spin(gem_fd, spin, flags);
>-	read_busy_all(gem_fd, tval[1]);
>+	read_engine_time_all(gem_fd, tval[1]);
>
> 	end_spin(gem_fd, spin, FLAG_SYNC);
> 	igt_spin_free(gem_fd, spin);
>@@ -388,11 +388,11 @@ most_busy_check_all(int gem_fd, const intel_ctx_t *ctx,
> 	/* Small delay to allow engines to start. */
> 	usleep(__igt_sync_spin_wait(gem_fd, spin) * num_engines / 1e3);
>
>-	read_busy_all(gem_fd, tval[0]);
>+	read_engine_time_all(gem_fd, tval[0]);
> 	slept = measured_usleep(batch_duration_ns / 1000);
> 	if (flags & TEST_TRAILING_IDLE)
> 		end_spin(gem_fd, spin, flags);
>-	read_busy_all(gem_fd, tval[1]);
>+	read_engine_time_all(gem_fd, tval[1]);
>
> 	end_spin(gem_fd, spin, FLAG_SYNC);
> 	igt_spin_free(gem_fd, spin);
>@@ -443,11 +443,11 @@ all_busy_check_all(int gem_fd, const intel_ctx_t *ctx,
> 	/* Small delay to allow engines to start. */
> 	usleep(__igt_sync_spin_wait(gem_fd, spin) * num_engines / 1e3);
>
>-	read_busy_all(gem_fd, tval[0]);
>+	read_engine_time_all(gem_fd, tval[0]);
> 	slept = measured_usleep(batch_duration_ns / 1000);
> 	if (flags & TEST_TRAILING_IDLE)
> 		end_spin(gem_fd, spin, flags);
>-	read_busy_all(gem_fd, tval[1]);
>+	read_engine_time_all(gem_fd, tval[1]);
>
> 	end_spin(gem_fd, spin, FLAG_SYNC);
> 	igt_spin_free(gem_fd, spin);
>@@ -589,11 +589,11 @@ virtual(int i915, const intel_ctx_cfg_t *base_cfg, unsigned int flags)
> 			else
> 				spin = NULL;
>
>-			val = read_busy(i915, class);
>+			val = read_engine_time(i915, class);
> 			slept = measured_usleep(batch_duration_ns / 1000);
> 			if (flags & TEST_TRAILING_IDLE)
> 				end_spin(i915, spin, flags);
>-			val = read_busy(i915, class) - val;
>+			val = read_engine_time(i915, class) - val;
>
> 			if (flags & FLAG_HANG)
> 				igt_force_gpu_reset(i915);
>@@ -610,10 +610,10 @@ virtual(int i915, const intel_ctx_cfg_t *base_cfg, unsigned int flags)
> 				gem_quiescent_gpu(i915);
> 				igt_assert(!gem_bo_busy(i915, spin->handle));
>
>-				val = read_busy(i915, class);
>+				val = read_engine_time(i915, class);
> 				slept = measured_usleep(batch_duration_ns /
> 							1000);
>-				val = read_busy(i915, class) - val;
>+				val = read_engine_time(i915, class) - val;
>
> 				assert_within_epsilon(val, 0, tolerance);
> 			}
>@@ -700,11 +700,11 @@ virtual_all(int i915, const intel_ctx_cfg_t *base_cfg, unsigned int flags)
> 		/* Small delay to allow engines to start. */
> 		usleep(__igt_sync_spin_wait(i915, spin) * count / 1e3);
>
>-		val = read_busy(i915, class);
>+		val = read_engine_time(i915, class);
> 		slept = measured_usleep(batch_duration_ns / 1000);
> 		if (flags & TEST_TRAILING_IDLE)
> 			end_spin(i915, spin, flags);
>-		val = read_busy(i915, class) - val;
>+		val = read_engine_time(i915, class) - val;
>
> 		if (flags & FLAG_HANG)
> 			igt_force_gpu_reset(i915);
>@@ -718,10 +718,10 @@ virtual_all(int i915, const intel_ctx_cfg_t *base_cfg, unsigned int flags)
> 			gem_quiescent_gpu(i915);
> 			igt_assert(!gem_bo_busy(i915, spin->handle));
>
>-			val = read_busy(i915, class);
>+			val = read_engine_time(i915, class);
> 			slept = measured_usleep(batch_duration_ns /
> 						1000);
>-			val = read_busy(i915, class) - val;
>+			val = read_engine_time(i915, class) - val;
>
> 			assert_within_epsilon(val, 0, tolerance);
> 		}
>diff --git a/tools/gputop.c b/tools/gputop.c
>index 8cec951b4..80bc94be4 100644
>--- a/tools/gputop.c
>+++ b/tools/gputop.c
>@@ -176,7 +176,7 @@ print_client(struct igt_drm_client *c, struct igt_drm_client **prevc,
> 	int len;
>
> 	/* Filter out idle clients. */
>-	if (!c->total_runtime || c->samples < 2)
>+	if (!c->total_engine_time || c->samples < 2)
> 		return lines;
>
> 	/* Print header when moving to a different DRM card. */
>@@ -208,7 +208,7 @@ print_client(struct igt_drm_client *c, struct igt_drm_client **prevc,
> 		if (!c->engines->capacity[i])
> 			continue;
>
>-		pct = (double)c->val[i] / period_us / 1e3 * 100 /
>+		pct = (double)c->delta_engine_time[i] / period_us / 1e3 * 100 /
> 		      c->engines->capacity[i];
>
> 		/*
>@@ -257,8 +257,8 @@ static int client_cmp(const void *_a, const void *_b, void *unused)
> 	 * Within buckets sort by last sampling period aggregated runtime, with
> 	 * client id as a tie-breaker.
> 	 */
>-	val_a = a->last_runtime;
>-	val_b = b->last_runtime;
>+	val_a = a->agg_delta_engine_time;
>+	val_b = b->agg_delta_engine_time;
> 	if (val_a == val_b)
> 		return __client_id_cmp(a, b);
> 	else if (val_b > val_a)
>diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c
>index 5b4f94d7d..35122493c 100644
>--- a/tools/intel_gpu_top.c
>+++ b/tools/intel_gpu_top.c
>@@ -793,7 +793,7 @@ static int client_last_cmp(const void *_a, const void *_b, void *unused)
> {
> 	const struct igt_drm_client *a = _a;
> 	const struct igt_drm_client *b = _b;
>-	long val_a = a->last_runtime, val_b = b->last_runtime;
>+	long val_a = a->agg_delta_engine_time, val_b = b->agg_delta_engine_time;
>
> 	/*
> 	 * Sort clients in descending order of runtime in the previous sampling
>@@ -812,7 +812,7 @@ static int client_total_cmp(const void *_a, const void *_b, void *unused)
> {
> 	const struct igt_drm_client *a = _a;
> 	const struct igt_drm_client *b = _b;
>-	long val_a = a->total_runtime, val_b = b->total_runtime;
>+	long val_a = a->total_engine_time, val_b = b->total_engine_time;
>
> 	if (val_a == val_b)
> 		return __client_id_cmp(a, b);
>@@ -893,9 +893,9 @@ static struct igt_drm_clients *display_clients(struct igt_drm_clients *clients)
> 			strcpy(ac->pid_str, c->pid_str);
> 			strcpy(ac->print_name, c->print_name);
> 			ac->engines = c->engines;
>-			ac->val = calloc(c->engines->max_engine_id + 1,
>-					 sizeof(ac->val[0]));
>-			assert(ac->val);
>+			ac->delta_engine_time = calloc(c->engines->max_engine_id + 1,
>+						sizeof(ac->delta_engine_time[0]));
>+			assert(ac->delta_engine_time);
> 			ac->regions = c->regions;
> 			ac->memory = calloc(c->regions->max_region_id + 1,
> 					    sizeof(ac->memory[0]));
>@@ -908,11 +908,11 @@ static struct igt_drm_clients *display_clients(struct igt_drm_clients *clients)
> 			continue;
>
> 		ac->samples = 2; /* All what matters for display. */
>-		ac->total_runtime += c->total_runtime;
>-		ac->last_runtime += c->last_runtime;
>+		ac->total_engine_time += c->total_engine_time;
>+		ac->agg_delta_engine_time += c->agg_delta_engine_time;
>
> 		for (i = 0; i <= c->engines->max_engine_id; i++)
>-			ac->val[i] += c->val[i];
>+			ac->delta_engine_time[i] += c->delta_engine_time[i];
>
> 		for (i = 0; i <= c->regions->max_region_id; i++) {
> 			ac->memory[i].total += c->memory[i].total;
>@@ -946,7 +946,7 @@ static void free_display_clients(struct igt_drm_clients *clients)
> 	 * or borrowed fields which we don't want the library to try and free.
> 	 */
> 	igt_for_each_drm_client(clients, c, tmp) {
>-		free(c->val);
>+		free(c->delta_engine_time);
> 		free(c->memory);
> 	}
>
>@@ -2120,7 +2120,7 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li
> 	int len;
>
> 	if (output_mode == INTERACTIVE) {
>-		if (filter_idle && (!c->total_runtime || c->samples < 2))
>+		if (filter_idle && (!c->total_engine_time || c->samples < 2))
> 			return lines;
>
> 		lines++;
>@@ -2161,7 +2161,7 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li
> 				continue;
> 			}
>
>-			pct = (double)c->val[i] / period_us / 1e3 * 100;
>+			pct = (double)c->delta_engine_time[i] / period_us / 1e3 * 100;
>
> 			/*
> 			 * Guard against possible time-drift between sampling
>@@ -2235,7 +2235,7 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li
> 					 iclients->classes.names[i]);
> 				pops->open_struct(buf);
>
>-				pct = (double)c->val[i] / period_us / 1e3 * 100;
>+				pct = (double)c->delta_engine_time[i] / period_us / 1e3 * 100;
> 				snprintf(buf, sizeof(buf), "%f", pct);
> 				__json_add_member("busy", buf);
>
>-- 
>2.43.0
>

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

* Re: [PATCH i-g-t v3 09/13] lib/igt_drm_clients: Move engine fields to substruct
  2024-05-04  6:46 ` [PATCH i-g-t v3 09/13] lib/igt_drm_clients: Move engine fields to substruct Lucas De Marchi
@ 2024-05-08 18:45   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 36+ messages in thread
From: Umesh Nerlige Ramappa @ 2024-05-08 18:45 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev, Tvrtko Ursulin

On Fri, May 03, 2024 at 11:46:39PM -0700, Lucas De Marchi wrote:
>Instead of keep adding arrays, move all the arrays indexed by engine to
>a substruct.
>
>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>---
> lib/igt_drm_clients.c | 20 +++++++++-----------
> lib/igt_drm_clients.h | 12 ++++++++----
> tools/gputop.c        |  2 +-
> tools/intel_gpu_top.c | 14 +++++++-------
> 4 files changed, 25 insertions(+), 23 deletions(-)
>
>diff --git a/lib/igt_drm_clients.c b/lib/igt_drm_clients.c
>index 3f4265015..91d71a7bd 100644
>--- a/lib/igt_drm_clients.c
>+++ b/lib/igt_drm_clients.c
>@@ -109,13 +109,14 @@ igt_drm_client_update(struct igt_drm_client *c, unsigned int pid, char *name,
> 	for (i = 0; i <= c->engines->max_engine_id; i++) {
> 		assert(i < ARRAY_SIZE(info->engine_time));
>
>-		if (info->engine_time[i] < c->last_engine_time[i])
>+		if (info->engine_time[i] < c->utilization[i].last_engine_time)
> 			continue; /* It will catch up soon. */
>
> 		c->total_engine_time += info->engine_time[i];
>-		c->delta_engine_time[i] = info->engine_time[i] - c->last_engine_time[i];
>-		c->agg_delta_engine_time += c->delta_engine_time[i];
>-		c->last_engine_time[i] = info->engine_time[i];
>+		c->utilization[i].delta_engine_time =
>+			info->engine_time[i] - c->utilization[i].last_engine_time;
>+		c->agg_delta_engine_time += c->utilization[i].delta_engine_time;
>+		c->utilization[i].last_engine_time = info->engine_time[i];
> 	}
>
> 	/* Memory regions */
>@@ -183,11 +184,9 @@ igt_drm_client_add(struct igt_drm_clients *clients,
> 		c->engines->max_engine_id = i;
> 	}
>
>-	c->delta_engine_time = calloc(c->engines->max_engine_id + 1,
>-			       sizeof(*c->delta_engine_time));
>-	c->last_engine_time = calloc(c->engines->max_engine_id + 1,
>-			      sizeof(*c->last_engine_time));
>-	assert(c->delta_engine_time && c->last_engine_time);
>+	c->utilization = calloc(c->engines->max_engine_id + 1,
>+				sizeof(*c->utilization));
>+	assert(c->utilization);
>
> 	/* Memory regions */
> 	c->regions = calloc(1, sizeof(*c->regions));
>@@ -225,8 +224,7 @@ void igt_drm_client_free(struct igt_drm_client *c, bool clear)
> 	}
> 	free(c->engines);
>
>-	free(c->delta_engine_time);
>-	free(c->last_engine_time);
>+	free(c->utilization);
>
> 	if (c->regions) {
> 		for (i = 0; i <= c->regions->max_region_id; i++)
>diff --git a/lib/igt_drm_clients.h b/lib/igt_drm_clients.h
>index f2ff13182..d44daa6dc 100644
>--- a/lib/igt_drm_clients.h
>+++ b/lib/igt_drm_clients.h
>@@ -63,10 +63,14 @@ struct igt_drm_client {
> 	char name[24]; /* Process name of the owning PID. */
> 	char print_name[24]; /* Name without any non-printable characters. */
> 	unsigned int samples; /* Count of times scanning updated this client. */
>-	unsigned long total_engine_time; /* Aggregate of @agg_delta_engine_time, i.e. engine time on all engines since client start. */
>-	unsigned long agg_delta_engine_time; /* Aggregate of @delta_engine_time, i.e. engine time on all engines since previous scan. */
>-	unsigned long *delta_engine_time; /* Array of engine time data, relative to previous scan. */
>-	uint64_t *last_engine_time; /* Array of engine time data as parsed from fdinfo. */
>+
>+	unsigned long total_engine_time; /* Aggregate of @utilization.agg_delta_engine_time, i.e. engine time on all engines since client start. */
>+	unsigned long agg_delta_engine_time; /* Aggregate of @utilization.delta_engine_time, i.e. engine time on all engines since previous scan. */
>+	struct igt_drm_client_utilization {
>+		unsigned long delta_engine_time; /* Engine time data, relative to previous scan. */
>+		uint64_t last_engine_time; /* Engine time data as parsed from fdinfo. */
>+	} *utilization; /* Array of engine utilization */
>+
> 	struct drm_client_meminfo *memory; /* Array of region memory utilisation as parsed from fdinfo. */
> };
>
>diff --git a/tools/gputop.c b/tools/gputop.c
>index 80bc94be4..aa88a8021 100644
>--- a/tools/gputop.c
>+++ b/tools/gputop.c
>@@ -208,7 +208,7 @@ print_client(struct igt_drm_client *c, struct igt_drm_client **prevc,
> 		if (!c->engines->capacity[i])
> 			continue;
>
>-		pct = (double)c->delta_engine_time[i] / period_us / 1e3 * 100 /
>+		pct = (double)c->utilization[i].delta_engine_time / period_us / 1e3 * 100 /
> 		      c->engines->capacity[i];
>
> 		/*
>diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c
>index 35122493c..9b65ae4eb 100644
>--- a/tools/intel_gpu_top.c
>+++ b/tools/intel_gpu_top.c
>@@ -893,9 +893,9 @@ static struct igt_drm_clients *display_clients(struct igt_drm_clients *clients)
> 			strcpy(ac->pid_str, c->pid_str);
> 			strcpy(ac->print_name, c->print_name);
> 			ac->engines = c->engines;
>-			ac->delta_engine_time = calloc(c->engines->max_engine_id + 1,
>-						sizeof(ac->delta_engine_time[0]));
>-			assert(ac->delta_engine_time);
>+			ac->utilization = calloc(c->engines->max_engine_id + 1,
>+						 sizeof(*ac->utilization));
>+			assert(ac->utilization);
> 			ac->regions = c->regions;
> 			ac->memory = calloc(c->regions->max_region_id + 1,
> 					    sizeof(ac->memory[0]));
>@@ -912,7 +912,7 @@ static struct igt_drm_clients *display_clients(struct igt_drm_clients *clients)
> 		ac->agg_delta_engine_time += c->agg_delta_engine_time;
>
> 		for (i = 0; i <= c->engines->max_engine_id; i++)
>-			ac->delta_engine_time[i] += c->delta_engine_time[i];
>+			ac->utilization[i].delta_engine_time += c->utilization[i].delta_engine_time;
>
> 		for (i = 0; i <= c->regions->max_region_id; i++) {
> 			ac->memory[i].total += c->memory[i].total;
>@@ -946,7 +946,7 @@ static void free_display_clients(struct igt_drm_clients *clients)
> 	 * or borrowed fields which we don't want the library to try and free.
> 	 */
> 	igt_for_each_drm_client(clients, c, tmp) {
>-		free(c->delta_engine_time);
>+		free(c->utilization);
> 		free(c->memory);
> 	}
>
>@@ -2161,7 +2161,7 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li
> 				continue;
> 			}
>
>-			pct = (double)c->delta_engine_time[i] / period_us / 1e3 * 100;
>+			pct = (double)c->utilization[i].delta_engine_time / period_us / 1e3 * 100;
>
> 			/*
> 			 * Guard against possible time-drift between sampling
>@@ -2235,7 +2235,7 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li
> 					 iclients->classes.names[i]);
> 				pops->open_struct(buf);
>
>-				pct = (double)c->delta_engine_time[i] / period_us / 1e3 * 100;
>+				pct = (double)c->utilization[i].delta_engine_time / period_us / 1e3 * 100;
> 				snprintf(buf, sizeof(buf), "%f", pct);
> 				__json_add_member("busy", buf);
>
>-- 
>2.43.0
>

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

* Re: [PATCH i-g-t v3 10/13] lib/igt_drm_clients: Record drm-cycles
  2024-05-04  6:46 ` [PATCH i-g-t v3 10/13] lib/igt_drm_clients: Record drm-cycles Lucas De Marchi
@ 2024-05-08 18:48   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 36+ messages in thread
From: Umesh Nerlige Ramappa @ 2024-05-08 18:48 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev, Tvrtko Ursulin

On Fri, May 03, 2024 at 11:46:40PM -0700, Lucas De Marchi wrote:
>Record drm-cycles and delta between 2 sample updates, just like done
>with engine time. This also duplicates the utilization_mask so it's
>available to the next layer.
>
>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>---
> lib/igt_drm_clients.c | 30 ++++++++++++++++++++++--------
> lib/igt_drm_clients.h | 10 ++++++++++
> 2 files changed, 32 insertions(+), 8 deletions(-)
>
>diff --git a/lib/igt_drm_clients.c b/lib/igt_drm_clients.c
>index 91d71a7bd..fbbb763f7 100644
>--- a/lib/igt_drm_clients.c
>+++ b/lib/igt_drm_clients.c
>@@ -105,18 +105,32 @@ igt_drm_client_update(struct igt_drm_client *c, unsigned int pid, char *name,
>
> 	c->agg_delta_engine_time = 0;
> 	c->total_engine_time = 0;
>+	c->agg_delta_cycles = 0;
>+	c->total_cycles = 0;
>
> 	for (i = 0; i <= c->engines->max_engine_id; i++) {
> 		assert(i < ARRAY_SIZE(info->engine_time));
>+		assert(i < ARRAY_SIZE(info->cycles));

2 asserts to check i may be a bit much. Optionally, the second assert 
could just ensure (at compile time, if possible) that the array sizes 
are same for cycles and engine_time.

Either ways, this is 

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Umesh
>+
>+		if (info->utilization_mask & DRM_FDINFO_UTILIZATION_ENGINE_TIME &&
>+		    info->engine_time[i] >= c->utilization[i].last_engine_time) {
>+			c->utilization_mask |= IGT_DRM_CLIENT_UTILIZATION_ENGINE_TIME;
>+			c->total_engine_time += info->engine_time[i];
>+			c->utilization[i].delta_engine_time =
>+				info->engine_time[i] - c->utilization[i].last_engine_time;
>+			c->agg_delta_engine_time += c->utilization[i].delta_engine_time;
>+			c->utilization[i].last_engine_time = info->engine_time[i];
>+		}
>
>-		if (info->engine_time[i] < c->utilization[i].last_engine_time)
>-			continue; /* It will catch up soon. */
>-
>-		c->total_engine_time += info->engine_time[i];
>-		c->utilization[i].delta_engine_time =
>-			info->engine_time[i] - c->utilization[i].last_engine_time;
>-		c->agg_delta_engine_time += c->utilization[i].delta_engine_time;
>-		c->utilization[i].last_engine_time = info->engine_time[i];
>+		if (info->utilization_mask & DRM_FDINFO_UTILIZATION_CYCLES &&
>+		    info->cycles[i] >= c->utilization[i].last_cycles) {
>+			c->utilization_mask |= IGT_DRM_CLIENT_UTILIZATION_CYCLES;
>+			c->total_cycles += info->cycles[i];
>+			c->utilization[i].delta_cycles =
>+				info->cycles[i] - c->utilization[i].last_cycles;
>+			c->agg_delta_cycles += c->utilization[i].delta_cycles;
>+			c->utilization[i].last_cycles = info->cycles[i];
>+		}
> 	}
>
> 	/* Memory regions */
>diff --git a/lib/igt_drm_clients.h b/lib/igt_drm_clients.h
>index d44daa6dc..514c09e71 100644
>--- a/lib/igt_drm_clients.h
>+++ b/lib/igt_drm_clients.h
>@@ -33,6 +33,11 @@ enum igt_drm_client_status {
> 	IGT_DRM_CLIENT_PROBE
> };
>
>+enum igt_drm_client_utilization_type {
>+	IGT_DRM_CLIENT_UTILIZATION_ENGINE_TIME	= 1U << 0,
>+	IGT_DRM_CLIENT_UTILIZATION_CYCLES	= 1U << 1,
>+};
>+
> struct igt_drm_client_engines {
> 	unsigned int num_engines; /* Number of discovered active engines. */
> 	unsigned int max_engine_id; /* Largest engine index discovered.
>@@ -64,11 +69,16 @@ struct igt_drm_client {
> 	char print_name[24]; /* Name without any non-printable characters. */
> 	unsigned int samples; /* Count of times scanning updated this client. */
>
>+	uint32_t utilization_mask; /* mask of enum igt_drm_client_utilization_type */
> 	unsigned long total_engine_time; /* Aggregate of @utilization.agg_delta_engine_time, i.e. engine time on all engines since client start. */
> 	unsigned long agg_delta_engine_time; /* Aggregate of @utilization.delta_engine_time, i.e. engine time on all engines since previous scan. */
>+	unsigned long total_cycles; /* Aggregate of @utilization.agg_delta_cycles, i.e. engine time on all engines since client start. */
>+	unsigned long agg_delta_cycles; /* Aggregate of @utilization.delta_cycles, i.e. engine time on all engines since previous scan. */
> 	struct igt_drm_client_utilization {
> 		unsigned long delta_engine_time; /* Engine time data, relative to previous scan. */
>+		unsigned long delta_cycles; /* Engine cycles data, relative to previous scan. */
> 		uint64_t last_engine_time; /* Engine time data as parsed from fdinfo. */
>+		uint64_t last_cycles; /* Engine cycles data as parsed from fdinfo. */
> 	} *utilization; /* Array of engine utilization */
>
> 	struct drm_client_meminfo *memory; /* Array of region memory utilisation as parsed from fdinfo. */
>-- 
>2.43.0
>

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

* Re: [PATCH i-g-t v3 11/13] lib/igt_drm_fdinfo: Parse drm-total-cycles
  2024-05-04  6:46 ` [PATCH i-g-t v3 11/13] lib/igt_drm_fdinfo: Parse drm-total-cycles Lucas De Marchi
@ 2024-05-08 18:49   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 36+ messages in thread
From: Umesh Nerlige Ramappa @ 2024-05-08 18:49 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev, Tvrtko Ursulin

On Fri, May 03, 2024 at 11:46:41PM -0700, Lucas De Marchi wrote:
>Parse drm-total-cycles and annotate what are the possible engine
>utilization types that can be used. Currently there are 2 possible ways
>to calculate utilization:
>
>1) via drm-engine, that uses the time and derive the utilization by
>   comparing to the CPU time
>2) via drm-cycles + drm-total-cycles, that uses the GPU time
>
>igt_drm_fdinfo just marks the presence of the keys, letting the caller
>decide which method to use.
>
>It is assumed that if any drm-engine, drm-cycles or drm-total-cycles is
>available, it's available for all engines with non-zero utilization.
>
>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>

lgtm,

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Umesh
>---
> lib/igt_drm_fdinfo.c | 4 ++++
> lib/igt_drm_fdinfo.h | 3 +++
> 2 files changed, 7 insertions(+)
>
>diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
>index 9deeadd4e..f45d0440e 100644
>--- a/lib/igt_drm_fdinfo.c
>+++ b/lib/igt_drm_fdinfo.c
>@@ -265,6 +265,10 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
> 			idx = parse_engine(l + keylen, info,
> 					   name_map, map_entries, &val);
> 			UPDATE_ENGINE(idx, cycles, val, DRM_FDINFO_UTILIZATION_CYCLES);
>+		} else if (strstartswith(l, "drm-total-cycles-", &keylen)) {
>+			idx = parse_engine(l + keylen, info,
>+					   name_map, map_entries, &val);
>+			UPDATE_ENGINE(idx, total_cycles, val, DRM_FDINFO_UTILIZATION_TOTAL_CYCLES);
> 		} else if (strstartswith(l, "drm-total-", &keylen)) {
> 			idx = parse_region(l + keylen, info,
> 					   region_map, region_entries, &val);
>diff --git a/lib/igt_drm_fdinfo.h b/lib/igt_drm_fdinfo.h
>index ea90edd79..35f43305b 100644
>--- a/lib/igt_drm_fdinfo.h
>+++ b/lib/igt_drm_fdinfo.h
>@@ -44,6 +44,7 @@ struct drm_client_meminfo {
> enum drm_fdinfo_utilization {
> 	DRM_FDINFO_UTILIZATION_ENGINE_TIME	= 1U << 0,
> 	DRM_FDINFO_UTILIZATION_CYCLES		= 1U << 1,
>+	DRM_FDINFO_UTILIZATION_TOTAL_CYCLES	= 1U << 2,
> };
>
> struct drm_client_fdinfo {
>@@ -63,6 +64,8 @@ struct drm_client_fdinfo {
> 	uint64_t engine_time[DRM_CLIENT_FDINFO_MAX_ENGINES];
> 	/* drm-cycles-<engine> values */
> 	uint64_t cycles[DRM_CLIENT_FDINFO_MAX_ENGINES];
>+	/* drm-total-cycles-<engine> values */
>+	uint64_t total_cycles[DRM_CLIENT_FDINFO_MAX_ENGINES];
>
> 	unsigned int num_regions;
> 	unsigned int last_region_index;
>-- 
>2.43.0
>

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

* Re: [PATCH i-g-t v3 12/13] lib/igt_drm_clients: Record total cycles
  2024-05-04  6:46 ` [PATCH i-g-t v3 12/13] lib/igt_drm_clients: Record total cycles Lucas De Marchi
@ 2024-05-08 19:01   ` Umesh Nerlige Ramappa
  2024-05-08 19:07     ` Umesh Nerlige Ramappa
  0 siblings, 1 reply; 36+ messages in thread
From: Umesh Nerlige Ramappa @ 2024-05-08 19:01 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev, Tvrtko Ursulin

On Fri, May 03, 2024 at 11:46:42PM -0700, Lucas De Marchi wrote:
>If the fdinfo data indicates there's drm-total-cycles, use it to
>propagate the engine utilization. Also add an assert in intel_gpu_top
>since it only knows how to deal with with engine time busyness.
>
>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>---
> lib/igt_drm_clients.c | 13 +++++++++++++
> lib/igt_drm_clients.h |  5 +++++
> 2 files changed, 18 insertions(+)
>
>diff --git a/lib/igt_drm_clients.c b/lib/igt_drm_clients.c
>index fbbb763f7..105c7d298 100644
>--- a/lib/igt_drm_clients.c
>+++ b/lib/igt_drm_clients.c
>@@ -107,10 +107,13 @@ igt_drm_client_update(struct igt_drm_client *c, unsigned int pid, char *name,
> 	c->total_engine_time = 0;
> 	c->agg_delta_cycles = 0;
> 	c->total_cycles = 0;
>+	c->agg_delta_total_cycles = 0;
>+	c->total_total_cycles = 0;
>
> 	for (i = 0; i <= c->engines->max_engine_id; i++) {
> 		assert(i < ARRAY_SIZE(info->engine_time));
> 		assert(i < ARRAY_SIZE(info->cycles));
>+		assert(i < ARRAY_SIZE(info->total_cycles));

same comment as before - maybe just ensure array sizes are the same.

>
> 		if (info->utilization_mask & DRM_FDINFO_UTILIZATION_ENGINE_TIME &&
> 		    info->engine_time[i] >= c->utilization[i].last_engine_time) {
>@@ -131,6 +134,16 @@ igt_drm_client_update(struct igt_drm_client *c, unsigned int pid, char *name,
> 			c->agg_delta_cycles += c->utilization[i].delta_cycles;
> 			c->utilization[i].last_cycles = info->cycles[i];
> 		}
>+
>+		if (info->utilization_mask & DRM_FDINFO_UTILIZATION_CYCLES &&

This should be

s/DRM_FDINFO_UTILIZATION_CYCLES/DRM_FDINFO_UTILIZATION_TOTAL_CYCLES/

or a new name if you decide to change things based on below comment.

>+		    info->total_cycles[i] >= c->utilization[i].last_total_cycles) {
>+			c->utilization_mask |= IGT_DRM_CLIENT_UTILIZATION_TOTAL_CYCLES;
>+			c->total_total_cycles += info->total_cycles[i];
>+			c->utilization[i].delta_total_cycles =
>+				info->total_cycles[i] - c->utilization[i].last_total_cycles;
>+			c->agg_delta_total_cycles += c->utilization[i].delta_total_cycles;
>+			c->utilization[i].last_total_cycles = info->total_cycles[i];
>+		}
> 	}
>
> 	/* Memory regions */
>diff --git a/lib/igt_drm_clients.h b/lib/igt_drm_clients.h
>index 514c09e71..946d709de 100644
>--- a/lib/igt_drm_clients.h
>+++ b/lib/igt_drm_clients.h
>@@ -36,6 +36,7 @@ enum igt_drm_client_status {
> enum igt_drm_client_utilization_type {
> 	IGT_DRM_CLIENT_UTILIZATION_ENGINE_TIME	= 1U << 0,
> 	IGT_DRM_CLIENT_UTILIZATION_CYCLES	= 1U << 1,
>+	IGT_DRM_CLIENT_UTILIZATION_TOTAL_CYCLES	= 1U << 2,
> };
>
> struct igt_drm_client_engines {
>@@ -74,11 +75,15 @@ struct igt_drm_client {
> 	unsigned long agg_delta_engine_time; /* Aggregate of @utilization.delta_engine_time, i.e. engine time on all engines since previous scan. */
> 	unsigned long total_cycles; /* Aggregate of @utilization.agg_delta_cycles, i.e. engine time on all engines since client start. */
> 	unsigned long agg_delta_cycles; /* Aggregate of @utilization.delta_cycles, i.e. engine time on all engines since previous scan. */
>+	unsigned long total_total_cycles; /* Aggregate of @utilization.agg_delta_total_cycles, i.e. engine time on all engines since client start. */

total_total_cycles :). I can understand that since I am looking at the 
patches in order, but there might be room for another rename, maybe:

s/c->total_cycles/c->total_engine_cycles/ (since this is how may cycles 
the client ran on the engine)

s/c->total_total_cycles/c->total_<something>_cycles/ (where <something> 
could be - "available" or "gpu".

Regards,
Umesh

>+	unsigned long agg_delta_total_cycles; /* Aggregate of @utilization.delta_total_cycles, i.e. engine time on all engines since previous scan. */
> 	struct igt_drm_client_utilization {
> 		unsigned long delta_engine_time; /* Engine time data, relative to previous scan. */
> 		unsigned long delta_cycles; /* Engine cycles data, relative to previous scan. */
>+		unsigned long delta_total_cycles; /* Engine total cycles data, relative to previous scan. */
> 		uint64_t last_engine_time; /* Engine time data as parsed from fdinfo. */
> 		uint64_t last_cycles; /* Engine cycles data as parsed from fdinfo. */
>+		uint64_t last_total_cycles; /* Engine total cycles data as parsed from fdinfo. */
> 	} *utilization; /* Array of engine utilization */
>
> 	struct drm_client_meminfo *memory; /* Array of region memory utilisation as parsed from fdinfo. */
>-- 
>2.43.0
>

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

* Re: [PATCH i-g-t v3 12/13] lib/igt_drm_clients: Record total cycles
  2024-05-08 19:01   ` Umesh Nerlige Ramappa
@ 2024-05-08 19:07     ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 36+ messages in thread
From: Umesh Nerlige Ramappa @ 2024-05-08 19:07 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev, Tvrtko Ursulin

On Wed, May 08, 2024 at 12:01:09PM -0700, Umesh Nerlige Ramappa wrote:
>On Fri, May 03, 2024 at 11:46:42PM -0700, Lucas De Marchi wrote:
>>If the fdinfo data indicates there's drm-total-cycles, use it to
>>propagate the engine utilization. Also add an assert in intel_gpu_top
>>since it only knows how to deal with with engine time busyness.
>>
>>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>>---
>>lib/igt_drm_clients.c | 13 +++++++++++++
>>lib/igt_drm_clients.h |  5 +++++
>>2 files changed, 18 insertions(+)
>>
>>diff --git a/lib/igt_drm_clients.c b/lib/igt_drm_clients.c
>>index fbbb763f7..105c7d298 100644
>>--- a/lib/igt_drm_clients.c
>>+++ b/lib/igt_drm_clients.c
>>@@ -107,10 +107,13 @@ igt_drm_client_update(struct igt_drm_client *c, unsigned int pid, char *name,
>>	c->total_engine_time = 0;
>>	c->agg_delta_cycles = 0;
>>	c->total_cycles = 0;
>>+	c->agg_delta_total_cycles = 0;
>>+	c->total_total_cycles = 0;
>>
>>	for (i = 0; i <= c->engines->max_engine_id; i++) {
>>		assert(i < ARRAY_SIZE(info->engine_time));
>>		assert(i < ARRAY_SIZE(info->cycles));
>>+		assert(i < ARRAY_SIZE(info->total_cycles));
>
>same comment as before - maybe just ensure array sizes are the same.
>
>>
>>		if (info->utilization_mask & DRM_FDINFO_UTILIZATION_ENGINE_TIME &&
>>		    info->engine_time[i] >= c->utilization[i].last_engine_time) {
>>@@ -131,6 +134,16 @@ igt_drm_client_update(struct igt_drm_client *c, unsigned int pid, char *name,
>>			c->agg_delta_cycles += c->utilization[i].delta_cycles;
>>			c->utilization[i].last_cycles = info->cycles[i];
>>		}
>>+
>>+		if (info->utilization_mask & DRM_FDINFO_UTILIZATION_CYCLES &&
>
>This should be
>
>s/DRM_FDINFO_UTILIZATION_CYCLES/DRM_FDINFO_UTILIZATION_TOTAL_CYCLES/
>
>or a new name if you decide to change things based on below comment.
>
>>+		    info->total_cycles[i] >= c->utilization[i].last_total_cycles) {
>>+			c->utilization_mask |= IGT_DRM_CLIENT_UTILIZATION_TOTAL_CYCLES;
>>+			c->total_total_cycles += info->total_cycles[i];
>>+			c->utilization[i].delta_total_cycles =
>>+				info->total_cycles[i] - c->utilization[i].last_total_cycles;
>>+			c->agg_delta_total_cycles += c->utilization[i].delta_total_cycles;
>>+			c->utilization[i].last_total_cycles = info->total_cycles[i];
>>+		}
>>	}
>>
>>	/* Memory regions */
>>diff --git a/lib/igt_drm_clients.h b/lib/igt_drm_clients.h
>>index 514c09e71..946d709de 100644
>>--- a/lib/igt_drm_clients.h
>>+++ b/lib/igt_drm_clients.h
>>@@ -36,6 +36,7 @@ enum igt_drm_client_status {
>>enum igt_drm_client_utilization_type {
>>	IGT_DRM_CLIENT_UTILIZATION_ENGINE_TIME	= 1U << 0,
>>	IGT_DRM_CLIENT_UTILIZATION_CYCLES	= 1U << 1,
>>+	IGT_DRM_CLIENT_UTILIZATION_TOTAL_CYCLES	= 1U << 2,
>>};
>>
>>struct igt_drm_client_engines {
>>@@ -74,11 +75,15 @@ struct igt_drm_client {
>>	unsigned long agg_delta_engine_time; /* Aggregate of @utilization.delta_engine_time, i.e. engine time on all engines since previous scan. */
>>	unsigned long total_cycles; /* Aggregate of @utilization.agg_delta_cycles, i.e. engine time on all engines since client start. */
>>	unsigned long agg_delta_cycles; /* Aggregate of @utilization.delta_cycles, i.e. engine time on all engines since previous scan. */
>>+	unsigned long total_total_cycles; /* Aggregate of @utilization.agg_delta_total_cycles, i.e. engine time on all engines since client start. */
>
>total_total_cycles :). I can understand that since I am looking at the 
>patches in order, but there might be room for another rename, maybe:
>
>s/c->total_cycles/c->total_engine_cycles/ (since this is how may 
>cycles the client ran on the engine)
>
>s/c->total_total_cycles/c->total_<something>_cycles/ (where 
><something> could be - "available" or "gpu".

On second thoughts, I believe <something>_cycles is likely derived from 
drm-total-cycles, so you have named it accordingly. I am okay with this 
as is.

With just the if condition fixed above, this should be

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Umesh
>
>Regards,
>Umesh
>
>>+	unsigned long agg_delta_total_cycles; /* Aggregate of @utilization.delta_total_cycles, i.e. engine time on all engines since previous scan. */
>>	struct igt_drm_client_utilization {
>>		unsigned long delta_engine_time; /* Engine time data, relative to previous scan. */
>>		unsigned long delta_cycles; /* Engine cycles data, relative to previous scan. */
>>+		unsigned long delta_total_cycles; /* Engine total cycles data, relative to previous scan. */
>>		uint64_t last_engine_time; /* Engine time data as parsed from fdinfo. */
>>		uint64_t last_cycles; /* Engine cycles data as parsed from fdinfo. */
>>+		uint64_t last_total_cycles; /* Engine total cycles data as parsed from fdinfo. */
>>	} *utilization; /* Array of engine utilization */
>>
>>	struct drm_client_meminfo *memory; /* Array of region memory utilisation as parsed from fdinfo. */
>>-- 
>>2.43.0
>>

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

* Re: [PATCH i-g-t v3 13/13] gputop: Add support to drm-cycles/drm-total-cycles
  2024-05-04  6:46 ` [PATCH i-g-t v3 13/13] gputop: Add support to drm-cycles/drm-total-cycles Lucas De Marchi
@ 2024-05-08 19:11   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 36+ messages in thread
From: Umesh Nerlige Ramappa @ 2024-05-08 19:11 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: igt-dev, Tvrtko Ursulin

On Fri, May 03, 2024 at 11:46:43PM -0700, Lucas De Marchi wrote:
>Add support for using only GPU timestamps to calculate the utilization.
>It uses drm-cycles and drm-total-cycles read from fdinfo. For any
>2 samples, the utilization is calculated as:
>
>	         u[i+1] - u[i]
>	pct  = -----------------
>	        Gt[i+1] - Gt[i]
>
>with u == drm-cycles and Gt == drm-total-cycles.
>
>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>


LGTM,

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Thanks,
Umesh
>---
> tools/gputop.c | 41 +++++++++++++++++++++++++++++++++++++----
> 1 file changed, 37 insertions(+), 4 deletions(-)
>
>diff --git a/tools/gputop.c b/tools/gputop.c
>index aa88a8021..11e0db482 100644
>--- a/tools/gputop.c
>+++ b/tools/gputop.c
>@@ -30,6 +30,11 @@
> #include "igt_drm_fdinfo.h"
> #include "drmtest.h"
>
>+enum utilization_type {
>+	UTILIZATION_TYPE_ENGINE_TIME,
>+	UTILIZATION_TYPE_TOTAL_CYCLES,
>+};
>+
> static const char *bars[] = { " ", "▏", "▎", "▍", "▌", "▋", "▊", "▉", "█" };
>
> static void n_spaces(const unsigned int n)
>@@ -171,13 +176,33 @@ print_client(struct igt_drm_client *c, struct igt_drm_client **prevc,
> 	     double t, int lines, int con_w, int con_h,
> 	     unsigned int period_us, int *engine_w)
> {
>+	enum utilization_type utilization_type;
> 	unsigned int i;
> 	uint64_t sz;
> 	int len;
>
>+	if (c->utilization_mask & IGT_DRM_CLIENT_UTILIZATION_TOTAL_CYCLES &&
>+	    c->utilization_mask & IGT_DRM_CLIENT_UTILIZATION_CYCLES)
>+		utilization_type = UTILIZATION_TYPE_TOTAL_CYCLES;
>+	else if (c->utilization_mask & IGT_DRM_CLIENT_UTILIZATION_ENGINE_TIME)
>+		utilization_type = UTILIZATION_TYPE_ENGINE_TIME;
>+	else
>+		return 0;
>+
>+	if (c->samples < 2)
>+		return 0;
>+
> 	/* Filter out idle clients. */
>-	if (!c->total_engine_time || c->samples < 2)
>-		return lines;
>+	switch (utilization_type) {
>+	case UTILIZATION_TYPE_ENGINE_TIME:
>+	       if (!c->total_engine_time)
>+		       return 0;
>+	       break;
>+	case UTILIZATION_TYPE_TOTAL_CYCLES:
>+	       if (!c->total_total_cycles)
>+		       return 0;
>+	       break;
>+	}
>
> 	/* Print header when moving to a different DRM card. */
> 	if (newheader(c, *prevc)) {
>@@ -208,8 +233,16 @@ print_client(struct igt_drm_client *c, struct igt_drm_client **prevc,
> 		if (!c->engines->capacity[i])
> 			continue;
>
>-		pct = (double)c->utilization[i].delta_engine_time / period_us / 1e3 * 100 /
>-		      c->engines->capacity[i];
>+		switch (utilization_type) {
>+		case UTILIZATION_TYPE_ENGINE_TIME:
>+			pct = (double)c->utilization[i].delta_engine_time / period_us / 1e3 * 100 /
>+				c->engines->capacity[i];
>+			break;
>+		case UTILIZATION_TYPE_TOTAL_CYCLES:
>+			pct = (double)c->utilization[i].delta_cycles / c->utilization[i].delta_total_cycles * 100 /
>+				c->engines->capacity[i];
>+			break;
>+		}
>
> 		/*
> 		 * Guard against fluctuations between our scanning period and
>-- 
>2.43.0
>

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

* Re: [PATCH i-g-t v3 08/13] treewide: Rename engine busyness variables
  2024-05-08 18:45   ` Umesh Nerlige Ramappa
@ 2024-05-21 13:47     ` Lucas De Marchi
  0 siblings, 0 replies; 36+ messages in thread
From: Lucas De Marchi @ 2024-05-21 13:47 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa; +Cc: igt-dev, Tvrtko Ursulin

On Wed, May 08, 2024 at 11:45:03AM GMT, Umesh Nerlige Ramappa wrote:
>On Fri, May 03, 2024 at 11:46:38PM -0700, Lucas De Marchi wrote:
>>In preparation to have more possible ways to calculate engine
>>busyness/utilization, rename variables related to the current way: it's
>>reading the "engine time in nsec" spent by the client on each engine.
>>
>>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>
>IMO, I still prefer the earlier names since the word "busy" is 
>ingrained in the PMU work that we have done so far :). I would have 
>just done this:
>
>s/c->val/c->delta_busy/ (since val is descriptive)
>s/c->last/c->last_busy/ (since you intend to add cycles later)

but then "busy" would refer to what key the kernel exports? We have more
than one and need to differentiate between them in 2 layers (fdinfo and
drm_clients) and resolve it only in the application.

>
>The new counter would just have similar names, but with s/busy/cycles/.

I don't like the current names much, but I think the alternative is
worse.


>
>It looks fine as is, so this is
>
>Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

thanks
Lucas De Marchi

>
>Regards,
>Umesh
>
>>---
>>lib/igt_drm_clients.c    | 28 +++++++++++++------------
>>lib/igt_drm_clients.h    |  8 ++++----
>>lib/igt_drm_fdinfo.c     |  6 +++---
>>lib/igt_drm_fdinfo.h     |  2 +-
>>tests/intel/drm_fdinfo.c | 44 ++++++++++++++++++++--------------------
>>tools/gputop.c           |  8 ++++----
>>tools/intel_gpu_top.c    | 24 +++++++++++-----------
>>7 files changed, 61 insertions(+), 59 deletions(-)
>>
>>diff --git a/lib/igt_drm_clients.c b/lib/igt_drm_clients.c
>>index ab0c2cec2..3f4265015 100644
>>--- a/lib/igt_drm_clients.c
>>+++ b/lib/igt_drm_clients.c
>>@@ -103,19 +103,19 @@ igt_drm_client_update(struct igt_drm_client *c, unsigned int pid, char *name,
>>
>>	/* Engines */
>>
>>-	c->last_runtime = 0;
>>-	c->total_runtime = 0;
>>+	c->agg_delta_engine_time = 0;
>>+	c->total_engine_time = 0;
>>
>>	for (i = 0; i <= c->engines->max_engine_id; i++) {
>>-		assert(i < ARRAY_SIZE(info->busy));
>>+		assert(i < ARRAY_SIZE(info->engine_time));
>>
>>-		if (info->busy[i] < c->last[i])
>>+		if (info->engine_time[i] < c->last_engine_time[i])
>>			continue; /* It will catch up soon. */
>>
>>-		c->total_runtime += info->busy[i];
>>-		c->val[i] = info->busy[i] - c->last[i];
>>-		c->last_runtime += c->val[i];
>>-		c->last[i] = info->busy[i];
>>+		c->total_engine_time += info->engine_time[i];
>>+		c->delta_engine_time[i] = info->engine_time[i] - c->last_engine_time[i];
>>+		c->agg_delta_engine_time += c->delta_engine_time[i];
>>+		c->last_engine_time[i] = info->engine_time[i];
>>	}
>>
>>	/* Memory regions */
>>@@ -183,9 +183,11 @@ igt_drm_client_add(struct igt_drm_clients *clients,
>>		c->engines->max_engine_id = i;
>>	}
>>
>>-	c->val = calloc(c->engines->max_engine_id + 1, sizeof(*c->val));
>>-	c->last = calloc(c->engines->max_engine_id + 1, sizeof(*c->last));
>>-	assert(c->val && c->last);
>>+	c->delta_engine_time = calloc(c->engines->max_engine_id + 1,
>>+			       sizeof(*c->delta_engine_time));
>>+	c->last_engine_time = calloc(c->engines->max_engine_id + 1,
>>+			      sizeof(*c->last_engine_time));
>>+	assert(c->delta_engine_time && c->last_engine_time);
>>
>>	/* Memory regions */
>>	c->regions = calloc(1, sizeof(*c->regions));
>>@@ -223,8 +225,8 @@ void igt_drm_client_free(struct igt_drm_client *c, bool clear)
>>	}
>>	free(c->engines);
>>
>>-	free(c->val);
>>-	free(c->last);
>>+	free(c->delta_engine_time);
>>+	free(c->last_engine_time);
>>
>>	if (c->regions) {
>>		for (i = 0; i <= c->regions->max_region_id; i++)
>>diff --git a/lib/igt_drm_clients.h b/lib/igt_drm_clients.h
>>index 52888aedc..f2ff13182 100644
>>--- a/lib/igt_drm_clients.h
>>+++ b/lib/igt_drm_clients.h
>>@@ -63,10 +63,10 @@ struct igt_drm_client {
>>	char name[24]; /* Process name of the owning PID. */
>>	char print_name[24]; /* Name without any non-printable characters. */
>>	unsigned int samples; /* Count of times scanning updated this client. */
>>-	unsigned long total_runtime; /* Aggregate busyness on all engines since client start. */
>>-	unsigned long last_runtime; /* Aggregate busyness on all engines since previous scan. */
>>-	unsigned long *val; /* Array of engine busyness data, relative to previous scan. */
>>-	uint64_t *last; /* Array of engine busyness data as parsed from fdinfo. */
>>+	unsigned long total_engine_time; /* Aggregate of @agg_delta_engine_time, i.e. engine time on all engines since client start. */
>>+	unsigned long agg_delta_engine_time; /* Aggregate of @delta_engine_time, i.e. engine time on all engines since previous scan. */
>>+	unsigned long *delta_engine_time; /* Array of engine time data, relative to previous scan. */
>>+	uint64_t *last_engine_time; /* Array of engine time data as parsed from fdinfo. */
>>	struct drm_client_meminfo *memory; /* Array of region memory utilisation as parsed from fdinfo. */
>>};
>>
>>diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
>>index 79b72c54d..9deeadd4e 100644
>>--- a/lib/igt_drm_fdinfo.c
>>+++ b/lib/igt_drm_fdinfo.c
>>@@ -190,10 +190,10 @@ out:
>>		}							\
>>	} while (0)
>>
>>-#define UPDATE_ENGINE(idx, engine, val, utilization_key)		\
>>+#define UPDATE_ENGINE(idx, member, val, utilization_key)		\
>>	do {								\
>>		if (idx >= 0) {						\
>>-			info->engine[idx] = val;			\
>>+			info->member[idx] = val;			\
>>			info->utilization_mask |= utilization_key;	\
>>			if (!info->capacity[idx])			\
>>					info->capacity[idx] = 1;	\
>>@@ -260,7 +260,7 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
>>		} else if (strstartswith(l, "drm-engine-", &keylen)) {
>>			idx = parse_engine(l + keylen, info,
>>					   name_map, map_entries, &val);
>>-			UPDATE_ENGINE(idx, busy, val, DRM_FDINFO_UTILIZATION_ENGINE_TIME);
>>+			UPDATE_ENGINE(idx, engine_time, val, DRM_FDINFO_UTILIZATION_ENGINE_TIME);
>>		} else if (strstartswith(l, "drm-cycles-", &keylen)) {
>>			idx = parse_engine(l + keylen, info,
>>					   name_map, map_entries, &val);
>>diff --git a/lib/igt_drm_fdinfo.h b/lib/igt_drm_fdinfo.h
>>index 3f641d79d..ea90edd79 100644
>>--- a/lib/igt_drm_fdinfo.h
>>+++ b/lib/igt_drm_fdinfo.h
>>@@ -60,7 +60,7 @@ struct drm_client_fdinfo {
>>	unsigned int utilization_mask;
>>
>>	/* drm-engine-<engine> values */
>>-	uint64_t busy[DRM_CLIENT_FDINFO_MAX_ENGINES];
>>+	uint64_t engine_time[DRM_CLIENT_FDINFO_MAX_ENGINES];
>>	/* drm-cycles-<engine> values */
>>	uint64_t cycles[DRM_CLIENT_FDINFO_MAX_ENGINES];
>>
>>diff --git a/tests/intel/drm_fdinfo.c b/tests/intel/drm_fdinfo.c
>>index 61c66079e..2d155180f 100644
>>--- a/tests/intel/drm_fdinfo.c
>>+++ b/tests/intel/drm_fdinfo.c
>>@@ -192,14 +192,14 @@ static void end_spin(int fd, igt_spin_t *spin, unsigned int flags)
>>	}
>>}
>>
>>-static uint64_t read_busy(int i915, unsigned int class)
>>+static uint64_t read_engine_time(int i915, unsigned int class)
>>{
>>	struct drm_client_fdinfo info = { };
>>
>>	igt_assert(igt_parse_drm_fdinfo(i915, &info, engine_map,
>>					ARRAY_SIZE(engine_map), NULL, 0));
>>
>>-	return info.busy[class];
>>+	return info.engine_time[class];
>>}
>>
>>static void
>>@@ -229,11 +229,11 @@ single(int gem_fd, const intel_ctx_t *ctx,
>>	else
>>		spin = NULL;
>>
>>-	val = read_busy(gem_fd, e->class);
>>+	val = read_engine_time(gem_fd, e->class);
>>	slept = measured_usleep(batch_duration_ns / 1000);
>>	if (flags & TEST_TRAILING_IDLE)
>>		end_spin(spin_fd, spin, flags);
>>-	val = read_busy(gem_fd, e->class) - val;
>>+	val = read_engine_time(gem_fd, e->class) - val;
>>
>>	if (flags & FLAG_HANG)
>>		igt_force_gpu_reset(spin_fd);
>>@@ -250,9 +250,9 @@ single(int gem_fd, const intel_ctx_t *ctx,
>>		gem_quiescent_gpu(spin_fd);
>>		igt_assert(!gem_bo_busy(spin_fd, spin->handle));
>>
>>-		val = read_busy(gem_fd, e->class);
>>+		val = read_engine_time(gem_fd, e->class);
>>		slept = measured_usleep(batch_duration_ns / 1000);
>>-		val = read_busy(gem_fd, e->class) - val;
>>+		val = read_engine_time(gem_fd, e->class) - val;
>>
>>		assert_within_epsilon(val, 0, tolerance);
>>	}
>>@@ -282,14 +282,14 @@ static void log_busy(unsigned int num_engines, uint64_t *val)
>>	igt_info("%s", buf);
>>}
>>
>>-static void read_busy_all(int i915, uint64_t *val)
>>+static void read_engine_time_all(int i915, uint64_t *val)
>>{
>>	struct drm_client_fdinfo info = { };
>>
>>	igt_assert(igt_parse_drm_fdinfo(i915, &info, engine_map,
>>					ARRAY_SIZE(engine_map), NULL, 0));
>>
>>-	memcpy(val, info.busy, sizeof(info.busy));
>>+	memcpy(val, info.engine_time, sizeof(info.engine_time));
>>}
>>
>>static void
>>@@ -312,11 +312,11 @@ busy_check_all(int gem_fd, const intel_ctx_t *ctx,
>>
>>	spin = igt_sync_spin(gem_fd, ahnd, ctx, e);
>>
>>-	read_busy_all(gem_fd, tval[0]);
>>+	read_engine_time_all(gem_fd, tval[0]);
>>	slept = measured_usleep(batch_duration_ns / 1000);
>>	if (flags & TEST_TRAILING_IDLE)
>>		end_spin(gem_fd, spin, flags);
>>-	read_busy_all(gem_fd, tval[1]);
>>+	read_engine_time_all(gem_fd, tval[1]);
>>
>>	end_spin(gem_fd, spin, FLAG_SYNC);
>>	igt_spin_free(gem_fd, spin);
>>@@ -388,11 +388,11 @@ most_busy_check_all(int gem_fd, const intel_ctx_t *ctx,
>>	/* Small delay to allow engines to start. */
>>	usleep(__igt_sync_spin_wait(gem_fd, spin) * num_engines / 1e3);
>>
>>-	read_busy_all(gem_fd, tval[0]);
>>+	read_engine_time_all(gem_fd, tval[0]);
>>	slept = measured_usleep(batch_duration_ns / 1000);
>>	if (flags & TEST_TRAILING_IDLE)
>>		end_spin(gem_fd, spin, flags);
>>-	read_busy_all(gem_fd, tval[1]);
>>+	read_engine_time_all(gem_fd, tval[1]);
>>
>>	end_spin(gem_fd, spin, FLAG_SYNC);
>>	igt_spin_free(gem_fd, spin);
>>@@ -443,11 +443,11 @@ all_busy_check_all(int gem_fd, const intel_ctx_t *ctx,
>>	/* Small delay to allow engines to start. */
>>	usleep(__igt_sync_spin_wait(gem_fd, spin) * num_engines / 1e3);
>>
>>-	read_busy_all(gem_fd, tval[0]);
>>+	read_engine_time_all(gem_fd, tval[0]);
>>	slept = measured_usleep(batch_duration_ns / 1000);
>>	if (flags & TEST_TRAILING_IDLE)
>>		end_spin(gem_fd, spin, flags);
>>-	read_busy_all(gem_fd, tval[1]);
>>+	read_engine_time_all(gem_fd, tval[1]);
>>
>>	end_spin(gem_fd, spin, FLAG_SYNC);
>>	igt_spin_free(gem_fd, spin);
>>@@ -589,11 +589,11 @@ virtual(int i915, const intel_ctx_cfg_t *base_cfg, unsigned int flags)
>>			else
>>				spin = NULL;
>>
>>-			val = read_busy(i915, class);
>>+			val = read_engine_time(i915, class);
>>			slept = measured_usleep(batch_duration_ns / 1000);
>>			if (flags & TEST_TRAILING_IDLE)
>>				end_spin(i915, spin, flags);
>>-			val = read_busy(i915, class) - val;
>>+			val = read_engine_time(i915, class) - val;
>>
>>			if (flags & FLAG_HANG)
>>				igt_force_gpu_reset(i915);
>>@@ -610,10 +610,10 @@ virtual(int i915, const intel_ctx_cfg_t *base_cfg, unsigned int flags)
>>				gem_quiescent_gpu(i915);
>>				igt_assert(!gem_bo_busy(i915, spin->handle));
>>
>>-				val = read_busy(i915, class);
>>+				val = read_engine_time(i915, class);
>>				slept = measured_usleep(batch_duration_ns /
>>							1000);
>>-				val = read_busy(i915, class) - val;
>>+				val = read_engine_time(i915, class) - val;
>>
>>				assert_within_epsilon(val, 0, tolerance);
>>			}
>>@@ -700,11 +700,11 @@ virtual_all(int i915, const intel_ctx_cfg_t *base_cfg, unsigned int flags)
>>		/* Small delay to allow engines to start. */
>>		usleep(__igt_sync_spin_wait(i915, spin) * count / 1e3);
>>
>>-		val = read_busy(i915, class);
>>+		val = read_engine_time(i915, class);
>>		slept = measured_usleep(batch_duration_ns / 1000);
>>		if (flags & TEST_TRAILING_IDLE)
>>			end_spin(i915, spin, flags);
>>-		val = read_busy(i915, class) - val;
>>+		val = read_engine_time(i915, class) - val;
>>
>>		if (flags & FLAG_HANG)
>>			igt_force_gpu_reset(i915);
>>@@ -718,10 +718,10 @@ virtual_all(int i915, const intel_ctx_cfg_t *base_cfg, unsigned int flags)
>>			gem_quiescent_gpu(i915);
>>			igt_assert(!gem_bo_busy(i915, spin->handle));
>>
>>-			val = read_busy(i915, class);
>>+			val = read_engine_time(i915, class);
>>			slept = measured_usleep(batch_duration_ns /
>>						1000);
>>-			val = read_busy(i915, class) - val;
>>+			val = read_engine_time(i915, class) - val;
>>
>>			assert_within_epsilon(val, 0, tolerance);
>>		}
>>diff --git a/tools/gputop.c b/tools/gputop.c
>>index 8cec951b4..80bc94be4 100644
>>--- a/tools/gputop.c
>>+++ b/tools/gputop.c
>>@@ -176,7 +176,7 @@ print_client(struct igt_drm_client *c, struct igt_drm_client **prevc,
>>	int len;
>>
>>	/* Filter out idle clients. */
>>-	if (!c->total_runtime || c->samples < 2)
>>+	if (!c->total_engine_time || c->samples < 2)
>>		return lines;
>>
>>	/* Print header when moving to a different DRM card. */
>>@@ -208,7 +208,7 @@ print_client(struct igt_drm_client *c, struct igt_drm_client **prevc,
>>		if (!c->engines->capacity[i])
>>			continue;
>>
>>-		pct = (double)c->val[i] / period_us / 1e3 * 100 /
>>+		pct = (double)c->delta_engine_time[i] / period_us / 1e3 * 100 /
>>		      c->engines->capacity[i];
>>
>>		/*
>>@@ -257,8 +257,8 @@ static int client_cmp(const void *_a, const void *_b, void *unused)
>>	 * Within buckets sort by last sampling period aggregated runtime, with
>>	 * client id as a tie-breaker.
>>	 */
>>-	val_a = a->last_runtime;
>>-	val_b = b->last_runtime;
>>+	val_a = a->agg_delta_engine_time;
>>+	val_b = b->agg_delta_engine_time;
>>	if (val_a == val_b)
>>		return __client_id_cmp(a, b);
>>	else if (val_b > val_a)
>>diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c
>>index 5b4f94d7d..35122493c 100644
>>--- a/tools/intel_gpu_top.c
>>+++ b/tools/intel_gpu_top.c
>>@@ -793,7 +793,7 @@ static int client_last_cmp(const void *_a, const void *_b, void *unused)
>>{
>>	const struct igt_drm_client *a = _a;
>>	const struct igt_drm_client *b = _b;
>>-	long val_a = a->last_runtime, val_b = b->last_runtime;
>>+	long val_a = a->agg_delta_engine_time, val_b = b->agg_delta_engine_time;
>>
>>	/*
>>	 * Sort clients in descending order of runtime in the previous sampling
>>@@ -812,7 +812,7 @@ static int client_total_cmp(const void *_a, const void *_b, void *unused)
>>{
>>	const struct igt_drm_client *a = _a;
>>	const struct igt_drm_client *b = _b;
>>-	long val_a = a->total_runtime, val_b = b->total_runtime;
>>+	long val_a = a->total_engine_time, val_b = b->total_engine_time;
>>
>>	if (val_a == val_b)
>>		return __client_id_cmp(a, b);
>>@@ -893,9 +893,9 @@ static struct igt_drm_clients *display_clients(struct igt_drm_clients *clients)
>>			strcpy(ac->pid_str, c->pid_str);
>>			strcpy(ac->print_name, c->print_name);
>>			ac->engines = c->engines;
>>-			ac->val = calloc(c->engines->max_engine_id + 1,
>>-					 sizeof(ac->val[0]));
>>-			assert(ac->val);
>>+			ac->delta_engine_time = calloc(c->engines->max_engine_id + 1,
>>+						sizeof(ac->delta_engine_time[0]));
>>+			assert(ac->delta_engine_time);
>>			ac->regions = c->regions;
>>			ac->memory = calloc(c->regions->max_region_id + 1,
>>					    sizeof(ac->memory[0]));
>>@@ -908,11 +908,11 @@ static struct igt_drm_clients *display_clients(struct igt_drm_clients *clients)
>>			continue;
>>
>>		ac->samples = 2; /* All what matters for display. */
>>-		ac->total_runtime += c->total_runtime;
>>-		ac->last_runtime += c->last_runtime;
>>+		ac->total_engine_time += c->total_engine_time;
>>+		ac->agg_delta_engine_time += c->agg_delta_engine_time;
>>
>>		for (i = 0; i <= c->engines->max_engine_id; i++)
>>-			ac->val[i] += c->val[i];
>>+			ac->delta_engine_time[i] += c->delta_engine_time[i];
>>
>>		for (i = 0; i <= c->regions->max_region_id; i++) {
>>			ac->memory[i].total += c->memory[i].total;
>>@@ -946,7 +946,7 @@ static void free_display_clients(struct igt_drm_clients *clients)
>>	 * or borrowed fields which we don't want the library to try and free.
>>	 */
>>	igt_for_each_drm_client(clients, c, tmp) {
>>-		free(c->val);
>>+		free(c->delta_engine_time);
>>		free(c->memory);
>>	}
>>
>>@@ -2120,7 +2120,7 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li
>>	int len;
>>
>>	if (output_mode == INTERACTIVE) {
>>-		if (filter_idle && (!c->total_runtime || c->samples < 2))
>>+		if (filter_idle && (!c->total_engine_time || c->samples < 2))
>>			return lines;
>>
>>		lines++;
>>@@ -2161,7 +2161,7 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li
>>				continue;
>>			}
>>
>>-			pct = (double)c->val[i] / period_us / 1e3 * 100;
>>+			pct = (double)c->delta_engine_time[i] / period_us / 1e3 * 100;
>>
>>			/*
>>			 * Guard against possible time-drift between sampling
>>@@ -2235,7 +2235,7 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li
>>					 iclients->classes.names[i]);
>>				pops->open_struct(buf);
>>
>>-				pct = (double)c->val[i] / period_us / 1e3 * 100;
>>+				pct = (double)c->delta_engine_time[i] / period_us / 1e3 * 100;
>>				snprintf(buf, sizeof(buf), "%f", pct);
>>				__json_add_member("busy", buf);
>>
>>-- 
>>2.43.0
>>

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

end of thread, other threads:[~2024-05-21 13:47 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-04  6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
2024-05-04  6:46 ` [PATCH i-g-t v3 01/13] lib/igt_drm_fdinfo: Extract ignore_space() Lucas De Marchi
2024-05-06 20:21   ` Umesh Nerlige Ramappa
2024-05-04  6:46 ` [PATCH i-g-t v3 02/13] lib/igt_drm_fdinfo: Allow any number of spaces before unit Lucas De Marchi
2024-05-06 20:28   ` Umesh Nerlige Ramappa
2024-05-06 20:32     ` Umesh Nerlige Ramappa
2024-05-06 20:38       ` Lucas De Marchi
2024-05-04  6:46 ` [PATCH i-g-t v3 03/13] fixup! " Lucas De Marchi
2024-05-06 20:33   ` Umesh Nerlige Ramappa
2024-05-04  6:46 ` [PATCH i-g-t v3 04/13] lib/igt_drm_fdinfo: Stop passing key twice Lucas De Marchi
2024-05-04  6:46 ` [PATCH i-g-t v3 05/13] lib/igt_drm_fdinfo: Remove prefix arg from parse functions Lucas De Marchi
2024-05-04  6:46 ` [PATCH i-g-t v3 06/13] lib/igt_drm_fdinfo: Parse drm-cycles Lucas De Marchi
2024-05-07  1:11   ` Umesh Nerlige Ramappa
2024-05-04  6:46 ` [PATCH i-g-t v3 07/13] lib/igt_drm_fdinfo: Start tracking available engine keys Lucas De Marchi
2024-05-07  1:14   ` Umesh Nerlige Ramappa
2024-05-04  6:46 ` [PATCH i-g-t v3 08/13] treewide: Rename engine busyness variables Lucas De Marchi
2024-05-08 18:45   ` Umesh Nerlige Ramappa
2024-05-21 13:47     ` Lucas De Marchi
2024-05-04  6:46 ` [PATCH i-g-t v3 09/13] lib/igt_drm_clients: Move engine fields to substruct Lucas De Marchi
2024-05-08 18:45   ` Umesh Nerlige Ramappa
2024-05-04  6:46 ` [PATCH i-g-t v3 10/13] lib/igt_drm_clients: Record drm-cycles Lucas De Marchi
2024-05-08 18:48   ` Umesh Nerlige Ramappa
2024-05-04  6:46 ` [PATCH i-g-t v3 11/13] lib/igt_drm_fdinfo: Parse drm-total-cycles Lucas De Marchi
2024-05-08 18:49   ` Umesh Nerlige Ramappa
2024-05-04  6:46 ` [PATCH i-g-t v3 12/13] lib/igt_drm_clients: Record total cycles Lucas De Marchi
2024-05-08 19:01   ` Umesh Nerlige Ramappa
2024-05-08 19:07     ` Umesh Nerlige Ramappa
2024-05-04  6:46 ` [PATCH i-g-t v3 13/13] gputop: Add support to drm-cycles/drm-total-cycles Lucas De Marchi
2024-05-08 19:11   ` Umesh Nerlige Ramappa
2024-05-04  7:31 ` ✓ Fi.CI.BAT: success for gputop: Add support for xe (rev4) Patchwork
2024-05-04  7:36 ` ✓ CI.xeBAT: " Patchwork
2024-05-04  8:33 ` ✗ CI.xeFULL: failure " Patchwork
2024-05-04 12:50 ` ✗ Fi.CI.IGT: " Patchwork
2024-05-06 10:37 ` [PATCH i-g-t v3 00/12] gputop: Add support for xe Tvrtko Ursulin
2024-05-06 20:40   ` Lucas De Marchi
2024-05-08 16:25 ` (subset) " Lucas De Marchi

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