All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Harrison <John.C.Harrison@Intel.com>
To: Jesse Barnes <jbarnes@virtuousgeek.org>,
	Intel-GFX@Lists.FreeDesktop.Org, "Elf,
	Tomas" <tomas.elf@intel.com>
Subject: Re: [PATCH 00/59] Remove the outstanding_lazy_request
Date: Fri, 29 May 2015 12:00:09 +0100	[thread overview]
Message-ID: <556846B9.9080904@Intel.com> (raw)
In-Reply-To: <5567746B.4070406@virtuousgeek.org>

I am currently rebasing (yet again) onto a newer nightly tree and going 
through the large number of merge conflicts. I have the anti-OLR and 
fence patches rebased but am still in the middle of the scheduler ones. 
I am hoping to post an updated patch set for anti-OLR at least later today.


On 28/05/2015 21:02, Jesse Barnes wrote:
> John, Tomas, where are we with this series?  I believe this is a
> prerequisite for the request->fence conversion, and also the native sync
> work, both of which I need for some stuff I'm doing.
>
> Thanks,
> Jesse
>
> On 03/19/2015 05:30 AM, John.C.Harrison@Intel.com wrote:
>> From: John Harrison <John.C.Harrison@Intel.com>
>>
>> The driver tracks GPU work using request structures. Unfortunately, this
>> tracking is not currently explicit but is done by means of a catch-all request
>> that floats around in the background hoovering up work until it gets submitted.
>> This background request (ring->outstanding_lazy_request or OLR) is created at
>> the point of actually writing to the ring rather than when a particular piece of
>> GPU work is started. This scheme sort of hangs together but causes a number of
>> issues. It can mean that multiple pieces of independent work are lumped together
>> in the same request or that work is not officially submitted until much later
>> than it was created.
>>
>> This patch series completely removes the OLR and explicitly tracks each piece of
>> work with it's own personal request structure from start to submission.
>>
>> The patch set seems to fix the "'gem_ringfill --r render' + ctrl-c straight
>> after boot" issue logged as BZ:88865. I haven't done any analysis of that
>> particular issue but the descriptions I've seen appear to blame an inconsistent
>> or mangled OLR.
>>
>> Note also that by the end of this series, a number of differences between the
>> legacy and execlist code paths have been removed. For example add_request() and
>> emit_request() now have the same signature thus could be merged back to a single
>> function pointer. Merging some of these together would also allow the removal of
>> a bunch of 'if(execlists)' tests where the difference is simply to call the
>> legacy function or the execlist one.
>>
>> v2: Rebased to newer nightly tree, fixed up a few minor issues, added two extra
>> patches - one to move the LRC ring begin around in the vein of other recent
>> reshuffles, the other to clean up some issues with i915_add_request().
>>
>> v3: Large re-work due to feedback from code review. Some patches have been
>> removed, extra ones have been added and others have been changed significantly.
>> It is recommended that all patches are reviewed from scratch rather than
>> assuming only certain ones have changed and need re-inspecting. The exceptions
>> are where the 'reviewed-by' tag has been kept because that patch was not
>> significantly affected.
>>
>> [Patches against drm-intel-nightly tree fetched 18/03/2015]
>>
>> John Harrison (59):
>>    drm/i915: Rename 'do_execbuf' to 'execbuf_submit'
>>    drm/i915: Make intel_logical_ring_begin() static
>>    drm/i915: Move common request allocation code into a common function
>>    drm/i915: Fix for ringbuf space wait in LRC mode
>>    drm/i915: Reserve ring buffer space for i915_add_request() commands
>>    drm/i915: i915_add_request must not fail
>>    drm/i915: Early alloc request in execbuff
>>    drm/i915: Set context in request from creation even in legacy mode
>>    drm/i915: Merged the many do_execbuf() parameters into a structure
>>    drm/i915: Simplify i915_gem_execbuffer_retire_commands() parameters
>>    drm/i915: Update alloc_request to return the allocated request
>>    drm/i915: Add request to execbuf params and add explicit cleanup
>>    drm/i915: Update the dispatch tracepoint to use params->request
>>    drm/i915: Update move_to_gpu() to take a request structure
>>    drm/i915: Update execbuffer_move_to_active() to take a request structure
>>    drm/i915: Add flag to i915_add_request() to skip the cache flush
>>    drm/i915: Update i915_gpu_idle() to manage its own request
>>    drm/i915: Split i915_ppgtt_init_hw() in half - generic and per ring
>>    drm/i915: Moved the for_each_ring loop outside of i915_gem_context_enable()
>>    drm/i915: Don't tag kernel batches as user batches
>>    drm/i915: Add explicit request management to i915_gem_init_hw()
>>    drm/i915: Update ppgtt_init_ring() & context_enable() to take requests
>>    drm/i915: Update i915_switch_context() to take a request structure
>>    drm/i915: Update do_switch() to take a request structure
>>    drm/i915: Update deferred context creation to do explicit request management
>>    drm/i915: Update init_context() to take a request structure
>>    drm/i915: Update render_state_init() to take a request structure
>>    drm/i915: Update i915_gem_object_sync() to take a request structure
>>    drm/i915: Update overlay code to do explicit request management
>>    drm/i915: Update queue_flip() to take a request structure
>>    drm/i915: Update add_request() to take a request structure
>>    drm/i915: Update [vma|object]_move_to_active() to take request structures
>>    drm/i915: Update l3_remap to take a request structure
>>    drm/i915: Update mi_set_context() to take a request structure
>>    drm/i915: Update a bunch of execbuffer helpers to take request structures
>>    drm/i915: Update workarounds_emit() to take request structures
>>    drm/i915: Update flush_all_caches() to take request structures
>>    drm/i915: Update switch_mm() to take a request structure
>>    drm/i915: Update ring->flush() to take a requests structure
>>    drm/i915: Update some flush helpers to take request structures
>>    drm/i915: Update ring->emit_flush() to take a request structure
>>    drm/i915: Update ring->add_request() to take a request structure
>>    drm/i915: Update ring->emit_request() to take a request structure
>>    drm/i915: Update ring->dispatch_execbuffer() to take a request structure
>>    drm/i915: Update ring->emit_bb_start() to take a request structure
>>    drm/i915: Update ring->sync_to() to take a request structure
>>    drm/i915: Update ring->signal() to take a request structure
>>    drm/i915: Update cacheline_align() to take a request structure
>>    drm/i915: Update intel_ring_begin() to take a request structure
>>    drm/i915: Update intel_logical_ring_begin() to take a request structure
>>    drm/i915: Add *_ring_begin() to request allocation
>>    drm/i915: Remove the now obsolete intel_ring_get_request()
>>    drm/i915: Remove the now obsolete 'outstanding_lazy_request'
>>    drm/i915: Move the request/file and request/pid association to creation time
>>    drm/i915: Remove fallback poll for ring buffer space
>>    drm/i915: Remove 'faked' request from LRC submission
>>    drm/i915: Update a bunch of LRC functions to take requests
>>    drm/i915: Remove the now obsolete 'i915_gem_check_olr()'
>>    drm/i915: Remove the almost obsolete i915_gem_object_flush_active()
>>
>>   drivers/gpu/drm/i915/i915_drv.h              |   78 ++--
>>   drivers/gpu/drm/i915/i915_gem.c              |  388 ++++++++++-------
>>   drivers/gpu/drm/i915/i915_gem_context.c      |   76 ++--
>>   drivers/gpu/drm/i915/i915_gem_execbuffer.c   |  126 ++++--
>>   drivers/gpu/drm/i915/i915_gem_gtt.c          |   61 +--
>>   drivers/gpu/drm/i915/i915_gem_gtt.h          |    3 +-
>>   drivers/gpu/drm/i915/i915_gem_render_state.c |   15 +-
>>   drivers/gpu/drm/i915/i915_gem_render_state.h |    2 +-
>>   drivers/gpu/drm/i915/i915_trace.h            |   28 +-
>>   drivers/gpu/drm/i915/intel_display.c         |   62 +--
>>   drivers/gpu/drm/i915/intel_drv.h             |    3 +-
>>   drivers/gpu/drm/i915/intel_fbdev.c           |    2 +-
>>   drivers/gpu/drm/i915/intel_lrc.c             |  585 +++++++++++---------------
>>   drivers/gpu/drm/i915/intel_lrc.h             |   17 +-
>>   drivers/gpu/drm/i915/intel_overlay.c         |   64 ++-
>>   drivers/gpu/drm/i915/intel_ringbuffer.c      |  374 ++++++++--------
>>   drivers/gpu/drm/i915/intel_ringbuffer.h      |   54 ++-
>>   17 files changed, 1005 insertions(+), 933 deletions(-)
>>

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

      parent reply	other threads:[~2015-05-29 11:00 UTC|newest]

Thread overview: 122+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-19 12:30 [PATCH 00/59] Remove the outstanding_lazy_request John.C.Harrison
2015-03-19 12:30 ` [PATCH 01/59] drm/i915: Rename 'do_execbuf' to 'execbuf_submit' John.C.Harrison
2015-03-31 15:45   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 02/59] drm/i915: Make intel_logical_ring_begin() static John.C.Harrison
2015-03-31 15:47   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 03/59] drm/i915: Move common request allocation code into a common function John.C.Harrison
2015-03-31 15:48   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 04/59] drm/i915: Fix for ringbuf space wait in LRC mode John.C.Harrison
2015-03-19 14:56   ` Daniel, Thomas
2015-03-31 15:50   ` Tomas Elf
2015-04-01  5:56     ` Daniel Vetter
2015-04-01 12:00       ` John Harrison
2015-04-01  8:53     ` Chris Wilson
2015-03-19 12:30 ` [PATCH 05/59] drm/i915: Reserve ring buffer space for i915_add_request() commands John.C.Harrison
2015-03-20 15:13   ` Daniel Vetter
2015-03-20 15:55     ` John Harrison
2015-03-23  8:54       ` Daniel Vetter
2015-03-31 16:03         ` Chris Wilson
2015-03-20 16:19   ` John Harrison
2015-03-20 18:13     ` John Harrison
2015-03-31 15:58   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 06/59] drm/i915: i915_add_request must not fail John.C.Harrison
2015-03-19 12:30 ` [PATCH 07/59] drm/i915: Early alloc request in execbuff John.C.Harrison
2015-03-31 16:09   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 08/59] drm/i915: Set context in request from creation even in legacy mode John.C.Harrison
2015-03-31 16:10   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 09/59] drm/i915: Merged the many do_execbuf() parameters into a structure John.C.Harrison
2015-03-31 16:16   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 10/59] drm/i915: Simplify i915_gem_execbuffer_retire_commands() parameters John.C.Harrison
2015-03-19 12:30 ` [PATCH 11/59] drm/i915: Update alloc_request to return the allocated request John.C.Harrison
2015-03-31 16:20   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 12/59] drm/i915: Add request to execbuf params and add explicit cleanup John.C.Harrison
2015-03-19 12:30 ` [PATCH 13/59] drm/i915: Update the dispatch tracepoint to use params->request John.C.Harrison
2015-03-19 12:30 ` [PATCH 14/59] drm/i915: Update move_to_gpu() to take a request structure John.C.Harrison
2015-03-19 12:30 ` [PATCH 15/59] drm/i915: Update execbuffer_move_to_active() " John.C.Harrison
2015-03-19 12:30 ` [PATCH 16/59] drm/i915: Add flag to i915_add_request() to skip the cache flush John.C.Harrison
2015-03-31 16:32   ` Tomas Elf
2015-04-01  5:59     ` Daniel Vetter
2015-04-01  8:52     ` Chris Wilson
2015-03-19 12:30 ` [PATCH 17/59] drm/i915: Update i915_gpu_idle() to manage its own request John.C.Harrison
2015-03-19 12:30 ` [PATCH 18/59] drm/i915: Split i915_ppgtt_init_hw() in half - generic and per ring John.C.Harrison
2015-03-31 16:34   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 19/59] drm/i915: Moved the for_each_ring loop outside of i915_gem_context_enable() John.C.Harrison
2015-03-19 12:30 ` [PATCH 20/59] drm/i915: Don't tag kernel batches as user batches John.C.Harrison
2015-03-31 16:35   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 21/59] drm/i915: Add explicit request management to i915_gem_init_hw() John.C.Harrison
2015-03-31 16:38   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 22/59] drm/i915: Update ppgtt_init_ring() & context_enable() to take requests John.C.Harrison
2015-03-31 16:38   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 23/59] drm/i915: Update i915_switch_context() to take a request structure John.C.Harrison
2015-03-19 12:30 ` [PATCH 24/59] drm/i915: Update do_switch() " John.C.Harrison
2015-03-31 16:40   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 25/59] drm/i915: Update deferred context creation to do explicit request management John.C.Harrison
2015-03-31 16:43   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 26/59] drm/i915: Update init_context() to take a request structure John.C.Harrison
2015-03-19 12:30 ` [PATCH 27/59] drm/i915: Update render_state_init() " John.C.Harrison
2015-03-19 12:30 ` [PATCH 28/59] drm/i915: Update i915_gem_object_sync() " John.C.Harrison
2015-03-31 16:53   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 29/59] drm/i915: Update overlay code to do explicit request management John.C.Harrison
2015-03-31 16:53   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 30/59] drm/i915: Update queue_flip() to take a request structure John.C.Harrison
2015-03-31 16:54   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 31/59] drm/i915: Update add_request() " John.C.Harrison
2015-03-19 12:30 ` [PATCH 32/59] drm/i915: Update [vma|object]_move_to_active() to take request structures John.C.Harrison
2015-03-19 12:30 ` [PATCH 33/59] drm/i915: Update l3_remap to take a request structure John.C.Harrison
2015-03-19 12:30 ` [PATCH 34/59] drm/i915: Update mi_set_context() " John.C.Harrison
2015-03-19 12:30 ` [PATCH 35/59] drm/i915: Update a bunch of execbuffer helpers to take request structures John.C.Harrison
2015-03-19 12:30 ` [PATCH 36/59] drm/i915: Update workarounds_emit() " John.C.Harrison
2015-03-19 12:30 ` [PATCH 37/59] drm/i915: Update flush_all_caches() " John.C.Harrison
2015-03-19 12:30 ` [PATCH 38/59] drm/i915: Update switch_mm() to take a request structure John.C.Harrison
2015-03-31 16:57   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 39/59] drm/i915: Update ring->flush() to take a requests structure John.C.Harrison
2015-03-31 16:59   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 40/59] drm/i915: Update some flush helpers to take request structures John.C.Harrison
2015-03-19 12:30 ` [PATCH 41/59] drm/i915: Update ring->emit_flush() to take a request structure John.C.Harrison
2015-03-19 12:30 ` [PATCH 42/59] drm/i915: Update ring->add_request() " John.C.Harrison
2015-03-19 12:30 ` [PATCH 43/59] drm/i915: Update ring->emit_request() " John.C.Harrison
2015-03-31 17:01   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 44/59] drm/i915: Update ring->dispatch_execbuffer() " John.C.Harrison
2015-03-19 12:30 ` [PATCH 45/59] drm/i915: Update ring->emit_bb_start() " John.C.Harrison
2015-03-19 12:30 ` [PATCH 46/59] drm/i915: Update ring->sync_to() " John.C.Harrison
2015-03-31 17:03   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 47/59] drm/i915: Update ring->signal() " John.C.Harrison
2015-03-19 12:30 ` [PATCH 48/59] drm/i915: Update cacheline_align() " John.C.Harrison
2015-03-19 12:30 ` [PATCH 49/59] drm/i915: Update intel_ring_begin() " John.C.Harrison
2015-03-31 17:04   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 50/59] drm/i915: Update intel_logical_ring_begin() " John.C.Harrison
2015-03-31 17:05   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 51/59] drm/i915: Add *_ring_begin() to request allocation John.C.Harrison
2015-03-20 15:23   ` Daniel Vetter
2015-03-20 15:30     ` Chris Wilson
2015-03-20 16:09       ` John Harrison
2015-03-23  9:10         ` Daniel Vetter
2015-03-31 17:17   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 52/59] drm/i915: Remove the now obsolete intel_ring_get_request() John.C.Harrison
2015-03-19 12:30 ` [PATCH 53/59] drm/i915: Remove the now obsolete 'outstanding_lazy_request' John.C.Harrison
2015-03-31 18:01   ` Tomas Elf
2015-03-19 12:30 ` [PATCH 54/59] drm/i915: Move the request/file and request/pid association to creation time John.C.Harrison
2015-03-31 18:07   ` Tomas Elf
2015-03-19 12:31 ` [PATCH 55/59] drm/i915: Remove fallback poll for ring buffer space John.C.Harrison
2015-03-19 15:00   ` Daniel, Thomas
2015-03-19 15:16     ` Jani Nikula
2015-03-19 16:33       ` John Harrison
2015-03-19 17:29         ` Daniel Vetter
2015-03-31 18:13   ` Tomas Elf
2015-04-01  6:02     ` Daniel Vetter
2015-04-01  8:51     ` Chris Wilson
2015-03-19 12:31 ` [PATCH 56/59] drm/i915: Remove 'faked' request from LRC submission John.C.Harrison
2015-03-19 15:02   ` Daniel, Thomas
2015-03-31 18:14   ` Tomas Elf
2015-03-19 12:31 ` [PATCH 57/59] drm/i915: Update a bunch of LRC functions to take requests John.C.Harrison
2015-03-31 18:18   ` Tomas Elf
2015-03-19 12:31 ` [PATCH 58/59] drm/i915: Remove the now obsolete 'i915_gem_check_olr()' John.C.Harrison
2015-03-31 18:18   ` Tomas Elf
2015-03-19 12:31 ` [PATCH 59/59] drm/i915: Remove the almost obsolete i915_gem_object_flush_active() John.C.Harrison
2015-03-31 18:32   ` Tomas Elf
2015-04-01  6:06     ` Daniel Vetter
2015-05-28 20:02 ` [PATCH 00/59] Remove the outstanding_lazy_request Jesse Barnes
2015-05-28 21:20   ` Chris Wilson
2015-05-29 14:37     ` Jesse Barnes
2015-05-29 18:07       ` Chris Wilson
2015-05-29 11:00   ` John Harrison [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=556846B9.9080904@Intel.com \
    --to=john.c.harrison@intel.com \
    --cc=Intel-GFX@Lists.FreeDesktop.Org \
    --cc=jbarnes@virtuousgeek.org \
    --cc=tomas.elf@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.