linux/drivers/gpu/drm/i915/selftests
Chris Wilson 9981927cc9 drm/i915: Bump signaler priority on adding a waiter
The handling of the no-preemption priority level imposes the restriction
that we need to maintain the implied ordering even though preemption is
disabled. Otherwise we may end up with an AB-BA deadlock across multiple
engine due to a real preemption event reordering the no-preemption
WAITs. To resolve this issue we currently promote all requests to WAIT
on unsubmission, however this interferes with the timeslicing
requirement that we do not apply any implicit promotion that will defeat
the round-robin timeslice list. (If we automatically promote the active
request it will go back to the head of the queue and not the tail!)

So we need implicit promotion to prevent reordering around semaphores
where we are not allowed to preempt, and we must avoid implicit
promotion on unsubmission. So instead of at unsubmit, if we apply that
implicit promotion on adding the dependency, we avoid the semaphore
deadlock and we also reduce the gains made by the promotion for user
space waiting. Furthermore, by keeping the earlier dependencies at a
higher level, we reduce the search space for timeslicing without
altering runtime scheduling too badly (no dependencies at all will be
assigned a higher priority for rrul).

v2: Limit the bump to external edges (as originally intended) i.e.
between contexts and out to the user.

Testcase: igt/gem_concurrent_blit
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/20190515130052.4475-3-chris@chris-wilson.co.uk
(cherry picked from commit 6e7eb7a807)
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
2019-05-20 18:28:04 +03:00
..
huge_gem_object.c
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
i915_gem.c drm/i915/selftests: Skip live timeline/suspend tests if wedged 2019-04-15 11:58:19 +01:00
i915_gem_coherency.c
i915_gem_context.c drm/i915: Move intel_engine_mask_t around for use by i915_request_types.h 2019-04-02 15:09:08 +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/selftests: Fix an IS_ERR() vs NULL check 2019-03-26 14:53:01 +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
i915_live_selftests.h
i915_mock_selftests.h
i915_random.c
i915_random.h
i915_request.c drm/i915: Flush pages on acquisition 2019-03-21 17:28:12 +00:00
i915_selftest.c
i915_sw_fence.c
i915_syncmap.c
i915_timeline.c drm/i915/selftests: Skip live timeline/suspend tests if wedged 2019-04-15 11:58:19 +01:00
i915_vma.c
igt_flush_test.c
igt_flush_test.h
igt_live_test.c
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
intel_hangcheck.c drm/i915: Move intel_engine_mask_t around for use by i915_request_types.h 2019-04-02 15:09:08 +01:00
intel_lrc.c drm/i915: Bump signaler priority on adding a waiter 2019-05-20 18:28:04 +03:00
intel_uncore.c drm/i915/selftests: Mark live_forcewake_ops as unreliable 2019-04-08 19:15:05 +01:00
intel_workarounds.c drm/i915: Teach intel_workarounds to use uncore mmio access 2019-04-13 07:46:43 +01:00
lib_sw_fence.c
lib_sw_fence.h
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
mock_gem_device.c
mock_gem_device.h
mock_gem_object.h
mock_gtt.c
mock_gtt.h
mock_request.c
mock_request.h
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
scatterlist.c