Chris Wilson c18636f763 drm/i915: Remove requirement for holding i915_request.lock for breadcrumbs
Since the breadcrumb enabling/cancelling itself is serialised by the
breadcrumbs.irq_lock, with a bit of care we can remove the outer
serialisation with i915_request.lock for concurrent
dma_fence_enable_signaling(). This has the important side-effect of
eliminating the nested i915_request.lock within request submission.

The challenge in serialisation is around the unsubmission where we take
an active request that wants a breadcrumb on the signaling engine and
put it to sleep. We do not want a concurrent
dma_fence_enable_signaling() to attach a breadcrumb as we unsubmit, so
we must mark the request as no longer active before serialising with the
concurrent enable-signaling.

On retire, we serialise with the concurrent enable-signaling, but
instead of clearing ACTIVE, we mark it as SIGNALED.

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/20200731154834.8378-1-chris@chris-wilson.co.uk
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
[Joonas: Rebased and reordered into drm-intel-gt-next branch]
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
2020-09-07 13:29:32 +03:00
..
2020-08-28 12:38:06 +10:00
2020-06-24 15:45:51 +10:00
2020-07-24 08:48:05 +10:00
2020-08-11 11:58:31 +10:00
2020-08-18 14:14:25 +02:00
2020-08-19 15:49:10 +02:00
2020-08-06 14:27:31 -07:00
2020-08-12 20:42:08 +02:00
2020-08-11 11:58:31 +10:00
2020-07-24 08:48:05 +10:00
2020-08-18 14:14:25 +02:00
2020-07-28 17:21:58 +02:00
2020-08-18 14:14:25 +02:00
2020-07-23 10:06:22 +02:00
2020-04-03 17:11:41 +02:00
2020-08-18 14:14:25 +02:00
2020-08-18 14:14:25 +02:00
2020-08-18 10:49:13 +02:00
2020-06-24 09:17:34 +02:00
2020-08-28 12:38:06 +10:00
2020-08-14 13:34:37 -07:00
2020-08-06 14:27:31 -07:00
2020-05-27 14:31:42 +03:00
2020-04-03 17:11:41 +02:00
2020-07-27 22:06:13 +02:00
2020-08-05 19:50:06 -07:00
2020-08-11 11:58:31 +10:00
2020-07-16 18:16:31 -04:00
2020-06-24 15:45:51 +10:00
2020-05-29 12:58:11 +02:00
2020-08-11 11:58:31 +10:00
2020-08-11 11:58:31 +10:00
2020-06-24 15:45:51 +10:00