MAINTAINERS | 1 NEWS | 43 benchmarks/.gitignore | 3 benchmarks/Android.mk | 5 benchmarks/Makefile.am | 1 benchmarks/Makefile.sources | 7 benchmarks/ewma.h | 71 benchmarks/gem_busy.c | 16 benchmarks/gem_exec_trace.c | 447 +++- benchmarks/gem_exec_tracer.c | 241 +- benchmarks/gem_latency.c | 27 benchmarks/gem_wsim.c | 2273 ++++++++++++++++++++++++ benchmarks/ilog2.h | 104 + benchmarks/wsim/README | 112 + benchmarks/wsim/media_17i7.wsim | 7 benchmarks/wsim/media_19.wsim | 10 benchmarks/wsim/media_1n2_480p.wsim | 9 benchmarks/wsim/media_1n2_asy.wsim | 9 benchmarks/wsim/media_1n3_480p.wsim | 13 benchmarks/wsim/media_1n3_asy.wsim | 13 benchmarks/wsim/media_1n4_480p.wsim | 17 benchmarks/wsim/media_1n4_asy.wsim | 17 benchmarks/wsim/media_1n5_480p.wsim | 21 benchmarks/wsim/media_1n5_asy.wsim | 21 benchmarks/wsim/media_load_balance_17i7.wsim | 7 benchmarks/wsim/media_load_balance_19.wsim | 10 benchmarks/wsim/media_load_balance_4k12u7.wsim | 4 benchmarks/wsim/media_load_balance_fhd26u7.wsim | 25 benchmarks/wsim/media_load_balance_hd01.wsim | 25 benchmarks/wsim/media_load_balance_hd06mp2.wsim | 4 benchmarks/wsim/media_load_balance_hd12.wsim | 4 benchmarks/wsim/media_load_balance_hd17i4.wsim | 7 benchmarks/wsim/media_mfe2_480p.wsim | 9 benchmarks/wsim/media_mfe3_480p.wsim | 13 benchmarks/wsim/media_mfe4_480p.wsim | 17 benchmarks/wsim/media_nn_1080p.wsim | 5 benchmarks/wsim/media_nn_1080p_s1.wsim | 8 benchmarks/wsim/media_nn_1080p_s2.wsim | 10 benchmarks/wsim/media_nn_1080p_s3.wsim | 11 benchmarks/wsim/media_nn_480p.wsim | 5 benchmarks/wsim/vcs1.wsim | 26 benchmarks/wsim/vcs_balanced.wsim | 26 configure.ac | 26 demos/Android.mk | 3 dev/null |binary lib/Android.mk | 7 lib/Makefile.am | 7 lib/Makefile.sources | 10 lib/drm_mm_selftests.h | 24 lib/drmtest.c | 17 lib/drmtest.h | 1 lib/i915_live_selftests.h | 19 lib/i915_mock_selftests.h | 20 lib/i915_pciids.h | 24 lib/igt.h | 2 lib/igt_aux.c | 47 lib/igt_aux.h | 9 lib/igt_chamelium.h | 3 lib/igt_core.c | 26 lib/igt_core.h | 1 lib/igt_debugfs.c | 410 ++-- lib/igt_debugfs.h | 34 lib/igt_dummyload.c | 85 lib/igt_dummyload.h | 4 lib/igt_gt.c | 81 lib/igt_gt.h | 5 lib/igt_kmod.c | 55 lib/igt_kmod.h | 14 lib/igt_kms.c | 341 ++- lib/igt_kms.h | 8 lib/igt_rand.c | 19 lib/igt_rand.h | 2 lib/igt_sysfs.c | 6 lib/intel_device_info.c | 11 lib/intel_io.h | 2 lib/intel_mmio.c | 4 lib/intel_os.c | 9 lib/ioctl_wrappers.c | 53 lib/ioctl_wrappers.h | 6 lib/sw_sync.c | 8 lib/tests/.gitignore | 1 lib/tests/Android.mk | 4 lib/tests/Makefile.sources | 1 lib/tests/igt_hdmi_inject.c | 96 + overlay/Makefile.am | 2 overlay/gpu-perf.c | 26 overlay/gpu-perf.h | 1 overlay/gpu-top.c | 3 overlay/overlay.c | 5 scripts/Makefile.am | 2 scripts/media-bench.pl | 609 ++++++ scripts/trace.pl | 1086 +++++++++++ tests/Android.mk | 9 tests/Makefile.am | 37 tests/Makefile.sources | 256 +- tests/amdgpu/amd_basic.c | 1427 +++++++++++++++ tests/amdgpu/amd_cs_nop.c | 245 ++ tests/amdgpu/amd_prime.c | 430 ++++ tests/chamelium.c | 20 tests/drm_import_export.c | 4 tests/drm_mm.c | 17 tests/drm_vma_limiter_cached.c | 1 tests/drv_hangman.c | 7 tests/drv_missed_irq.c | 80 tests/drv_module_reload.c | 17 tests/drv_selftest.c | 25 tests/drv_suspend.c | 8 tests/feat_profile.json | 111 + tests/gem_bad_blit.c | 1 tests/gem_bad_reloc.c | 4 tests/gem_busy.c | 31 tests/gem_caching.c | 1 tests/gem_concurrent_all.c | 6 tests/gem_cs_prefetch.c | 10 tests/gem_cs_tlb.c | 2 tests/gem_ctx_create.c | 22 tests/gem_ctx_thrash.c | 3 tests/gem_double_irq_loop.c | 1 tests/gem_eio.c | 2 tests/gem_exec_async.c | 9 tests/gem_exec_await.c | 393 ++++ tests/gem_exec_blt.c | 2 tests/gem_exec_capture.c | 179 + tests/gem_exec_fence.c | 306 ++- tests/gem_exec_flush.c | 30 tests/gem_exec_gttfill.c | 19 tests/gem_exec_latency.c | 5 tests/gem_exec_nop.c | 183 + tests/gem_exec_parallel.c | 16 tests/gem_exec_parse.c | 2 tests/gem_exec_reloc.c | 173 + tests/gem_exec_schedule.c | 72 tests/gem_exec_store.c | 127 + tests/gem_exec_suspend.c | 25 tests/gem_exec_whisper.c | 68 tests/gem_hangcheck_forcewake.c | 1 tests/gem_media_fill.c | 2 tests/gem_mmap_gtt.c | 21 tests/gem_mmap_wc.c | 24 tests/gem_mocs_settings.c | 14 tests/gem_partial_pwrite_pread.c | 1 tests/gem_persistent_relocs.c | 3 tests/gem_pipe_control_store_loop.c | 2 tests/gem_ppgtt.c | 16 tests/gem_pread_after_blit.c | 1 tests/gem_pwrite.c | 6 tests/gem_read_read_speed.c | 1 tests/gem_reloc_vs_gpu.c | 2 tests/gem_render_linear_blits.c | 3 tests/gem_render_tiled_blits.c | 3 tests/gem_ringfill.c | 11 tests/gem_seqno_wrap.c | 77 tests/gem_set_tiling_vs_blt.c | 1 tests/gem_shrink.c | 43 tests/gem_softpin.c | 1 tests/gem_spin_batch.c | 47 tests/gem_storedw_batches_loop.c | 1 tests/gem_storedw_loop.c | 13 tests/gem_sync.c | 16 tests/gem_tiled_pread_pwrite.c | 69 tests/gem_tiled_swapping.c | 9 tests/gem_unref_active_buffers.c | 1 tests/gem_userptr_blits.c | 90 tests/gem_workarounds.c | 17 tests/gem_write_read_ring_switch.c | 1 tests/igt_command_line.sh | 52 tests/intel-ci/Makefile.am | 7 tests/intel-ci/README | 15 tests/intel-ci/extended.testlist | 1839 +++++++++++++++++++ tests/intel-ci/fast-feedback.testlist | 7 tests/intel-ci/generic.testlist | 125 + tests/intel-ci/meta.testlist | 7 tests/kms_atomic.c | 82 tests/kms_atomic_transition.c | 4 tests/kms_ccs.c | 4 tests/kms_chv_cursor_fail.c | 4 tests/kms_concurrent.c | 429 ++++ tests/kms_crtc_background_color.c | 4 tests/kms_cursor_crc.c | 12 tests/kms_cursor_legacy.c | 130 - tests/kms_draw_crc.c | 2 tests/kms_fbc_crc.c | 8 tests/kms_fbcon_fbt.c | 44 tests/kms_flip.c | 2 tests/kms_flip_tiling.c | 10 tests/kms_frontbuffer_tracking.c | 50 tests/kms_hdmi_inject.c | 272 ++ tests/kms_invalid_dotclock.c | 6 tests/kms_mmap_write_crc.c | 4 tests/kms_mmio_vs_cs_flip.c | 8 tests/kms_pipe_color.c | 5 tests/kms_pipe_crc_basic.c | 89 tests/kms_plane.c | 4 tests/kms_plane_lowres.c | 14 tests/kms_plane_multiple.c | 4 tests/kms_plane_scaling.c | 4 tests/kms_properties.c | 64 tests/kms_psr_sink_crc.c | 19 tests/kms_pwrite_crc.c | 4 tests/kms_render.c | 1 tests/kms_rotation_crc.c | 273 +- tests/kms_setmode.c | 24 tests/kms_sink_crc_basic.c | 44 tests/kms_universal_plane.c | 18 tests/kms_vblank.c | 185 + tests/meta_test.c | 149 + tests/perf.c | 36 tests/pm_lpsp.c | 2 tests/pm_rc6_residency.c | 52 tests/pm_rpm.c | 73 tests/pm_rps.c | 86 tests/pm_sseu.c | 33 tests/prime_busy.c | 10 tests/prime_mmap_coherency.c | 41 tests/prime_mmap_kms.c | 2 tests/prime_vgem.c | 22 tests/testdisplay_hotplug.c | 2 tests/vc4_dmabuf_poll.c | 85 tests/vgem_basic.c | 3 tools/Android.mk | 14 tools/Makefile.am | 1 tools/aubdump.c | 5 tools/intel_display_crc.c | 2 tools/intel_display_poller.c | 8 tools/intel_dp_compliance.c | 16 tools/intel_error_decode.c | 187 + tools/intel_forcewaked.c | 10 tools/intel_gpu_top.c | 8 tools/intel_guc_logger.c | 10 tools/intel_gvtg_test.c | 2 tools/intel_infoframes.c | 7 tools/intel_l3_parity.c | 4 tools/intel_l3_parity.h | 2 tools/intel_l3_udev_listener.c | 2 tools/intel_panel_fitter.c | 9 tools/intel_perf_counters.c | 2 tools/intel_reg.c | 11 tools/intel_watermark.c | 23 238 files changed, 14319 insertions(+), 2305 deletions(-)
New commits: commit d492abfbad687d3c5f343b836da4c7316a57ba77 Author: Petri Latvala <petri.latv...@intel.com> Date: Fri Jun 9 16:27:11 2017 +0300 Update NEWS, bump version to 1.19. Signed-off-by: Petri Latvala <petri.latv...@intel.com> diff --git a/NEWS b/NEWS index bb893a3..80136fa 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,46 @@ +Release 1.19 (2017-06-09) +------------------------- + +Library changes: + +- Changed debugfs handlers to open files for the DRM device in use, + for setups with more than one DRM device. (Tomeu Vizoso) + +- Added support for 4K and audio HDMI EDID injection. (Abdiel + Janulgue, Marius Vlad) + +- Added support for AMDGPU devices. (Chris Wilson) + +Tools changes: + +- intel_error_decode now automatically opens a pager. (Chris Wilson) + +- intel_error_decode now dumps the GuC firmware logs if available. + (Chris Wilson) + +Benchmark changes: + +- gem_wsim: New benchmark that simulates command submission + workloads. (Tvrtko Ursulin) + +Scripts changes: + +- trace.pl: New tool to parse i915 tracepoints for performance + analysis. (Tvrtko Ursulin) + +- media-bench.pl: New tool to programmatically analyze simulated media + workloads using gem_wsim to find the optimal load balancing + strategy. (Tvrtko Ursulin) + +Test changes: + +- Imported amdgpu tests from libdrm. (Chris Wilson) + +- Multiple other new tests. + + +And many other bug fixes and improvements. + Release 1.18 (2017-03-13) ------------------------- diff --git a/configure.ac b/configure.ac index fa0593b..0418e60 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ([2.60]) AC_INIT([intel-gpu-tools], - [1.18], + [1.19], [https://bugs.freedesktop.org/enter_bug.cgi?product=DRI&component=IGT], [intel-gpu-tools]) commit a493e058325d5bd34a77be3a16d646031dadcdb4 Author: Petri Latvala <petri.latv...@intel.com> Date: Fri Jun 9 15:46:07 2017 +0300 Fix a couple of typos CLFAGS -> CFLAGS Signed-off-by: Petri Latvala <petri.latv...@intel.com> diff --git a/overlay/Makefile.am b/overlay/Makefile.am index 92e0bc8..5472514 100644 --- a/overlay/Makefile.am +++ b/overlay/Makefile.am @@ -4,7 +4,7 @@ endif AM_CPPFLAGS = -I. AM_CFLAGS = $(DRM_CFLAGS) $(PCIACCESS_CFLAGS) $(CWARNFLAGS) \ - $(CAIRO_CFLAGS) $(OVERLAY_CFLAGS) $(WERROR_CLFAGS) + $(CAIRO_CFLAGS) $(OVERLAY_CFLAGS) $(WERROR_CFLAGS) LDADD = $(DRM_LIBS) $(PCIACCESS_LIBS) $(CAIRO_LIBS) $(OVERLAY_LIBS) intel_gpu_overlay_SOURCES = \ diff --git a/tools/Makefile.am b/tools/Makefile.am index c1a797a..18a67ef 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -9,7 +9,7 @@ endif if HAVE_UDEV bin_PROGRAMS += intel_dp_compliance -intel_dp_compliance_CFLAGS = $(AM_CFLAGS) $(GLIB_CLFAGS) +intel_dp_compliance_CFLAGS = $(AM_CFLAGS) $(GLIB_CFLAGS) intel_dp_compliance_LDADD = $(top_builddir)/lib/libintel_tools.la $(GLIB_LIBS) endif commit 09e666d2396c4d0df362809bf5498ab61079d11e Author: Brian Starkey <brian.star...@arm.com> Date: Mon Jun 5 14:28:40 2017 +0100 lib/igt_debugfs: Only use valid values in igt_crc_to_str() Not all elements in the crc array may be valid, so only use the valid ones to generate the string. Signed-off-by: Brian Starkey <brian.star...@arm.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hi...@intel.com> diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c index f5ed3da..80f25c6 100644 --- a/lib/igt_debugfs.c +++ b/lib/igt_debugfs.c @@ -312,10 +312,11 @@ void igt_assert_crc_equal(const igt_crc_t *a, const igt_crc_t *b) */ char *igt_crc_to_string(igt_crc_t *crc) { - char buf[128]; + int i; + char buf[128] = { 0 }; - sprintf(buf, "%08x %08x %08x %08x %08x", crc->crc[0], - crc->crc[1], crc->crc[2], crc->crc[3], crc->crc[4]); + for (i = 0; i < crc->n_words; i++) + sprintf(buf + strlen(buf), "%08x ", crc->crc[i]); return strdup(buf); } commit 4bdcd335961203c07a37aaebf6c441814a6555fa Author: Brian Starkey <brian.star...@arm.com> Date: Mon Jun 5 14:28:39 2017 +0100 lib/igt_debugfs: Remove igt_debugfs_t It's not used anymore, so remove it. Signed-off-by: Brian Starkey <brian.star...@arm.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hi...@intel.com> diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c index 7584be5..f5ed3da 100644 --- a/lib/igt_debugfs.c +++ b/lib/igt_debugfs.c @@ -84,11 +84,6 @@ * General debugfs helpers */ -typedef struct { - char root[128]; - char dri_path[128]; -} igt_debugfs_t; - static bool is_mountpoint(const char *path) { char buf[strlen(path) + 4]; commit bf2a10392eaca70e18163dec40e8bbfcdb54c8ba Author: Brian Starkey <brian.star...@arm.com> Date: Mon Jun 5 14:28:37 2017 +0100 lib/igt_kms: Fix erroneous assert In trying to fix igt_display_init() for devices without cursors, I actually made matters worse. Fix the assert. Fixes: 545aa3398223 lib/igt_kms: Remove redundant cursor code Signed-off-by: Brian Starkey <brian.star...@arm.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hi...@intel.com> diff --git a/lib/igt_kms.c b/lib/igt_kms.c index c77716b..5e2ef97 100644 --- a/lib/igt_kms.c +++ b/lib/igt_kms.c @@ -1794,11 +1794,11 @@ void igt_display_init(igt_display_t *display, int drm_fd) */ igt_assert_eq(pipe->plane_primary, 0); - /* - * There should be no gaps. If there is, something happened - * which we can't handle (e.g. all planes are cursors). - */ - igt_assert_eq(p, last_plane); + /* Check that we filled every slot exactly once */ + if (display->has_cursor_plane) + igt_assert_eq(p, last_plane); + else + igt_assert_eq(p, n_planes); pipe->n_planes = n_planes; commit b5a899316447a357e35b1cd095bdcae98fff5bcf Author: Petri Latvala <petri.latv...@intel.com> Date: Fri Jun 9 14:36:19 2017 +0300 intel-ci: Document the public CI results web page Signed-off-by: Petri Latvala <petri.latv...@intel.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hi...@intel.com> diff --git a/tests/intel-ci/README b/tests/intel-ci/README index ae92460..d17922e 100644 --- a/tests/intel-ci/README +++ b/tests/intel-ci/README @@ -24,6 +24,9 @@ fast-feedback.testlist Fast-feedback is the testlist that is run for Patchwork and Trybot testing. It is also run on various drm-intel-* branches. +The results of CI runs on drm-tip can be found in +https://intel-gfx-ci.01.org/CI/ + Time limit: Full run must complete in 15 minutes on all tested platforms. commit 8648655f6f00119f5546f254ddedee6621c8a1de Author: Petri Latvala <petri.latv...@intel.com> Date: Fri Jun 9 14:32:17 2017 +0300 intel-ci: Have the directory included in the distributed tarballs Signed-off-by: Petri Latvala <petri.latv...@intel.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hi...@intel.com> diff --git a/configure.ac b/configure.ac index 5f80b08..fa0593b 100644 --- a/configure.ac +++ b/configure.ac @@ -360,6 +360,7 @@ AC_CONFIG_FILES([ man/Makefile scripts/Makefile tests/Makefile + tests/intel-ci/Makefile tools/Makefile tools/null_state_gen/Makefile tools/registers/Makefile diff --git a/tests/Makefile.am b/tests/Makefile.am index 873850d..b051364 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,5 +1,7 @@ include Makefile.sources +SUBDIRS = intel-ci + if HAVE_LIBDRM_AMDGPU TESTS_progs += $(AMDGPU_TESTS) endif diff --git a/tests/intel-ci/Makefile.am b/tests/intel-ci/Makefile.am new file mode 100644 index 0000000..9fb9744 --- /dev/null +++ b/tests/intel-ci/Makefile.am @@ -0,0 +1,7 @@ +EXTRA_DIST = \ + extended.testlist \ + fast-feedback.testlist \ + generic.testlist \ + meta.testlist \ + README \ + $(NULL) commit bacc37beac8ced1fb45374608080c842bdbd6ce4 Author: Petri Latvala <petri.latv...@intel.com> Date: Fri Mar 17 14:38:58 2017 +0200 tests/Makefile.am: Only ignore generated gitignore in gitignore When generating the .gitignore file, use /.gitignore instead of .gitignore to not have it apply to subdirectories. Signed-off-by: Petri Latvala <petri.latv...@intel.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hi...@intel.com> diff --git a/tests/Makefile.am b/tests/Makefile.am index 9a1c770..873850d 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -52,7 +52,7 @@ dist_pkgdata_DATA = \ all-local: .gitignore .gitignore: Makefile.sources - @echo "$(pkglibexec_PROGRAMS) $(HANG) test-list.txt test-list-full.txt .gitignore" | sed 's/\s\+/\n/g' | sort > $@ + @echo "$(pkglibexec_PROGRAMS) $(HANG) test-list.txt test-list-full.txt /.gitignore" | sed 's/\s\+/\n/g' | sort > $@ pkgdata_DATA = test-list.txt test-list-full.txt commit 5b13b8f91cc7a6e274d00890a9f0659b52e9ff45 Author: Petri Latvala <petri.latv...@intel.com> Date: Fri Mar 17 15:07:56 2017 +0200 intel-ci: Add comments on test order to fast-feedback.testlist Document the test ordering choices in fast-feedback.testlist. For comments in testlists, piglit commit commit 0c535186d624071098c10003fdafe8f475ed9ae7 Author: Petri Latvala <petri.latv...@intel.com> Date: Wed Feb 1 12:57:45 2017 +0200 framework/programs/run.py: Allow comments in test-list files. is required. Signed-off-by: Petri Latvala <petri.latv...@intel.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hi...@intel.com> diff --git a/tests/intel-ci/fast-feedback.testlist b/tests/intel-ci/fast-feedback.testlist index 5ffa2ce..ce7a41f 100644 --- a/tests/intel-ci/fast-feedback.testlist +++ b/tests/intel-ci/fast-feedback.testlist @@ -1,3 +1,5 @@ +# Keep alphabetically sorted by default + igt@core_auth@basic-auth igt@core_prop_blob@basic igt@drv_getparams_basic@basic-eu-total @@ -270,6 +272,11 @@ igt@vgem_basic@dmabuf-mmap igt@vgem_basic@mmap igt@vgem_basic@second-client igt@vgem_basic@sysfs + +# All tests that do module unloading and reloading are executed last. +# They will sometimes reveal issues of earlier tests leaving the +# driver in a broken state that is not otherwise noticed in that test. + igt@vgem_basic@unload igt@drv_module_reload@basic-reload igt@drv_module_reload@basic-no-display commit b642e1d78fd1ad70cf6b726aae26150a02343c40 Author: Radoslaw Szwichtenberg <radoslaw.szwichtenb...@intel.com> Date: Wed Jun 7 16:29:59 2017 +0200 tests/pm_rps: Replace custom load function with dummy load Replaced custom load implementation with lib counterpart. Cc: Chris Wilson <ch...@chris-wilson.co.uk> Cc: Arkadiusz Hiler <arkadiusz.hi...@intel.com> Signed-off-by: Radoslaw Szwichtenberg <radoslaw.szwichtenb...@intel.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hi...@intel.com> diff --git a/tests/pm_rps.c b/tests/pm_rps.c index 4a21de4..f0455e7 100644 --- a/tests/pm_rps.c +++ b/tests/pm_rps.c @@ -560,58 +560,21 @@ static void reset_gpu(void) close(fd); } -static uint32_t *make_busy(int fd, uint32_t handle) +static void boost_freq(int fd, int *boost_freqs) { - const int gen = intel_gen(intel_get_drm_devid(fd)); - struct drm_i915_gem_exec_object2 obj; - struct drm_i915_gem_relocation_entry reloc; - struct drm_i915_gem_execbuffer2 execbuf; - uint32_t *batch; - int i; + int64_t timeout = 1; + int ring = -1; + igt_spin_t *load; - memset(&execbuf, 0, sizeof(execbuf)); - execbuf.buffers_ptr = (uintptr_t)&obj; - execbuf.buffer_count = 1; - - memset(&obj, 0, sizeof(obj)); - obj.handle = handle; - - obj.relocs_ptr = (uintptr_t)&reloc; - obj.relocation_count = 1; - memset(&reloc, 0, sizeof(reloc)); - - batch = gem_mmap__wc(fd, obj.handle, 0, 4096, PROT_WRITE); - gem_set_domain(fd, obj.handle, - I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT); - - reloc.target_handle = obj.handle; /* recurse */ - reloc.presumed_offset = 0; - reloc.offset = sizeof(uint32_t); - reloc.delta = 0; - reloc.read_domains = I915_GEM_DOMAIN_COMMAND; - reloc.write_domain = 0; - - i = 0; - batch[i] = MI_BATCH_BUFFER_START; - if (gen >= 8) { - batch[i] |= 1 << 8 | 1; - batch[++i] = 0; - batch[++i] = 0; - } else if (gen >= 6) { - batch[i] |= 1 << 8; - batch[++i] = 0; - } else { - batch[i] |= 2 << 6; - batch[++i] = 0; - if (gen < 4) { - batch[i] |= 1; - reloc.delta = 1; - } - } - i++; + load = igt_spin_batch_new(fd, ring, 0); - gem_execbuf(fd, &execbuf); - return batch; + /* Waiting will grant us a boost to maximum */ + gem_wait(fd, load->handle, &timeout); + + read_freqs(boost_freqs); + dump(boost_freqs); + + igt_spin_batch_free(fd, load); } static void waitboost(bool reset) @@ -619,15 +582,9 @@ static void waitboost(bool reset) int pre_freqs[NUMFREQ]; int boost_freqs[NUMFREQ]; int post_freqs[NUMFREQ]; - uint32_t *batch, handle; - int64_t timeout = 1; int fd = drm_open_driver(DRIVER_INTEL); - /* When we wait upon the GPU, we want to temporarily boost it - * to maximum. - */ - load_helper_run(LOW); igt_debug("Apply low load...\n"); @@ -640,15 +597,10 @@ static void waitboost(bool reset) sleep(1); } - igt_debug("Wait for gpu...\n"); - handle = gem_create(fd, 4096); - batch = make_busy(fd, handle); - gem_wait(fd, handle, &timeout); - read_freqs(boost_freqs); - dump(boost_freqs); - *batch = MI_BATCH_BUFFER_END; - munmap(batch, 4096); - gem_close(fd, handle); + /* When we wait upon the GPU, we want to temporarily boost it + * to maximum. + */ + boost_freq(fd, boost_freqs); igt_debug("Apply low load again...\n"); sleep(1); commit 9623c628c54482270f5e4f30df69c1954b105e29 Author: Tvrtko Ursulin <tvrtko.ursu...@intel.com> Date: Fri Jun 9 11:51:57 2017 +0100 media-bench.pl: Add automatic per-client target mode It is useful to be able to specify wps target relative to single client performance when evaluating multiple workloads. Signed-off-by: Tvrtko Ursulin <tvrtko.ursu...@intel.com> diff --git a/scripts/media-bench.pl b/scripts/media-bench.pl index 13e5fdc..0956ef0 100755 --- a/scripts/media-bench.pl +++ b/scripts/media-bench.pl @@ -40,6 +40,7 @@ my $gt2 = 0; my $show_cmds = 0; my $realtime_target = 0; my $wps_target = 0; +my $wps_target_param = 0; my $w_direct; my $balancer; my $nop; @@ -294,7 +295,8 @@ sub find_saturation_point $r = int($rr * ($client_target_s / $time)); } elsif ($c == 1) { $swps = $wps; - return ($c, $wps, $swps) if $wcnt > 1; + return ($c, $wps, $swps) if $wcnt > 1 or + ($wps_target_param < 0 and $wps_target == 0); } $last_wps = $wps; @@ -328,6 +330,8 @@ Supported options: -i pct Engine idleness tolerance. -R wps Run workloads in the real-time mode at wps rate. -T wps Calibrate up to wps/client target instead of GPU saturation. + Negative values set the target based on the single client + performance where target = single-client-wps / -N. -w str Pass-through to gem_wsim. Overrides normal workload selection. ENDHELP exit 0; @@ -348,6 +352,7 @@ $tolerance = $opts{'t'} / 100.0 if defined $opts{'t'}; $idle_tolerance_pct = $opts{'i'} if defined $opts{'i'}; $realtime_target = $opts{'R'} if defined $opts{'R'}; $wps_target = $opts{'T'} if defined $opts{'T'}; +$wps_target_param = $wps_target; $w_direct = $opts{'w'} if defined $opts{'w'}; @workloads = ($w_direct ) if defined $w_direct; @@ -437,15 +442,27 @@ foreach my $wrk (@workloads) { print " No balancing: "; } + $wps_target = 0 if $wps_target_param < 0; + ($c, $w, $s) = find_saturation_point($wrk, $r, 0, (@args, @xargs)); + if ($wps_target_param < 0) { + $wps_target = $s / -$wps_target_param; + + ($c, $w, $s) = + find_saturation_point($wrk, $r, + 0, + (@args, + @xargs)); + } + $wps{$bid} = $w; $cwps{$bid} = $s; - if ($realtime_target > 0 || $wps_target > 0) { + if ($realtime_target > 0 || $wps_target_param > 0) { $mwps{$bid} = $w * $c; } else { $mwps{$bid} = $w + $s; commit aa57274568158dcf5b4726b4398bf448fea79855 Author: Tvrtko Ursulin <tvrtko.ursu...@intel.com> Date: Fri Jun 9 11:51:03 2017 +0100 trace.pl: Handle multi-day uptime Handle multi-day uptime when parsing tracepoint timestamps. Signed-off-by: Tvrtko Ursulin <tvrtko.ursu...@intel.com> diff --git a/scripts/trace.pl b/scripts/trace.pl index 1c7b3fa..aed9b20 100755 --- a/scripts/trace.pl +++ b/scripts/trace.pl @@ -400,7 +400,7 @@ sub sanitize_ctx sub ts { my ($us) = @_; - my ($h, $m, $s); + my ($d, $h, $m, $s); $s = int($us / 1000000); $us = $us % 1000000; @@ -411,7 +411,11 @@ sub ts $h = int($m / 60); $m = $m % 60; - return sprintf('2017-01-01 %02u:%02u:%02u.%06u', int($h), int($m), int($s), int($us)); + $d = 1 + int($h / 24); + $h = $h % 24; + + return sprintf('2017-01-%02u %02u:%02u:%02u.%06u', + int($d), int($h), int($m), int($s), int($us)); } # Main input loop - parse lines and build the internal representation of the commit a663424e2a5ebf3c8e9ab743143e0856f978f7d6 Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Wed Jun 7 11:32:50 2017 +0100 Revert "kms_cursor_legacy: Add a burner thread to make basic-busy-* pass." This reverts commit 7c8703fb02b248c2bcf9756bba8812bcfe7ed5d3. If we expect it to fail until we find a solution, let the hw fail and continue to track the known failure in CI/bugs. Cc: Martin Peres <martin.pe...@linux.intel.com> Acked-by: Martin Peres <martin.pe...@linux.intel.com> diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c index 2eb1d1b..ac05ca5 100644 --- a/tests/kms_cursor_legacy.c +++ b/tests/kms_cursor_legacy.c @@ -618,23 +618,9 @@ static void basic_flip_cursor(igt_display_t *display, do_ioctl(display->drm_fd, DRM_IOCTL_MODE_CURSOR, &arg[0]); busy = NULL; - if (flags & BASIC_BUSY) { + if (flags & BASIC_BUSY) busy = make_fb_busy(display->drm_fd, &fb_info); - /* - * Prevent going into C3 or higher state - * or we may miss vblank interrupts on SNB. - */ - igt_fork(child, 1) { - struct sched_param parm = { .sched_priority = 0 }; - - igt_assert(sched_setscheduler(0, SCHED_IDLE, &parm) == 0); - - while (*busy != MI_BATCH_BUFFER_END) - sched_yield(); - } - } - /* Start with a synchronous query to align with the vblank */ vblank_start = get_vblank(display->drm_fd, pipe, DRM_VBLANK_NEXTONMISS); @@ -699,8 +685,6 @@ static void basic_flip_cursor(igt_display_t *display, delta = get_vblank(display->drm_fd, pipe, 0) - vblank_start; - igt_waitchildren(); - if (!mode_requires_extra_vblank(mode)) miss2 += delta != 1; else commit 73bb3fa53e8ebb05a4e4505e2c7fd0a50b0f07c7 Author: Petri Latvala <petri.latv...@intel.com> Date: Thu Jun 8 15:23:09 2017 +0300 tests: Merge single_kernel_tests and multi_kernel_tests in the build system The separation of testcases with and without subtests in the build system was used in the past, but now both are handled the same way. Merge them together and finally forget about the difference between TESTS_progs and TESTS_progs_M. Signed-off-by: Petri Latvala <petri.latv...@intel.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hi...@intel.com> diff --git a/tests/Makefile.am b/tests/Makefile.am index 12cc6dc..9a1c770 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,19 +1,19 @@ include Makefile.sources if HAVE_LIBDRM_AMDGPU - TESTS_progs_M += $(AMDGPU_TESTS_M) + TESTS_progs += $(AMDGPU_TESTS) endif if HAVE_LIBDRM_NOUVEAU - TESTS_progs_M += $(NOUVEAU_TESTS_M) + TESTS_progs += $(NOUVEAU_TESTS) endif if HAVE_LIBDRM_VC4 - TESTS_progs_M += $(VC4_TESTS_M) + TESTS_progs += $(VC4_TESTS) endif if HAVE_CHAMELIUM -TESTS_progs_M += \ +TESTS_progs += \ chamelium \ $(NULL) endif @@ -21,12 +21,12 @@ endif if BUILD_TESTS test-list.txt: Makefile.sources @echo TESTLIST > $@ - @echo ${single_kernel_tests} ${multi_kernel_tests} >> $@ + @echo ${kernel_tests} >> $@ @echo END TESTLIST >> $@ test-list-full.txt: Makefile.sources @echo TESTLIST > $@ - @echo ${single_kernel_tests} ${multi_kernel_tests} ${extra_multi_kernel_tests} >> $@ + @echo ${kernel_tests} ${extra_kernel_tests} >> $@ @echo END TESTLIST >> $@ @@ -38,13 +38,11 @@ noinst_PROGRAMS = \ pkglibexec_PROGRAMS = \ gem_stress \ $(TESTS_progs) \ - $(TESTS_progs_M) \ - $(TESTS_progs_XM) \ + $(TESTS_progs_X) \ $(NULL) dist_pkglibexec_SCRIPTS = \ $(TESTS_scripts) \ - $(TESTS_scripts_M) \ $(scripts) \ $(NULL) diff --git a/tests/Makefile.sources b/tests/Makefile.sources index 14ea5b6..dafb028 100644 --- a/tests/Makefile.sources +++ b/tests/Makefile.sources @@ -1,10 +1,10 @@ -NOUVEAU_TESTS_M = \ +NOUVEAU_TESTS = \ prime_nv_api \ prime_nv_pcopy \ prime_nv_test \ $(NULL) -VC4_TESTS_M = \ +VC4_TESTS = \ vc4_create_bo \ vc4_dmabuf_poll \ vc4_lookup_fail \ @@ -12,30 +12,53 @@ VC4_TESTS_M = \ vc4_wait_seqno \ $(NULL) -AMDGPU_TESTS_M = \ +AMDGPU_TESTS = \ amdgpu/amd_basic \ amdgpu/amd_cs_nop \ amdgpu/amd_prime \ $(NULL) -TESTS_progs_M = \ +TESTS_progs = \ + core_auth \ core_get_client_auth \ + core_getclient \ + core_getstats \ + core_getversion \ + core_prop_blob \ + core_setmaster_vs_auth \ + drm_import_export \ drm_mm \ + drm_read \ + drm_vma_limiter \ + drm_vma_limiter_cached \ + drm_vma_limiter_cpu \ + drm_vma_limiter_gtt \ drv_getparams_basic \ + drv_hangman \ + drv_missed_irq \ + drv_module_reload \