linux/drivers/gpu/drm/i915/selftests
Chris Wilson 4797948071 drm/i915: Squash repeated awaits on the same fence
Track the latest fence waited upon on each context, and only add a new
asynchronous wait if the new fence is more recent than the recorded
fence for that context. This requires us to filter out unordered
timelines, which are noted by DMA_FENCE_NO_CONTEXT. However, in the
absence of a universal identifier, we have to use our own
i915->mm.unordered_timeline token.

v2: Throw around the debug crutches
v3: Inline the likely case of the pre-allocation cache being full.
v4: Drop the pre-allocation support, we can lose the most recent fence
in case of allocation failure -- it just means we may emit more awaits
than strictly necessary but will not break.
v5: Trim allocation size for leaf nodes, they only need an array of u32
not pointers.
v6: Create mock_timeline to tidy selftest writing
v7: s/intel_timeline_sync_get/intel_timeline_sync_is_later/ (Tvrtko)
v8: Prune the stale sync points when we idle.
v9: Include a small benchmark in the kselftests
v10: Separate the idr implementation into its own compartment. (Tvrkto)
v11: Refactor igt_sync kselftests to avoid deep nesting (Tvrkto)
v12: __sync_leaf_idx() to assert that p->height is 0 when checking leaves
v13: kselftests to investigate struct i915_syncmap itself (Tvrtko)
v14: Foray into ascii art graphs
v15: Take into account that the random lookup/insert does 2 prng calls,
not 1, when benchmarking, and use for_each_set_bit() (Tvrtko)
v16: Improved ascii art

Signed-off-by: Chris 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 <tvrtko.ursulin@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170503093924.5320-4-chris@chris-wilson.co.uk
2017-05-03 11:08:48 +01:00
..
huge_gem_object.c
huge_gem_object.h
i915_gem_coherency.c drm/i915: Treat WC a separate cache domain 2017-04-12 12:35:17 +01:00
i915_gem_context.c drm/i915/selftests: Catch error from mock_file() 2017-03-13 13:21:18 +00:00
i915_gem_dmabuf.c drm/i915: Add a live dmabuf selftest 2017-02-13 20:45:51 +00:00
i915_gem_evict.c drm/i915/selftests: exercise cache domain eviction 2017-03-09 08:42:39 +00:00
i915_gem_gtt.c drm/i915/selftests: Fix error path for ggtt walk_hole() 2017-03-13 11:16:09 +00:00
i915_gem_object.c drm/i915: Wake device for emitting request during selftest 2017-04-12 13:38:06 +01:00
i915_gem_request.c drm/i915: Treat WC a separate cache domain 2017-04-12 12:35:17 +01:00
i915_gem_timeline.c drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_live_selftests.h drm/i915: Add initial selftests for hang detection and resets 2017-02-13 20:46:53 +00:00
i915_mock_selftests.h drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_random.c drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_random.h drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_selftest.c drivers/gpu/drm/i915/selftests/i915_selftest.c: fix build with gcc-4.4.4 2017-03-10 09:06:10 +00:00
i915_syncmap.c drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_vma.c drm/i915: Test creation of partial VMA 2017-02-13 20:46:43 +00:00
intel_breadcrumbs.c drm/i915: Split breadcrumbs spinlock into two 2017-03-03 20:19:13 +00:00
intel_hangcheck.c drm/i915: Move retire-requests into i915_gem_wait_for_idle() 2017-03-31 12:03:46 +01:00
intel_uncore.c
mock_context.c
mock_context.h
mock_dmabuf.c drm/i915: Add some mock tests for dmabuf interop 2017-02-13 20:45:50 +00:00
mock_dmabuf.h drm/i915: Add some mock tests for dmabuf interop 2017-02-13 20:45:50 +00:00
mock_drm.c drm/i915/selftests: Allocate inode/file dynamically 2017-04-20 09:33:46 +01:00
mock_drm.h
mock_engine.c drm/i915: Generate the engine name based on the instance number 2017-04-11 12:58:10 +01:00
mock_engine.h
mock_gem_device.c drm/i915: Add stub mmio read/write routines to mock device 2017-04-12 13:37:02 +01:00
mock_gem_device.h
mock_gem_object.h
mock_gtt.c
mock_gtt.h
mock_request.c drm/i915: checking for NULL instead of IS_ERR() in mock selftests 2017-04-13 21:26:56 +01:00
mock_request.h drm/i915: Exercise request cancellation using a mock selftest 2017-02-23 14:50:42 +00:00
mock_timeline.c drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
mock_timeline.h drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
mock_uncore.c drm/i915: Add stub mmio read/write routines to mock device 2017-04-12 13:37:02 +01:00
mock_uncore.h drm/i915: Add stub mmio read/write routines to mock device 2017-04-12 13:37:02 +01:00
scatterlist.c drm/i915: split out check for noncontiguous pfn range 2017-03-21 10:22:42 +00:00