Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Lucas De Marchi <lucas.demarchi@intel.com>
To: igt-dev@lists.freedesktop.org
Cc: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>,
	Tvrtko Ursulin <tursulin@ursulin.net>,
	Lucas De Marchi <lucas.demarchi@intel.com>
Subject: [PATCH i-g-t v3 07/13] lib/igt_drm_fdinfo: Start tracking available engine keys
Date: Fri,  3 May 2024 23:46:37 -0700	[thread overview]
Message-ID: <20240504064643.25863-8-lucas.demarchi@intel.com> (raw)
In-Reply-To: <20240504064643.25863-1-lucas.demarchi@intel.com>

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


  parent reply	other threads:[~2024-05-04  6:46 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 ` Lucas De Marchi [this message]
2024-05-07  1:14   ` [PATCH i-g-t v3 07/13] lib/igt_drm_fdinfo: Start tracking available engine keys 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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240504064643.25863-8-lucas.demarchi@intel.com \
    --to=lucas.demarchi@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=tursulin@ursulin.net \
    --cc=umesh.nerlige.ramappa@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox