[PATCH i-g-t v3 07/13] lib/igt_drm_fdinfo: Start tracking available engine keys
Umesh Nerlige Ramappa
umesh.nerlige.ramappa at intel.com
Tue May 7 01:14:13 UTC 2024
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 at intel.com>
LGTM,
Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at 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
>
More information about the igt-dev
mailing list