1. 05 Nov, 2018 1 commit
  2. 31 Oct, 2018 1 commit
    • Daniel Vetter's avatar
      lib: Make libunwind optional again · 2908e4c6
      Daniel Vetter authored
      Apparently it's really not great to require it for a bunch of
      platforms. Requested by Sean and Eric.
      
      v2: Use combo option (Petri).
      
      v3: Fix the right option (Petri)
      
      v4: try a bit harder ...
      
      v5: Even more simplification (Dylan)
      
      Cc: Dylan Baker <dylan@pnwbakers.com>
      Cc: Petri Latvala <petri.latvala@intel.com>
      Reviewed-by: Eric Anholt <eric@anholt.net> (v1)
      Reviewed-by: Petri Latvala's avatarPetri Latvala <petri.latvala@intel.com>
      Cc: Sean Paul <sean@poorly.run>
      Cc: Eric Anholt <eric@anholt.net>
      Signed-off-by: Daniel Vetter's avatarDaniel Vetter <daniel.vetter@intel.com>
      2908e4c6
  3. 08 Oct, 2018 1 commit
  4. 30 Aug, 2018 1 commit
    • Maarten Lankhorst's avatar
      lib/core: Use libdw to decode stack trace with debugging symbols, v2. · e39e0991
      Maarten Lankhorst authored
      libdw is a new dependency built from the elfutils package. It provides
      us a way to generate line numbers and file names from the instruction
      pointer.
      
      elfutils is LGPLv3 or GPLv2, so it's ok to link against it.
      
      Before:
      IGT-Version: 1.23-g8ae86abd419d (x86_64) (Linux: 4.16.0-1-amd64 x86_64)
      Starting subtest: fail-result
      (meta_test:29661) CRITICAL: Test assertion failure function test_result, file ../tests/meta_test.c:94:
      (meta_test:29661) CRITICAL: Failed assertion: result == 1
      (meta_test:29661) CRITICAL: error: 0 != 1
      Stack trace:
        #0 [__igt_fail_assert+0x20a]
        #1 [test_result+0x7a]
        #2 [__real_main120+0x240]
        #3 [main+0x4a]
        #4 (../csu/libc-start.c) __libc_start_main:344
        #5 [_start+0x2a]
      
      After:
      IGT-Version: 1.23-g8ae86abd419d (x86_64) (Linux: 4.16.0-1-amd64 x86_64)
      Starting subtest: fail-result
      (meta_test:1357) CRITICAL: Test assertion failure function test_result, file ../tests/meta_test.c:94:
      (meta_test:1357) CRITICAL: Failed assertion: result == 1
      (meta_test:1357) CRITICAL: error: 0 != 1
      Stack trace:
        #0 ../lib/igt_core.c:1467 __igt_fail_assert()
        #1 ../tests/meta_test.c:95 test_result()
        #2 ../tests/meta_test.c:137 __real_main120()
        #3 ../tests/meta_test.c:120 main()
        #4 ../csu/libc-start.c:344 __libc_start_main()
        #5 [_start+0x2a]
      
      Changes since v1:
      - Add libdw dependency to readme.
      - Change backtrace format slightly.
      
      Cc: Petri Latvala <petri.latvala@intel.com>
      Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      [mlankhorst: Add description about libdw in commit msg, name -> dwfl_name]
      Reviewed-by: Petri Latvala's avatarPetri Latvala <petri.latvala@intel.com>
      e39e0991
  5. 13 Aug, 2018 1 commit
  6. 09 Aug, 2018 1 commit
    • Petri Latvala's avatar
      runner: New test runner · 18c1e752
      Petri Latvala authored
      This is a new test runner to replace piglit. Piglit has been very
      useful as a test runner, but certain improvements have been very
      difficult if possible at all in a generic test running framework.
      
      Important improvements over piglit:
      
      - Faster to launch. Being able to make assumptions about what we're
        executing makes it possible to save significant amounts of time. For
        example, a testlist file's line "igt@somebinary@somesubtest" already
        has all the information we need to construct the correct command
        line to execute that particular subtest, instead of listing all
        subtests of all test binaries and mapping them to command
        lines. Same goes for the regexp filters command line flags -t and
        -x; If we use -x somebinaryname, we don't need to list subtests from
        somebinaryname, we already know none of them will get executed.
      
      - Logs of incomplete tests. Piglit collects test output to memory and
        dumps them to a file when the test is complete. The new runner
        writes all output to disk immediately.
      
      - Ability to execute multiple subtests in one binary execution. This
        was possible with piglit, but its semantics made it very hard to
        implement in practice. For example, having a testlist file not only
        selected a subset of tests to run, but also mandated that they be
        executed in the same order.
      
      - Flexible timeout support. Instead of mandating a time tests cannot
        exceed, the new runner has a timeout on inactivity. Activity is
        any output on the test's stdout or stderr, or kernel activity via
        /dev/kmsg.
      
      The runner is fairly piglit compatible. The command line is very
      similar, with a few additions. IGT_TEST_ROOT environment flag is still
      supported, but can also be set via command line (in place of igt.py in
      piglit command line).
      
      The results are a set of log files, processed into a piglit-compatible
      results.json file (BZ2 compression TODO). There are some new fields in
      the json for extra information:
      
      - "igt-version" contains the IGT version line. In
        multiple-subtests-mode the version information is only printed once,
        so it needs to be duplicated to all subtest results this way.
      - "dmesg-warnings" contains the dmesg lines that triggered a
        dmesg-warn/dmesg-fail state.
      - Runtime information will be different. Piglit takes a timestamp at
        the beginning and at the end of execution for runtime. The new
        runner uses the subtest output text. The binary execution time will
        also be included; The key "igt@somebinary" will have the runtime of
        the binary "somebinary", whereas "igt@somebinary@a" etc will have
        the runtime of the subtests. Substracting the subtest runtimes from
        the binary runtime yields the total time spent doing setup in
        igt_fixture blocks.
      
      v2:
       - use clock handling from igt_core instead of copypaste
       - install results binary
       - less magic numbers
       - scanf doesn't give empty strings after all
       - use designated array initialization with _F_JOURNAL and pals
       - add more comments to dump_dmesg
       - use signal in kill_child instead of bool
       - use more 'usual' return values for execute_entry
       - use signal number instead of magic integers
       - use IGT_EXIT_INVALID instead of magic 79
       - properly remove files in clear_test_result_directory()
       - remove magic numbers
       - warn if results directory contains extra files
       - fix naming in matches_any
       - construct command line in a cleaner way in add_subtests()
       - clarify error in filtered_job_list
       - replace single string fprintfs with fputs
       - use getline() more sanely
       - refactor string constants to a shared header
       - explain non-nul-terminated string handling in resultgen
       - saner line parsing
       - rename gen_igt_name to generate_piglit_name
       - clean up parse_result_string
       - explain what we're parsing in resultgen
       - explain the runtime accumulation in add_runtime
       - refactor result overriding
       - stop passing needle sizes to find_line functions
       - refactor stdout/stderr parsing
       - fix regex whitelist compiling
       - add TODO for suppressions.txt
       - refactor dmesg parsing
       - fill_from_journal returns void
       - explain missing result fields with TODO comments
       - log_level parsing with typeof
       - pass stdout/stderr to usage() instead of a bool
       - fix absolute_path overflow
       - refactor settings serialization
       - remove maybe_strdup function
       - refactor job list serialization
       - refactor resuming, add new resume binary
       - catch mmap failure correctly
      
      v3:
       - rename runner to igt_runner, etc
       - add meson option for building the runner
       - use UPPER_CASE names for string constants
       - add TODO comments for future refactoring
       - add a midding close()
       - const correctness where applicable
       - also build with autotools
      Signed-off-by: Petri Latvala's avatarPetri Latvala <petri.latvala@intel.com>
      Reviewed-by: Arkadiusz Hiler's avatarArkadiusz Hiler <arkadiusz.hiler@intel.com>
      18c1e752
  7. 08 Aug, 2018 1 commit
  8. 25 Jul, 2018 2 commits
  9. 18 Jul, 2018 1 commit
  10. 13 Jul, 2018 1 commit
    • Chris Wilson's avatar
      igt/gem_userptr: Check read-only mappings · caea9c5b
      Chris Wilson authored
      Setup a userptr object that only has a read-only mapping back to a file
      store (memfd). Then attempt to write into that mapping using the GPU and
      assert that those writes do not land (while also writing via a writable
      userptr mapping into the same memfd to verify that the GPU is working!)
      
      v2: Pull the random batch construction into a routine to avoid
      duplication.
      Signed-off-by: Chris Wilson's avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Reviewed-by: Tvrtko Ursulin's avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      caea9c5b
  11. 12 Jul, 2018 1 commit
  12. 25 Jun, 2018 2 commits
    • Petri Latvala's avatar
      meson: Add options to control optional parts · 0e98bf69
      Petri Latvala authored
      Distributions want explicit control over optional parts so they can
      state runtime dependencies before building. Let's restore the
      functionality autotools used to provide.
      
      Where possible, the selection is done by choosing whether to build a
      particular item and the option name is build_$item. Example:
      build_overlay. Where not possible, the option name is
      with_$item. Example: with_valgrind.
      
      Array options require a bump of required meson version to 0.44. Debian
      stable has meson 0.37 which is already too old, stable-backports has
      0.45, CI uses 0.45. Mesa's meson requirement is 0.44.1, for a
      perspective.
      
      Note, the old hack for not building docs when cross-compiling is
      gone, as doc building can be explicitly controlled now.
      
      v2: glib not optional
      v3: bump meson version to 0.44
      Signed-off-by: Petri Latvala's avatarPetri Latvala <petri.latvala@intel.com>
      Cc: Matt Turner <mattst88@gmail.com>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Cc: Eric Anholt <eric@anholt.net>
      Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
      Signed-off-by: Arkadiusz Hiler's avatarArkadiusz Hiler <arkadiusz.hiler@intel.com>
      Reviewed-by: Daniel Vetter's avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      0e98bf69
    • Petri Latvala's avatar
      Make GLib mandatory · 9bbfbb1c
      Petri Latvala authored
      GLib was originally made optional for Android builds, and Android
      support was dropped a while ago due to lack of use and maintenance.
      
      Building without GLib was broken without bug reports anyway.
      Signed-off-by: Petri Latvala's avatarPetri Latvala <petri.latvala@intel.com>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
      Reviewed-by: Daniel Vetter's avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      9bbfbb1c
  13. 16 May, 2018 1 commit
  14. 23 Mar, 2018 1 commit
  15. 09 Mar, 2018 2 commits
  16. 27 Feb, 2018 1 commit
  17. 26 Feb, 2018 1 commit
    • Petri Latvala's avatar
      meson: Don't build docs when cross-compiling · a2664f86
      Petri Latvala authored
      Building documentation requires executing all test binaries to produce
      their respective description texts. This can be a very time-consuming
      process, if viable at all, when the target arch differs from the
      host.
      
      Don't process the doc directory at all when an exe wrapper is
      setup. This avoids the runtime penalty when the target binaries are
      executed through qemu, but leaves everything as-is when the target
      binaries can be directly executed, like when cross-compiling to x86
      from x86_64 host.
      Signed-off-by: Petri Latvala's avatarPetri Latvala <petri.latvala@intel.com>
      Cc: Eric Anholt <eric@anholt.net>
      Reviewed-by: Eric Anholt's avatarEric Anholt <eric@anholt.net>
      a2664f86
  18. 23 Feb, 2018 1 commit
  19. 17 Jan, 2018 1 commit
  20. 16 Jan, 2018 2 commits
  21. 05 Dec, 2017 1 commit
    • Daniel Vetter's avatar
      meson: gtkdoc support · 491e8c17
      Daniel Vetter authored
      Bunch of neat improvements:
      
      - xml generates correctly depend upon the test binaries
      - no need to re-run autogen.sh when new chapters/functions get added,
        all handed by meson
      
      Still one issue:
      
      - the gtkdoc target doesn't depend upon the custom_target yet, hacked
        around using build_by_default: true
      
        This is an issue known to upstream already:
      
        https://github.com/mesonbuild/meson/issues/2148
      
      v2: Bump meson version to 0.42, since that's the first release which
      adds the build dir when running the gtkdoc tools, and hence allows
      including generated files.
      
      v2:
      - Undo the bump, it's only needed for generated source files. Other
        generated files as input should work with 0.40 already.
      
      - Generate version.xml from version.xml.in, which allows us to keep
        the &version; entity.
      
      v3: Add github issue link.
      
      v4:
      - Resurrect lost KEYWORDS (Petri)
      - Fix issue when running with a clean build, files() doesn't work on generate
        files (Petri).
      Reviewed-by: Petri Latvala's avatarPetri Latvala <petri.latvala@intel.com>
      Signed-off-by: Daniel Vetter's avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      491e8c17
  22. 04 Dec, 2017 1 commit
  23. 29 Nov, 2017 1 commit
  24. 21 Nov, 2017 2 commits
  25. 24 Oct, 2017 1 commit
  26. 18 Oct, 2017 1 commit
  27. 04 Oct, 2017 1 commit
  28. 03 Oct, 2017 1 commit
  29. 20 Sep, 2017 1 commit
  30. 08 Sep, 2017 5 commits