All of lore.kernel.org
 help / color / mirror / Atom feed
* WIP glance towards struct_mutex removal
@ 2019-06-14  7:09 Chris Wilson
  2019-06-14  7:09 ` [PATCH 01/39] drm/i915: Discard some redundant cache domain flushes Chris Wilson
                   ` (40 more replies)
  0 siblings, 41 replies; 61+ messages in thread
From: Chris Wilson @ 2019-06-14  7:09 UTC (permalink / raw)
  To: intel-gfx

This series is still under development, getting the coordination right
for async vma (having just make i915_vma refcounted, I need to actually
prevent the refcycles and fixup good old userspace in ggtt,
vma->open_count for everyone incl. gem_vm_ops).

[PATCH 01/39] drm/i915: Discard some redundant cache domain flushes
[PATCH 02/39] drm/i915: Refine i915_reset.lock_map
[PATCH 03/39] drm/i915: Avoid tainting i915_gem_park() with
[PATCH 04/39] drm/i915: Enable refcount debugging for default debug

Endless/qos patches:
[PATCH 05/39] drm/i915: Keep contexts pinned until after the next
[PATCH 06/39] drm/i915: Stop retiring along engine
[PATCH 07/39] drm/i915: Replace engine->timeline with a plain list
[PATCH 08/39] drm/i915: Flush the execution-callbacks on retiring
[PATCH 09/39] drm/i915/execlists: Preempt-to-busy
[PATCH 10/39] drm/i915/execlists: Minimalistic timeslicing
[PATCH 11/39] drm/i915/execlists: Force preemption

Remove struct_mutex from i915_actve:
[PATCH 12/39] dma-fence: Propagate errors to dma-fence-array
[PATCH 13/39] dma-fence: Report the composite sync_file status
[PATCH 14/39] dma-fence: Refactor signaling for manual invocation
[PATCH 15/39] dma-fence: Always execute signal callbacks
[PATCH 16/39] drm/i915: Execute signal callbacks from no-op
[PATCH 17/39] drm/i915: Make the semaphore saturation mask global
[PATCH 18/39] drm/i915: Throw away the active object retirement
[PATCH 19/39] drm/i915: Provide an i915_active.acquire callback
[PATCH 20/39] drm/i915: Push the i915_active.retire into a worker
[PATCH 21/39] drm/i915/overlay: Switch to using i915_active tracking
[PATCH 22/39] drm/i915: Forgo last_fence active request tracking
[PATCH 23/39] drm/i915: Extract intel_frontbuffer active tracking
[PATCH 24/39] drm/i915: Coordinate i915_active with its own mutex

Up to this point, we should be solid; and removing struct_mutex around
i915_active is a major milestone as it was one of the two remaining
requirements for holding struct_mutex across request construction. In
principle, now you just need the timeline mutex, which is taken and
pinned by i915_request_create. (The remaining problem is making
retirement only require the timeline mutex as well.)

Remove struct_mutex from i915_address_space:
[PATCH 25/39] drm/i915: Track ggtt fence reservations under its own
[PATCH 26/39] drm/i915: Only track bound elements of the GTT
[PATCH 27/39] drm/i915: Explicitly cleanup initial_plane_config
[PATCH 28/39] initial-plane-vma
[PATCH 29/39] drm/i915: Make i915_vma track its own kref
[PATCH 30/39] drm/i915: Propagate fence errors
[PATCH 31/39] drm/i915: Allow page pinning to be in the background
[PATCH 32/39] drm/i915: Allow vma binding to occur asynchronously
[PATCH 33/39] revoke-fence
[PATCH 34/39] drm/i915: Use vm->mutex for serialising GTT insertion

This is quite close. Major refleak in i915_vma aka finishing touches in
converting it to be refcounted, and I need to take a pass over the async
vma to force the worker even for ggtt if we need to allocate pages (e.g.
rotation, remap, partial).

At this point, we drop the struct_mutex pretty much everywhere
internally. And should be free to start doing interesting things from
within obj->mm workers.

async get_pages:
[PATCH 35/39] drm/i915: Pin pages before waiting
[PATCH 36/39] drm/i915: Use reservation_object to coordinate userptr

One such example. Broken across rebases and needs fixing up: async
get-pages.

Remove struct_mutex for i915_requests:
[PATCH 37/39] drm/i915: Use forced preemptions in preference over
[PATCH 38/39] drm/i915: Remove logical HW ID
[PATCH 39/39] active-rings

And to complete the picture to remove struct_mutex around i915_request,
we need to be able to retire under the timeline alone. With that
inplace, we can drop struct_mutex. This presumptiously removes it from
GEM_EXECBUFFER_IOCTL, but that's a little bit premature as there are
still auxiliaries that need their own locks but is the ultimate proof.

Please look over and flag any more issues you can spot.
-Chris

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 61+ messages in thread

end of thread, other threads:[~2019-08-08  7:31 UTC | newest]

Thread overview: 61+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-14  7:09 WIP glance towards struct_mutex removal Chris Wilson
2019-06-14  7:09 ` [PATCH 01/39] drm/i915: Discard some redundant cache domain flushes Chris Wilson
2019-06-14  9:12   ` Matthew Auld
2019-06-14  7:09 ` [PATCH 02/39] drm/i915: Refine i915_reset.lock_map Chris Wilson
2019-06-14 14:10   ` Mika Kuoppala
2019-06-14 14:17     ` Chris Wilson
2019-06-14  7:09 ` [PATCH 03/39] drm/i915: Avoid tainting i915_gem_park() with wakeref.lock Chris Wilson
2019-06-14 14:47   ` Mika Kuoppala
2019-06-14 14:51     ` Chris Wilson
2019-06-14  7:09 ` [PATCH 04/39] drm/i915: Enable refcount debugging for default debug levels Chris Wilson
2019-06-14 15:11   ` Mika Kuoppala
2019-06-14 15:11   ` Mika Kuoppala
2019-06-14  7:09 ` [PATCH 05/39] drm/i915: Keep contexts pinned until after the next kernel context switch Chris Wilson
2019-06-14  7:09 ` [PATCH 06/39] drm/i915: Stop retiring along engine Chris Wilson
2019-06-14  7:09 ` [PATCH 07/39] drm/i915: Replace engine->timeline with a plain list Chris Wilson
2019-06-14  7:09 ` [PATCH 08/39] drm/i915: Flush the execution-callbacks on retiring Chris Wilson
2019-06-14  7:09 ` [PATCH 09/39] drm/i915/execlists: Preempt-to-busy Chris Wilson
2019-06-14  7:09 ` [PATCH 10/39] drm/i915/execlists: Minimalistic timeslicing Chris Wilson
2019-06-14  7:09 ` [PATCH 11/39] drm/i915/execlists: Force preemption Chris Wilson
2019-06-14  7:09 ` [PATCH 12/39] dma-fence: Propagate errors to dma-fence-array container Chris Wilson
2019-06-14  7:09 ` [PATCH 13/39] dma-fence: Report the composite sync_file status Chris Wilson
2019-06-14  7:09 ` [PATCH 14/39] dma-fence: Refactor signaling for manual invocation Chris Wilson
2019-06-14  7:09 ` [PATCH 15/39] dma-fence: Always execute signal callbacks Chris Wilson
2019-06-14  7:10 ` [PATCH 16/39] drm/i915: Execute signal callbacks from no-op i915_request_wait Chris Wilson
2019-06-14 10:45   ` Tvrtko Ursulin
2019-06-14  7:10 ` [PATCH 17/39] drm/i915: Make the semaphore saturation mask global Chris Wilson
2019-06-14  7:10 ` [PATCH 18/39] drm/i915: Throw away the active object retirement complexity Chris Wilson
2019-06-14  7:10 ` [PATCH 19/39] drm/i915: Provide an i915_active.acquire callback Chris Wilson
2019-06-14  7:10 ` [PATCH 20/39] drm/i915: Push the i915_active.retire into a worker Chris Wilson
2019-06-14  7:10 ` [PATCH 21/39] drm/i915/overlay: Switch to using i915_active tracking Chris Wilson
2019-06-14  7:10 ` [PATCH 22/39] drm/i915: Forgo last_fence active request tracking Chris Wilson
2019-06-14  7:10 ` [PATCH 23/39] drm/i915: Extract intel_frontbuffer active tracking Chris Wilson
2019-06-14  7:10 ` [PATCH 24/39] drm/i915: Coordinate i915_active with its own mutex Chris Wilson
2019-06-14  7:10 ` [PATCH 25/39] drm/i915: Track ggtt fence reservations under " Chris Wilson
2019-06-14  7:10 ` [PATCH 26/39] drm/i915: Only track bound elements of the GTT Chris Wilson
2019-06-14  7:10 ` [PATCH 27/39] drm/i915: Explicitly cleanup initial_plane_config Chris Wilson
2019-06-14  7:10 ` [PATCH 28/39] initial-plane-vma Chris Wilson
2019-06-14  7:10 ` [PATCH 29/39] drm/i915: Make i915_vma track its own kref Chris Wilson
2019-06-14 11:15   ` Matthew Auld
2019-06-14 11:18     ` Chris Wilson
2019-06-14  7:10 ` [PATCH 30/39] drm/i915: Propagate fence errors Chris Wilson
2019-06-14  7:10 ` [PATCH 31/39] drm/i915: Allow page pinning to be in the background Chris Wilson
2019-06-14  7:10 ` [PATCH 32/39] drm/i915: Allow vma binding to occur asynchronously Chris Wilson
2019-08-05 20:35   ` Kumar Valsan, Prathap
2019-06-14  7:10 ` [PATCH 33/39] revoke-fence Chris Wilson
2019-06-14  7:10 ` [PATCH 34/39] drm/i915: Use vm->mutex for serialising GTT insertion Chris Wilson
2019-06-14 19:14   ` Matthew Auld
2019-06-14 19:20     ` Chris Wilson
2019-06-14  7:10 ` [PATCH 35/39] drm/i915: Pin pages before waiting Chris Wilson
2019-06-14 19:53   ` Matthew Auld
2019-06-14 19:58     ` Chris Wilson
2019-06-14 20:13       ` Chris Wilson
2019-06-14 20:18         ` Matthew Auld
2019-06-14  7:10 ` [PATCH 36/39] drm/i915: Use reservation_object to coordinate userptr get_pages() Chris Wilson
2019-08-07 20:49   ` Daniel Vetter
2019-08-08  7:30     ` [Intel-gfx] " Daniel Vetter
2019-06-14  7:10 ` [PATCH 37/39] drm/i915: Use forced preemptions in preference over hangcheck Chris Wilson
2019-06-14  7:10 ` [PATCH 38/39] drm/i915: Remove logical HW ID Chris Wilson
2019-06-14  7:10 ` [PATCH 39/39] active-rings Chris Wilson
2019-06-14  7:22 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [01/39] drm/i915: Discard some redundant cache domain flushes Patchwork
2019-06-14  7:35 ` ✗ Fi.CI.SPARSE: " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.