OpenCloudOS-Kernel/drivers/gpu/drm/i915/selftests
Chris Wilson 9c1477e83e drm/i915/selftests: Exercise adding requests to a full GGTT
A bug recently encountered involved the issue where are we were
submitting requests to different ppGTT, each would pin a segment of the
GGTT for its logical context and ring. However, this is invisible to
eviction as we do not tie the context/ring VMA to a request and so do
not automatically wait upon it them (instead they are marked as pinned,
preventing eviction entirely). Instead the eviction code must flush those
contexts by switching to the kernel context. This selftest tries to
fill the GGTT with contexts to exercise a path where the
switch-to-kernel-context failed to make forward progress and we fail
with ENOSPC.

v2: Make the hole in the filled GGTT explicit.
v3: Swap out the arbitrary timeout for a private notification from
i915_gem_evict_something()

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171012125726.14736-3-chris@chris-wilson.co.uk
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2017-10-12 21:06:26 +01:00
..
huge_gem_object.c drm/i915: introduce page_size members 2017-10-07 10:11:48 +01:00
huge_gem_object.h
huge_pages.c drm/i915/selftests: ditch the kernel context 2017-10-10 21:30:24 +01:00
i915_gem_coherency.c drm/i915: Don't use MI_STORE_DWORD_IMM on Sandybridge/vcs 2017-08-18 11:55:02 +01:00
i915_gem_context.c drm/i915: Don't use MI_STORE_DWORD_IMM on Sandybridge/vcs 2017-08-18 11:55:02 +01:00
i915_gem_dmabuf.c drm/i915: Fix an error checking test 2017-06-27 14:30:56 +01:00
i915_gem_evict.c drm/i915/selftests: Exercise adding requests to a full GGTT 2017-10-12 21:06:26 +01:00
i915_gem_gtt.c drm/i915: s/sg_mask/sg_page_sizes/ 2017-10-09 17:07:29 +01:00
i915_gem_object.c drm/i915: Pin fence for iomap 2017-10-09 17:07:29 +01:00
i915_gem_request.c drm/i915: Use rcu instead of stop_machine in set_wedged 2017-10-11 17:51:21 +02:00
i915_gem_timeline.c drm/i915/selftests: Use mul_u32_u32() for 32b x 32b -> 64b result 2017-09-13 13:27:20 +01:00
i915_live_selftests.h drm/i915/selftests: Exercise adding requests to a full GGTT 2017-10-12 21:06:26 +01:00
i915_mock_selftests.h drm/i915/selftests: huge page tests 2017-10-07 10:12:00 +01:00
i915_random.c Merge drm-upstream/drm-next into drm-intel-next-queued 2017-09-28 15:56:49 +03:00
i915_random.h drm/i915/selftests: Use mul_u32_u32() for 32b x 32b -> 64b result 2017-09-13 13:27:20 +01:00
i915_selftest.c
i915_sw_fence.c drm/i915/selftests: Wrap a timer into a i915_sw_fence 2017-10-12 21:06:26 +01:00
i915_syncmap.c
i915_vma.c drm/i915: Allow contexts to be unreferenced locklessly 2017-06-20 17:13:47 +01:00
intel_breadcrumbs.c mm: treewide: remove GFP_TEMPORARY allocation flag 2017-09-13 18:53:16 -07:00
intel_hangcheck.c drm/i915/selftests: Hold the rpm wakeref for the reset tests 2017-10-09 17:07:28 +01:00
intel_uncore.c mm: treewide: remove GFP_TEMPORARY allocation flag 2017-09-13 18:53:16 -07:00
lib_sw_fence.c drm/i915/selftests: Wrap a timer into a i915_sw_fence 2017-10-12 21:06:26 +01:00
lib_sw_fence.h drm/i915/selftests: Wrap a timer into a i915_sw_fence 2017-10-12 21:06:26 +01:00
mock_context.c drm/i915/selftests: Exercise adding requests to a full GGTT 2017-10-12 21:06:26 +01:00
mock_context.h drm/i915/selftests: Exercise independence of per-engine resets 2017-07-27 09:38:48 +02:00
mock_dmabuf.c
mock_dmabuf.h
mock_drm.c
mock_drm.h
mock_engine.c drm/i915: Supply the engine-id for our mock_engine() 2017-08-10 12:18:35 +01:00
mock_engine.h drm/i915: Supply the engine-id for our mock_engine() 2017-08-10 12:18:35 +01:00
mock_gem_device.c drm/i915: enable platform support for 2M pages 2017-10-07 10:12:05 +01:00
mock_gem_device.h
mock_gem_object.h
mock_gtt.c drm/i915: introduce vm set_pages/clear_pages 2017-10-07 10:11:50 +01:00
mock_gtt.h
mock_request.c
mock_request.h
mock_timeline.c
mock_timeline.h
mock_uncore.c
mock_uncore.h
scatterlist.c drm/i915/selftests: mix huge pages 2017-10-07 10:12:03 +01:00