linux_dsm_epyc7002/drivers/gpu/drm/i915/selftests
Chris Wilson ee1136908e drm/i915/execlists: Virtual engine bonding
Some users require that when a master batch is executed on one particular
engine, a companion batch is run simultaneously on a specific slave
engine. For this purpose, we introduce virtual engine bonding, allowing
maps of master:slaves to be constructed to constrain which physical
engines a virtual engine may select given a fence on a master engine.

For the moment, we continue to ignore the issue of preemption deferring
the master request for later. Ideally, we would like to then also remove
the slave and run something else rather than have it stall the pipeline.
With load balancing, we should be able to move workload around it, but
there is a similar stall on the master pipeline while it may wait for
the slave to be executed. At the cost of more latency for the bonded
request, it may be interesting to launch both on their engines in
lockstep. (Bubbles abound.)

Opens: Also what about bonding an engine as its own master? It doesn't
break anything internally, so allow the silliness.

v2: Emancipate the bonds
v3: Couple in delayed scheduling for the selftests
v4: Handle invalid mutually exclusive bonding
v5: Mention what the uapi does
v6: s/nbond/num_bonds/

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190521211134.16117-9-chris@chris-wilson.co.uk
2019-05-22 08:40:46 +01: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: Move i915_request_alloc into selftests/ 2019-04-26 18:32:20 +01:00
i915_active.c drm/i915: Pass intel_context to i915_request_create() 2019-04-24 22:25:35 +01:00
i915_gem_coherency.c drm/i915: Pass intel_context to i915_request_create() 2019-04-24 22:25:35 +01:00
i915_gem_context.c drm/i915: Skip unused contexts for context_barrier_task() 2019-04-29 11:12:37 +01: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: Move i915_request_alloc into selftests/ 2019-04-26 18:32:20 +01: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: Remove delay for idle_work 2019-05-07 17:40:19 +01:00
i915_gem.c drm/i915: Move i915_request_alloc into selftests/ 2019-04-26 18:32:20 +01:00
i915_live_selftests.h drm/i915/selftests: Add live vma selftest 2019-05-20 18:04:47 +03: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: Move i915_request_alloc into selftests/ 2019-04-26 18:32:20 +01: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: Pass intel_context to i915_request_create() 2019-04-24 22:25:35 +01:00
i915_vma.c drm/i915/selftests: Add live vma selftest 2019-05-20 18:04:47 +03:00
igt_flush_test.c drm/i915: Invert the GEM wakeref hierarchy 2019-04-24 22:26:49 +01:00
igt_flush_test.h
igt_gem_utils.c drm/i915: Move i915_request_alloc into selftests/ 2019-04-26 18:32:20 +01:00
igt_gem_utils.h drm/i915: Move i915_request_alloc into selftests/ 2019-04-26 18:32:20 +01:00
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 drm/i915: Move GraphicsTechnology files under gt/ 2019-04-24 21:01:46 +01:00
igt_reset.h
igt_spinner.c drm/i915: Move i915_request_alloc into selftests/ 2019-04-26 18:32:20 +01:00
igt_spinner.h drm/i915: Move GraphicsTechnology files under gt/ 2019-04-24 21:01:46 +01:00
igt_wedge_me.h
intel_guc.c drm/i915: Store the BIT(engine->id) as the engine's mask 2019-03-05 18:19:50 +00:00
intel_uncore.c drm/i915/selftests: Mark live_forcewake_ops as unreliable 2019-04-08 19:15:05 +01:00
lib_sw_fence.c drm/i915/execlists: Virtual engine bonding 2019-05-22 08:40:46 +01: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: Remove intel_context.active_link 2019-04-26 18:32:17 +01:00
mock_context.h
mock_dmabuf.c
mock_dmabuf.h
mock_drm.c
mock_drm.h
mock_gem_device.c drm/i915: Cancel retire_worker on parking 2019-05-07 17:40:19 +01:00
mock_gem_device.h
mock_gem_object.h
mock_gtt.c
mock_gtt.h
mock_request.c drm/i915: Move i915_request_alloc into selftests/ 2019-04-26 18:32:20 +01:00
mock_request.h drm/i915: Make request allocation caches global 2019-02-28 11:07:56 +00:00
mock_timeline.c drm/i915: Consolidate the timeline->barrier 2019-04-08 17:04:12 +01:00
mock_timeline.h
mock_uncore.c drm/i915: switch uncore mmio funcs to use intel_uncore 2019-03-26 20:16:13 +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