On Fri, Oct 19, 2018 at 10:50:49AM +0200, Daniel Vetter wrote:
> Hi all,
> 
> This is just to collect feedback on this idea, and see whether the
> overall dri-devel community stands on all this. I think the past few
> cross-vendor uapi extensions all came with igts attached, and
> personally I think there's lots of value in having them: A
> cross-vendor interface isn't useful if every driver implements it
> slightly differently.
> 
> I think there's 2 questions here:
> 
> - Do we want to make such testcases mandatory?
> 

Yes, more testing == better code.


> - If yes, are we there yet, or is there something crucially missing
>   still?

In my experience, no. Last week while trying to replicate an intel-gfx CI
failure, I tried compiling igt for one of my (intel) chromebooks. It seems like
cross-compilation (or, in my case, just specifying
prefix/ld_library_path/sbin_path) is broken on igt. If we want to impose
restrictions across the entire subsystem, we need to make sure that everyone can
build and deploy igt easily.

I managed to hack around everything and get it working, but I still haven't
tried switching out the toolchain. Once we have some GitLab CI to validate
cross-compilation, then we can consider making IGT mandatory.

It's possible that I'm just a meson n00b and didn't use the right incantation,
so maybe it already works, but then we need better documentation.

I've pasted my horrible hacks below, I also didn't have libunwind, so removed
its usage.

Sean


/snip


From ab8c7d274c32559295b38d6ceeaabded14b207d4 Mon Sep 17 00:00:00 2001
From: Sean Paul <seanp...@chromium.org>
Date: Thu, 25 Oct 2018 08:40:28 -0400
Subject: [PATCH] igt: Hacks to compile in CrOS chroot

Signed-off-by: Sean Paul <seanp...@chromium.org>
---
 lib/igt_core.c            | 78 ---------------------------------------
 lib/meson.build           |  1 -
 meson.build               |  4 +-
 tests/gem_userptr_blits.c |  2 +
 tools/meson.build         |  7 ----
 5 files changed, 5 insertions(+), 87 deletions(-)

diff --git a/lib/igt_core.c b/lib/igt_core.c
index 23bb858f..ca65d7cc 100644
--- a/lib/igt_core.c
+++ b/lib/igt_core.c
@@ -71,8 +71,6 @@
 #include "igt_sysrq.h"
 #include "igt_rc.h"
 
-#define UNW_LOCAL_ONLY
-#include <libunwind.h>
 #include <elfutils/libdwfl.h>
 
 #ifdef HAVE_LIBGEN_H
@@ -1209,63 +1207,6 @@ static void write_stderr(const char *str)
 
 static void print_backtrace(void)
 {
-       unw_cursor_t cursor;
-       unw_context_t uc;
-       int stack_num = 0;
-
-       Dwfl_Callbacks cbs = {
-               .find_elf = dwfl_linux_proc_find_elf,
-               .find_debuginfo = dwfl_standard_find_debuginfo,
-       };
-
-       Dwfl *dwfl = dwfl_begin(&cbs);
-
-       if (dwfl_linux_proc_report(dwfl, getpid())) {
-               dwfl_end(dwfl);
-               dwfl = NULL;
-       } else
-               dwfl_report_end(dwfl, NULL, NULL);
-
-       igt_info("Stack trace:\n");
-
-       unw_getcontext(&uc);
-       unw_init_local(&cursor, &uc);
-       while (unw_step(&cursor) > 0) {
-               char name[255];
-               unw_word_t off, ip;
-               Dwfl_Module *mod = NULL;
-
-               unw_get_reg(&cursor, UNW_REG_IP, &ip);
-
-               if (dwfl)
-                       mod = dwfl_addrmodule(dwfl, ip);
-
-               if (mod) {
-                       const char *src, *dwfl_name;
-                       Dwfl_Line *line;
-                       int lineno;
-                       GElf_Sym sym;
-
-                       line = dwfl_module_getsrc(mod, ip);
-                       dwfl_name = dwfl_module_addrsym(mod, ip, &sym, NULL);
-
-                       if (line && dwfl_name) {
-                               src = dwfl_lineinfo(line, NULL, &lineno, NULL, 
NULL, NULL);
-                               igt_info("  #%d %s:%d %s()\n", stack_num++, 
src, lineno, dwfl_name);
-                               continue;
-                       }
-               }
-
-               if (unw_get_proc_name(&cursor, name, 255, &off) < 0)
-                       igt_info("  #%d [<unknown>+0x%x]\n", stack_num++,
-                                (unsigned int) ip);
-               else
-                       igt_info("  #%d [%s+0x%x]\n", stack_num++, name,
-                                (unsigned int) off);
-       }
-
-       if (dwfl)
-               dwfl_end(dwfl);
 }
 
 static const char hex[] = "0123456789abcdef";
@@ -1420,25 +1361,6 @@ xprintf(const char *fmt, ...)
 
 static void print_backtrace_sig_safe(void)
 {
-       unw_cursor_t cursor;
-       unw_context_t uc;
-       int stack_num = 0;
-
-       write_stderr("Stack trace: \n");
-
-       unw_getcontext(&uc);
-       unw_init_local(&cursor, &uc);
-       while (unw_step(&cursor) > 0) {
-               char name[255];
-               unw_word_t off;
-
-               if (unw_get_proc_name(&cursor, name, 255, &off) < 0)
-                       xstrlcpy(name, "<unknown>", 10);
-
-               xprintf(" #%d [%s+0x%x]\n", stack_num++, name,
-                               (unsigned int) off);
-
-       }
 }
 
 void __igt_fail_assert(const char *domain, const char *file, const int line,
diff --git a/lib/meson.build b/lib/meson.build
index 7e2c9b7a..26cef0c6 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -59,7 +59,6 @@ lib_deps = [
        libkmod,
        libprocps,
        libudev,
-       libunwind,
        libdw,
        pciaccess,
        pthreads,
diff --git a/meson.build b/meson.build
index eff35585..86ad6602 100644
--- a/meson.build
+++ b/meson.build
@@ -102,7 +102,6 @@ build_info += 'With libdrm: ' + ','.join(libdrm_info)
 pciaccess = dependency('pciaccess', version : '>=0.10')
 libkmod = dependency('libkmod')
 libprocps = dependency('libprocps', required : true)
-libunwind = dependency('libunwind', required : true)
 libdw = dependency('libdw', required : true)
 ssl = dependency('openssl', required : true)
 pixman = dependency('pixman-1', required : true)
@@ -217,12 +216,15 @@ prefix = get_option('prefix')
 bindir = get_option('bindir')
 datadir = join_paths(get_option('datadir'), 'igt-gpu-tools')
 includedir = get_option('includedir')
+fullincdir = join_paths(prefix, includedir)
 libdir = get_option('libdir')
 libexecdir = join_paths(get_option('libexecdir'), 'igt-gpu-tools')
 amdgpudir = join_paths(libexecdir, 'amdgpu')
 mandir = get_option('mandir')
 pkgconfigdir = join_paths(libdir, 'pkgconfig')
 
+inc = [ include_directories(fullincdir, join_paths( fullincdir, 'libdrm')), 
inc ]
+
 if get_option('use_rpath')
        # Set up runpath for the test executables towards libigt.so.
        # The path should be relative to $ORIGIN so the library is
diff --git a/tests/gem_userptr_blits.c b/tests/gem_userptr_blits.c
index 909dd19d..92d5a6e1 100644
--- a/tests/gem_userptr_blits.c
+++ b/tests/gem_userptr_blits.c
@@ -1069,6 +1069,7 @@ static void store_dword_rand(int i915, unsigned int 
engine,
 
 static void test_readonly(int i915)
 {
+#if 0
        unsigned char orig[SHA_DIGEST_LENGTH];
        uint64_t aperture_size;
        uint32_t whandle, rhandle;
@@ -1178,6 +1179,7 @@ static void test_readonly(int i915)
 
        munmap(space, total);
        munmap(pages, sz);
+#endif
 }
 
 static jmp_buf sigjmp;
diff --git a/tools/meson.build b/tools/meson.build
index 79f36aa9..5e990cd7 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -90,11 +90,6 @@ install_subdir('registers', install_dir : datadir,
                 'Makefile', 'Makefile.in', 'Makefile.am',
               ])
 
-shared_library('intel_aubdump', 'aubdump.c',
-              dependencies : [ lib_igt_chipset, dlsym ],
-              name_prefix : '',
-              install : true)
-
 executable('intel_gpu_top', 'intel_gpu_top.c',
           install : true,
           install_rpath : bindir_rpathdir,
@@ -104,7 +99,5 @@ conf_data = configuration_data()
 conf_data.set('prefix', prefix)
 conf_data.set('exec_prefix', '${prefix}')
 conf_data.set('libdir', join_paths('${prefix}', libdir))
-configure_file(input : 'intel_aubdump.in', output : 'intel_aubdump',
-               configuration : conf_data, install_dir : bindir)
 
 subdir('null_state_gen')
-- 
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to