linux_dsm_epyc7002/drivers/gpu/drm/i915/selftests
Chris Wilson 8ba306a6a3 drm/i915: Share per-timeline HWSP using a slab suballocator
If we restrict ourselves to only using a cacheline for each timeline's
HWSP (we could go smaller, but want to avoid needless polluting
cachelines on different engines between different contexts), then we can
suballocate a single 4k page into 64 different timeline HWSP. By
treating each fresh allocation as a slab of 64 entries, we can keep it
around for the next 64 allocation attempts until we need to refresh the
slab cache.

John Harrison noted the issue of fragmentation leading to the same worst
case performance of one page per timeline as before, which can be
mitigated by adopting a freelist.

v2: Keep all partially allocated HWSP on a freelist

This is still without migration, so it is possible for the system to end
up with each timeline in its own page, but we ensure that no new
allocation would needless allocate a fresh page!

v3: Throw a selftest at the allocator to try and catch invalid cacheline
reuse.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190128181812.22804-4-chris@chris-wilson.co.uk
2019-01-28 19:07:06 +00:00
..
huge_gem_object.c
huge_gem_object.h
huge_pages.c drm/i915/selftests: Query the vm under test for hugepage support 2019-01-18 09:07:06 +00:00
i915_gem_coherency.c drm/i915/selftests: Mark up rpm wakerefs 2019-01-14 16:18:20 +00:00
i915_gem_context.c drm/i915/selftests: Refactor common live_test framework 2019-01-22 13:01:20 +00:00
i915_gem_dmabuf.c
i915_gem_evict.c drm/i915: Pull VM lists under the VM mutex. 2019-01-28 16:24:13 +00:00
i915_gem_gtt.c drm/i915: Pull VM lists under the VM mutex. 2019-01-28 16:24:13 +00:00
i915_gem_object.c drm/i915: Syntatic sugar for using intel_runtime_pm 2019-01-14 16:18:25 +00:00
i915_gem.c drm/i915: Syntatic sugar for using intel_runtime_pm 2019-01-14 16:18:25 +00:00
i915_live_selftests.h drm/i915: Allocate a status page for each timeline 2019-01-28 19:07:02 +00:00
i915_mock_selftests.h drm/i915: Allocate a status page for each timeline 2019-01-28 19:07:02 +00:00
i915_random.c drm/i915: Share per-timeline HWSP using a slab suballocator 2019-01-28 19:07:06 +00:00
i915_random.h drm/i915: Share per-timeline HWSP using a slab suballocator 2019-01-28 19:07:06 +00:00
i915_request.c drm/i915/selftests: Refactor common live_test framework 2019-01-22 13:01:20 +00:00
i915_selftest.c
i915_sw_fence.c
i915_syncmap.c
i915_timeline.c drm/i915: Share per-timeline HWSP using a slab suballocator 2019-01-28 19:07:06 +00:00
i915_vma.c drm/i915: Move vma lookup to its own lock 2019-01-28 16:24:16 +00:00
igt_flush_test.c
igt_flush_test.h
igt_live_test.c drm/i915/selftests: Refactor common live_test framework 2019-01-22 13:01:20 +00:00
igt_live_test.h drm/i915/selftests: Refactor common live_test framework 2019-01-22 13:01:20 +00:00
igt_reset.c drm/i915/selftests: Add tests for GT and engine workaround verification 2018-12-04 12:23:19 +00:00
igt_reset.h drm/i915/selftests: Add tests for GT and engine workaround verification 2018-12-04 12:23:19 +00:00
igt_spinner.c drm/i915/selftests: Reorder request allocation vs vma pinning 2018-12-04 17:53:19 +00:00
igt_spinner.h drm/i915/selftests: Extract spinner code 2018-11-30 15:09:00 +00:00
igt_wedge_me.h
intel_breadcrumbs.c
intel_engine_cs.c
intel_guc.c drm/i915/selftests: Mark up rpm wakerefs 2019-01-14 16:18:20 +00:00
intel_hangcheck.c drm/i915: Issue engine resets onto idle engines 2019-01-25 14:27:30 +00:00
intel_lrc.c drm/i915: Pull all the reset functionality together into i915_reset.c 2019-01-16 22:45:31 +00:00
intel_uncore.c
intel_workarounds.c drm/i915: Remove GPU reset dependence on struct_mutex 2019-01-25 14:27:22 +00:00
lib_sw_fence.c
lib_sw_fence.h
mock_context.c drm/i915: Refactor out intel_context_init() 2019-01-22 13:13:53 +00:00
mock_context.h
mock_dmabuf.c
mock_dmabuf.h
mock_drm.c
mock_drm.h
mock_engine.c drm/i915: Allocate a status page for each timeline 2019-01-28 19:07:02 +00:00
mock_engine.h
mock_gem_device.c drm/i915: Move list of timelines under its own lock 2019-01-28 16:24:22 +00:00
mock_gem_device.h
mock_gem_object.h
mock_gtt.c drm/i915/selftests: Create a clean GGTT for vma/gtt selftesting 2019-01-22 12:50:39 +00:00
mock_gtt.h drm/i915/selftests: Create a clean GGTT for vma/gtt selftesting 2019-01-22 12:50:39 +00:00
mock_request.c
mock_request.h
mock_timeline.c drm/i915: Move list of timelines under its own lock 2019-01-28 16:24:22 +00:00
mock_timeline.h
mock_uncore.c
mock_uncore.h
scatterlist.c