linux-stable/drivers/gpu/drm/i915/selftests
Chris Wilson ea593dbba4 drm/i915: Allow contexts to share a single timeline across all engines
Previously, our view has been always to run the engines independently
within a context. (Multiple engines happened before we had contexts and
timelines, so they always operated independently and that behaviour
persisted into contexts.) However, at the user level the context often
represents a single timeline (e.g. GL contexts) and userspace must
ensure that the individual engines are serialised to present that
ordering to the client (or forgot about this detail entirely and hope no
one notices - a fair ploy if the client can only directly control one
engine themselves ;)

In the next patch, we will want to construct a set of engines that
operate as one, that have a single timeline interwoven between them, to
present a single virtual engine to the user. (They submit to the virtual
engine, then we decide which engine to execute on based.)

To that end, we want to be able to create contexts which have a single
timeline (fence context) shared between all engines, rather than multiple
timelines.

v2: Move the specialised timeline ordering to its own function.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190322092325.5883-4-chris@chris-wilson.co.uk
2019-03-22 13:12:38 +00:00
..
huge_gem_object.c drm/i915: Make object/vma allocation caches global 2019-02-28 11:08:02 +00:00
huge_gem_object.h
huge_pages.c drm/i915: Create/destroy VM (ppGTT) for use with contexts 2019-03-22 13:12:32 +00:00
i915_active.c drm/i915: Beware temporary wedging when determining -EIO 2019-02-20 16:31:08 +00:00
i915_gem.c drm/i915: Do a synchronous switch-to-kernel-context on idling 2019-03-08 10:57:05 +00:00
i915_gem_coherency.c drm/i915: Store the BIT(engine->id) as the engine's mask 2019-03-05 18:19:50 +00:00
i915_gem_context.c drm/i915: Create/destroy VM (ppGTT) for use with contexts 2019-03-22 13:12:32 +00:00
i915_gem_dmabuf.c drm/i915: Flush pages on acquisition 2019-03-21 17:28:12 +00:00
i915_gem_evict.c drm/i915: Flush pages on acquisition 2019-03-21 17:28:12 +00:00
i915_gem_gtt.c drm/i915: Create/destroy VM (ppGTT) for use with contexts 2019-03-22 13:12:32 +00:00
i915_gem_object.c drm/i915: Store the BIT(engine->id) as the engine's mask 2019-03-05 18:19:50 +00:00
i915_live_selftests.h drm/i915: Generalise GPU activity tracking 2019-02-05 17:12:00 +00:00
i915_mock_selftests.h drm/i915: Replace global breadcrumbs with per-context interrupt tracking 2019-01-29 21:45:22 +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: Flush pages on acquisition 2019-03-21 17:28:12 +00:00
i915_selftest.c drm/i915/selftests: Upgrade printing test/subtest name to pr_info 2019-03-06 11:36:36 +00:00
i915_sw_fence.c drm/i915/selftests: Disable preemption while setting up fence-timers 2019-03-14 11:47:06 +00:00
i915_syncmap.c
i915_timeline.c drm/i915: Stop storing the context name as the timeline name 2019-03-21 15:59:31 +00:00
i915_vma.c drm/i915/selftests: Move local mock_ggtt allocations to the heap 2019-02-17 21:07:46 +00:00
igt_flush_test.c drm/i915: Reduce presumption of request ordering for barriers 2019-03-08 10:57:08 +00:00
igt_flush_test.h
igt_live_test.c drm/i915: Drop fake breadcrumb irq 2019-01-29 21:45:30 +00:00
igt_live_test.h
igt_reset.c
igt_reset.h
igt_spinner.c drm/i915: Flush pages on acquisition 2019-03-21 17:28:12 +00:00
igt_spinner.h
igt_wedge_me.h
intel_engine_cs.c
intel_guc.c drm/i915: Store the BIT(engine->id) as the engine's mask 2019-03-05 18:19:50 +00:00
intel_hangcheck.c drm/i915: Flush pages on acquisition 2019-03-21 17:28:12 +00:00
intel_lrc.c drm/i915/selftests: Mark up preemption tests for hang detection 2019-03-22 07:12:12 +00:00
intel_uncore.c drm/i915: move regs pointer inside the uncore structure 2019-03-20 21:12:50 +00:00
intel_workarounds.c drm/i915: Flush pages on acquisition 2019-03-21 17:28:12 +00:00
lib_sw_fence.c drm/i915: Replace global breadcrumbs with per-context interrupt tracking 2019-01-29 21:45:22 +00:00
lib_sw_fence.h drm/i915: Replace global breadcrumbs with per-context interrupt tracking 2019-01-29 21:45:22 +00:00
mock_context.c drm/i915: Allow contexts to share a single timeline across all engines 2019-03-22 13:12:38 +00:00
mock_context.h
mock_dmabuf.c
mock_dmabuf.h
mock_drm.c
mock_drm.h
mock_engine.c drm/i915: Stop storing the context name as the timeline name 2019-03-21 15:59:31 +00:00
mock_engine.h drm/i915: Replace global breadcrumbs with per-context interrupt tracking 2019-01-29 21:45:22 +00:00
mock_gem_device.c drm/i915: make more uncore function work on intel_uncore 2019-03-20 21:12:42 +00:00
mock_gem_device.h
mock_gem_object.h
mock_gtt.c
mock_gtt.h
mock_request.c drm/i915: Make request allocation caches global 2019-02-28 11:07:56 +00:00
mock_request.h drm/i915: Make request allocation caches global 2019-02-28 11:07:56 +00:00
mock_timeline.c drm/i915: Introduce i915_timeline.mutex 2019-03-01 14:54:46 +00:00
mock_timeline.h
mock_uncore.c drm/i915: make more uncore function work on intel_uncore 2019-03-20 21:12:42 +00:00
mock_uncore.h drm/i915: make more uncore function work on intel_uncore 2019-03-20 21:12:42 +00:00
scatterlist.c