[PATCH i-g-t] lib/igt_sysfs: Multi-Tile support in IGT
nishit.sharma at intel.com
nishit.sharma at intel.com
Wed Jan 22 15:00:51 UTC 2025
From: Nishit Sharma <nishit.sharma at intel.com>
Added functionality in xe_sysfs_gt_path() function to get Tile ID
in multi-tile platforms. Added IGT test tests/intel/xe_multi_tile
to verify Tile IDs and GT IDs
Signed-off-by: Nishit Sharma <nishit.sharma at intel.com>
---
lib/igt_sysfs.c | 3 +-
tests/intel/xe_multi_tile.c | 109 ++++++++++++++++++++++++++++++++++++
tests/meson.build | 1 +
3 files changed, 112 insertions(+), 1 deletion(-)
create mode 100644 tests/intel/xe_multi_tile.c
diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
index 00d5822fd..37f1716e2 100644
--- a/lib/igt_sysfs.c
+++ b/lib/igt_sysfs.c
@@ -234,7 +234,8 @@ char *xe_sysfs_gt_path(int xe_device, int gt, char *path, int pathlen)
if (IS_PONTEVECCHIO(intel_get_drm_devid(xe_device)))
snprintf(path, pathlen, "/sys/dev/char/%d:%d/device/tile%d/gt%d",
- major(st.st_rdev), minor(st.st_rdev), gt, gt);
+ major(st.st_rdev), minor(st.st_rdev),
+ xe_gt_get_tile_id(xe_device, gt), gt);
else
snprintf(path, pathlen, "/sys/dev/char/%d:%d/device/tile0/gt%d",
major(st.st_rdev), minor(st.st_rdev), gt);
diff --git a/tests/intel/xe_multi_tile.c b/tests/intel/xe_multi_tile.c
new file mode 100644
index 000000000..222da9389
--- /dev/null
+++ b/tests/intel/xe_multi_tile.c
@@ -0,0 +1,109 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2023 Intel Corporation
+ *
+ * Authors:
+ * Nishit Sharma <nishit.sharma at intel.com>
+ */
+
+#include <dirent.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "igt.h"
+#include "igt_sysfs.h"
+#include "xe_drm.h"
+#include "xe/xe_query.h"
+
+/**
+ * TEST: Test to get tile_id by iterating gt on xe
+ * Category: Core
+ * Mega feature: General Core features
+ * Sub-category: mapping tile/s with slices available
+ * Functionality: gt operation
+ */
+
+/**
+ * SUBTEST: show-tile
+ * SUBTEST: gt-configuration
+ * Description: Test prints the tile_ids and gt_ids available in GPU
+ * Test category: functionality test
+ *
+ */
+static void engine_test_defaults(int xe, int engine, const char **property,
+ uint16_t class, int gt)
+{
+ struct dirent *de;
+ uint64_t property_value;
+ int defaults;
+ DIR *dir;
+
+ defaults = openat(engine, ".defaults", O_DIRECTORY);
+ igt_require(defaults != -1);
+
+ dir = fdopendir(engine);
+ while ((de = readdir(dir))) {
+ if (*de->d_name == '.')
+ continue;
+
+ igt_debug("Checking attr '%s'\n", de->d_name);
+
+ igt_assert_f(__igt_sysfs_get_u64(defaults, de->d_name, &property_value),
+ "Default value %s is not present!\n", de->d_name);
+
+ igt_debug("Default property:%s, value:0x%" PRId64 "\n", de->d_name, property_value);
+
+ igt_assert_f(!igt_sysfs_set(defaults, de->d_name, "garbage"),
+ "write into default value of %s succeeded!\n",
+ de->d_name);
+ }
+ closedir(dir);
+}
+
+igt_main
+{
+ int fd;
+ struct xe_engine_list_entry *en;
+ struct drm_xe_engine_class_instance *hwe;
+ int gt, tile_id, prev_tile = -1, gt_num;
+
+ igt_fixture {
+ fd = drm_open_driver(DRIVER_XE);
+ xe_device_get(fd);
+ gt_num = xe_number_gt(fd);
+ }
+
+ igt_subtest("show-tile") {
+ xe_for_each_gt(fd, gt) {
+ tile_id = xe_gt_get_tile_id(fd, gt);
+ if (prev_tile != tile_id) {
+ igt_info("Tile id: %d\n", tile_id);
+ prev_tile = tile_id;
+ }
+ igt_info("GT id: %d\n", gt);
+ }
+ }
+
+ igt_subtest_with_dynamic("gt-configuration") {
+ for (gt = 0; gt < gt_num; gt++) {
+ int engines_fd = -1;
+ int gt_fd = -1;
+
+ gt_fd = xe_sysfs_gt_open(fd, gt);
+ igt_require(gt_fd != -1);
+ engines_fd = openat(gt_fd, "engines", O_RDONLY);
+ igt_require(engines_fd != -1);
+
+ igt_sysfs_engines(fd, engines_fd, 0, 0, NULL, engine_test_defaults);
+
+ close(engines_fd);
+ close(gt_fd);
+ }
+ }
+
+ igt_fixture {
+ drm_close_driver(fd);
+ }
+}
diff --git a/tests/meson.build b/tests/meson.build
index 2724c7a9a..2cc01aa0c 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -292,6 +292,7 @@ intel_xe_progs = [
'xe_exec_reset',
'xe_exec_sip',
'xe_exec_store',
+ 'xe_multi_tile',
'xe_exec_threads',
'xe_exercise_blt',
'xe_fault_injection',
--
2.34.1
More information about the igt-dev
mailing list