[PATCH i-g-t 1/2] lib/xe/xe_trace: Added code related to trace

priyanka.dandamudi at intel.com priyanka.dandamudi at intel.com
Mon Sep 30 15:37:49 UTC 2024


From: Priyanka Dandamudi <priyanka.dandamudi at intel.com>

Trace related code has been added which will
start tracing, stop tracing and validate migration.

Cc: Brian Welty <brian.welty at intel.com>
Cc: Oak Zeng <oak.zeng at intel.com>
Signed-off-by: Priyanka Dandamudi <priyanka.dandamudi at intel.com>
---
 lib/meson.build   |  1 +
 lib/xe/xe_trace.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++
 lib/xe/xe_trace.h | 12 ++++++++++
 3 files changed, 74 insertions(+)
 create mode 100644 lib/xe/xe_trace.c
 create mode 100644 lib/xe/xe_trace.h

diff --git a/lib/meson.build b/lib/meson.build
index c3556a921..5dd49872b 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -116,6 +116,7 @@ lib_sources = [
 	'xe/xe_mmio.c',
 	'xe/xe_query.c',
 	'xe/xe_spin.c',
+        'xe/xe_trace.c',
 	'xe/xe_util.c',
 ]
 
diff --git a/lib/xe/xe_trace.c b/lib/xe/xe_trace.c
new file mode 100644
index 000000000..290ac91fa
--- /dev/null
+++ b/lib/xe/xe_trace.c
@@ -0,0 +1,61 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include "igt.h"
+#include "igt_types.h"
+#include "igt_sysfs.h"
+#include "xe_trace.h"
+
+const char *xe_migration_trace_path =
+				"/sys/kernel/tracing/events/xe/xe_bo_move/enable";
+const char *xe_acc_counter = "/sys/kernel/tracing/events/xe/xe_vma_acc/enable";
+const char *trace_on_path = "/sys/kernel/tracing/tracing_on";
+const char *trace_path = "/sys/kernel/tracing/trace";
+
+void xe_validate_acc_trace(int xe, int flag)
+{
+	igt_assert_eq(igt_debugfs_search(xe,
+		      trace_path, "migrate object"), flag);
+	igt_assert_eq(igt_debugfs_search(xe,
+		      trace_path, "xe_vma_acc"), flag);
+}
+
+bool xe_sysfs_trace_write(const char *file, const char *value)
+{
+	FILE *fp;
+
+	fp = fopen(file, "w");
+	if (!fp)
+		return false;
+
+	igt_assert_f(fwrite(value, 1, strlen(value), fp) == strlen(value),
+			"failed to update sysfs tracing node %s\n", file);
+	fclose(fp);
+	return true;
+}
+
+void xe_start_tracing(void)
+{
+	bool success = true;
+
+	success &= xe_sysfs_trace_write(xe_acc_counter, "1");
+	success &= xe_sysfs_trace_write(xe_migration_trace_path, "1");
+	success &= xe_sysfs_trace_write(trace_path, "1");
+	success &= xe_sysfs_trace_write(trace_on_path, "1");
+
+	igt_assert(success);
+}
+
+void xe_stop_tracing(void)
+{
+	xe_sysfs_trace_write(xe_acc_counter, "0");
+	xe_sysfs_trace_write(xe_migration_trace_path, "0");
+	xe_sysfs_trace_write(trace_on_path, "0");
+	xe_sysfs_trace_write(trace_path, "0");
+}
diff --git a/lib/xe/xe_trace.h b/lib/xe/xe_trace.h
new file mode 100644
index 000000000..430710d65
--- /dev/null
+++ b/lib/xe/xe_trace.h
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2022 Intel Corporation
+ */
+#include <stdio.h>
+#include <string.h>
+#include "igt.h"
+
+void xe_validate_acc_trace(int xe, int flag);
+bool xe_sysfs_trace_write(const char *file, const char *value);
+void xe_start_tracing(void);
+void xe_stop_tracing(void);
-- 
2.34.1



More information about the igt-dev mailing list