[Intel-gfx] [PATCH] intel-gpu-tools: Version information

Ben Widawsky benjamin.widawsky at intel.com
Sat Dec 7 05:35:29 CET 2013


Provide two arguments version, and verbose, which allow printing from an
arbitrary igt test. It will show system information (from build time,
not runtime), as well as the git SHA being used.

This will help reduce errors when people try to reproduce problems.

As an example if I want to verify someone is running the correct version
of a test, I could ask them to do:
bwidawsk at ironside ~/intel-gfx/intel-gpu-tools (master)$ sudo ./tests/gem_exec_nop --verbose
gem_exec_nop-git-3c5423b (Linux ironside 3.12.0-1-ARCH #1 SMP PREEMPT
Wed Nov 6 09:06:27 CET 2013 x86_64 GNU/Linux)
Time to exec x 1:		 35.000µs (ring=render)
Time to exec x 2:		 28.000µs (ring=render)
Time to exec x 4:		 20.000µs (ring=render)
Time to exec x 8:		 14.625µs (ring=render)
Time to exec x 16:		 11.188µs (ring=render)
Time to exec x 32:		 11.125µs (ring=render)
Time to exec x 64:		 10.328µs (ring=render)
Time to exec x 128:		 10.172µs (ring=render)
Time to exec x 256:		 10.234µs (ring=render)
Time to exec x 512:		 10.232µs (ring=render)
Time to exec x 1024:		 10.121µs (ring=render)
Time to exec x 2048:		 10.151µs (ring=render)
Time to exec x 4096:		 11.474µs (ring=render)
Time to exec x 8192:		  9.432µs (ring=render)
Time to exec x 16384:		  6.003µs (ring=render)
Time to exec x 32768:		  5.029µs (ring=render)
Time to exec x 65536:		  4.206µs (ring=render)
Time to exec x 131072:		  3.630µs (ring=render)
Subtest render: SUCCESS

--verbose is provided for completeness, but doesn't seem too useful at
the moement.

bwidawsk at ironside ~/intel-gfx/intel-gpu-tools (master)$ sudo ./tests/gem_exec_nop --version
gem_exec_nop-git-3c5423b (Linux ironside 3.12.0-1-ARCH #1 SMP PREEMPT
Wed Nov 6 09:06:27 CET 2013 x86_64 GNU/Linux)

I've put version.h in the root directory so that any subdir can access
it. I've added the tests usage since it's immediately useful, and done
easily via Daniels igt infrastructure work.

Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
---
 Makefile.am       | 26 +++++++++++++++++++++++++-
 lib/drmtest.c     | 17 +++++++++++++++++
 tests/Makefile.am |  1 +
 3 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/Makefile.am b/Makefile.am
index d7a479c..cbb9e20 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,5 @@
 # Copyright © 2005 Adam Jackson.
-# Copyright © 2009 Intel Corporation
+# Copyright © 2009,2013 Intel Corporation
 #
 #  Permission is hereby granted, free of charge, to any person obtaining a
 #  copy of this software and associated documentation files (the "Software"),
@@ -37,6 +37,30 @@ endif
 
 MAINTAINERCLEANFILES = ChangeLog INSTALL
 
+.PHONY: version.h.tmp
+version.h.tmp:
+	@touch $@
+	@echo "#define IGT_SYSTEM_INFO \"$(shell uname -a)\"" >> $@
+	@if test -d .git; then \
+		if which git > /dev/null; then git log -n 1 --oneline | \
+			sed 's/^\([^ ]*\) .*/#define IGT_GIT_SHA1 "git-\1"/' \
+			>> $@ ; \
+		fi \
+	else \
+		echo '#define IGT_GIT_SHA1 "NOT-GIT"' >> $@ ; \
+	fi
+
+version.h: version.h.tmp
+	@echo "updating version.h"
+	@if ! cmp -s version.h.tmp version.h; then \
+		mv version.h.tmp version.h ;\
+	else \
+		rm version.h.tmp ;\
+	fi
+
+BUILT_SOURCES = version.h
+CLEANFILES = version.h version.h.tmp
+
 .PHONY: ChangeLog INSTALL
 
 INSTALL:
diff --git a/lib/drmtest.c b/lib/drmtest.c
index 97a4403..a5733a0 100644
--- a/lib/drmtest.c
+++ b/lib/drmtest.c
@@ -51,6 +51,7 @@
 #include "intel_chipset.h"
 #include "intel_gpu_tools.h"
 #include "igt_debugfs.h"
+#include "../version.h"
 
 /* This file contains a bunch of wrapper functions to directly use gem ioctls.
  * Mostly useful to write kernel tests. */
@@ -798,6 +799,13 @@ static void check_igt_exit(int sig)
 	assert(sig != 0 || igt_exit_called);
 }
 
+
+static void print_version(const char *command_str)
+{
+	fprintf(stdout, "%s-%s (%s) \n", command_str,
+			IGT_GIT_SHA1, IGT_SYSTEM_INFO);
+}
+
 static void print_usage(const char *command_str, const char *help_str,
 			bool output_on_stderr)
 {
@@ -820,6 +828,8 @@ int igt_subtest_init_parse_opts(int argc, char **argv,
 	static struct option long_options[] = {
 		{"list-subtests", 0, 0, 'l'},
 		{"run-subtest", 1, 0, 'r'},
+		{"verbose", 0, 0, 'b'},
+		{"version", 0, 0, 'v'},
 		{"help", 0, 0, 'h'},
 	};
 	const char *command_str;
@@ -866,6 +876,13 @@ int igt_subtest_init_parse_opts(int argc, char **argv,
 			if (!list_subtests)
 				run_single_subtest = strdup(optarg);
 			break;
+		case 'b':
+			print_version(command_str);
+			break;
+		case 'v':
+			print_version(command_str);
+			ret = -1;
+			goto out;
 		case 'h':
 			print_usage(command_str, help_str, false);
 			ret = -1;
diff --git a/tests/Makefile.am b/tests/Makefile.am
index b8cddd5..f4a7d41 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -24,6 +24,7 @@ AM_CFLAGS = $(DRM_CFLAGS) $(CWARNFLAGS) \
 	-I$(srcdir)/.. \
 	-I$(srcdir)/../lib \
 	-include "check-ndebug.h" \
+	-include "$(srcdir)/version.h" \
 	-DIGT_DATADIR=\""$(abs_srcdir)"\" \
 	$(NULL)
 
-- 
1.8.4.2




More information about the Intel-gfx mailing list