From: John Harrison <John.C.Harrison@Intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: Intel-GFX@Lists.FreeDesktop.Org
Subject: Re: [PATCH v3 21/28] drm/i915: Remove the now redundant 'obj->ring'
Date: Mon, 01 Dec 2014 12:44:12 +0000 [thread overview]
Message-ID: <547C629C.5010000@Intel.com> (raw)
In-Reply-To: <20141128180659.GJ32117@phenom.ffwll.local>
On 28/11/2014 18:06, Daniel Vetter wrote:
> On Fri, Nov 28, 2014 at 05:49:26PM +0000, John Harrison wrote:
>> On 26/11/2014 13:43, Daniel Vetter wrote:
>>> On Mon, Nov 24, 2014 at 06:49:43PM +0000, John.C.Harrison@Intel.com wrote:
>>>> From: John Harrison <John.C.Harrison@Intel.com>
>>>>
>>>> The ring member of the object structure was always updated with the
>>>> last_read_seqno member. Thus with the conversion to last_read_req, obj->ring is
>>>> now a direct copy of obj->last_read_req->ring. This makes it somewhat redundant
>>>> and potentially misleading (especially as there was no comment to explain its
>>>> purpose).
>>>>
>>>> This checkin removes the redundant field. Many uses were simply testing for
>>>> non-null to see if the object is active on the GPU. Some of these have been
>>>> converted to check 'obj->active' instead. Others (where the last_read_req is
>>>> about to be used anyway) have been changed to check obj->last_read_req. The rest
>>>> simply pull the ring out from the request structure and proceed as before.
>>>>
>>>> For: VIZ-4377
>>>> Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
>>>> Reviewed-by: Thomas Daniel <Thomas.Daniel@intel.com>
>>> Ok merged up to this for now. I'd like to settle things a bit first (and
>>> also figure out what to do with the trace_irq stuff).
>>>
>>> Thanks for patches&review,
>>> Daniel
>> Now that the 3.19 pull request has gone, are you going to continue merging
>> these patches? Or is there something else you particularly want to wait for?
> Well I'm still not convinced that those patches are what we want. For
> android (and a few other things) we really want to support struct fence,
> and that already provides all the necessary code to cache the completion
> state. So I don't see why we have to do a detour just to get caching into
> place if for the long-term plan we'll need to rip all that code out again
> anyway. And the scheduler without fence/syncpt integration doesn't make a
> lot of sense on Android I think.
>
> Now if there's a seriuos performance issue with requests without this then
> maybe this detour makes sense. But I don't see any benchmark data attached
> to justify the patches from that pov.
> -Daniel
Firstly, not all the missing patches are about performance caching. For
example, the kmalloc vs kzalloc patch is simply better code all round.
The tracing patch is also a general purpose driver improvement and makes
debugging/analysing the code easier.
Re the caching. My argument is that the request implementation, as it
stands, is a significant step backwards over the original seqno version.
In the original code, someone had evidently seen fit to make the
completion test a minimal inline function. In the half merged request
version, it is a function call with register reading and list traversal.
As the cached version is already written, tested and reviewed, I do not
see a reason to discard it in order to write a completely new version at
some unspecified point in the future that may or may not be quite a
large piece of work.
Also, the scheduler is already ported on top of the full request patch
set and is running in the GMin Android code base with native sync
included. Having to rewrite the underlying code yet again is going to be
a significant delay in something that needs to be shipped last month.
Delaying that short term work for a long term goal is really undesirable
at this point. The plan has always been to rework for long term
awesomeness (such as dmabuf sync integration) after something basic is
implemented and shipped.
Do you have time for a phone call or meeting to discuss this?
Thanks,
John.
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2014-12-01 12:45 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-24 18:49 [PATCH v3 00/28] Replace seqno values with request structures John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 01/28] drm/i915: Ensure OLS & PLR are always in sync John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 02/28] drm/i915: Add reference count to request structure John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 03/28] drm/i915: Add helper functions to aid seqno -> request transition John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 04/28] drm/i915: Replace last_[rwf]_seqno with last_[rwf]_req John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 05/28] drm/i915: Convert i915_gem_ring_throttle to use requests John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 06/28] drm/i915: Ensure requests stick around during waits John.C.Harrison
2014-11-26 12:27 ` John Harrison
2014-11-26 13:14 ` Daniel Vetter
2014-11-24 18:49 ` [PATCH v3 07/28] drm/i915: Remove 'outstanding_lazy_seqno' John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 08/28] drm/i915: Make 'i915_gem_check_olr' actually check by request not seqno John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 09/28] drm/i915: Convert 'last_flip_req' to be a request not a seqno John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 10/28] drm/i915: Convert i915_wait_seqno to i915_wait_request John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 11/28] drm/i915: Add IRQ friendly request deference facility John.C.Harrison
2014-11-26 9:19 ` Daniel Vetter
2014-11-26 12:23 ` John Harrison
2014-11-26 12:35 ` Daniel Vetter
2014-11-24 18:49 ` [PATCH v3 12/28] drm/i915: Convert mmio_flip::seqno to struct request John.C.Harrison
2014-11-26 9:23 ` Daniel Vetter
2014-11-26 12:12 ` John Harrison
2014-11-26 12:49 ` Daniel Vetter
2014-11-26 15:21 ` John Harrison
2014-11-26 18:22 ` Daniel Vetter
2014-11-24 18:49 ` [PATCH v3 13/28] drm/i915: Convert __wait_seqno() to __wait_request() John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 14/28] drm/i915: Remove obsolete seqno parameter from 'i915_add_request' John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 15/28] drm/i915: Convert 'flip_queued_seqno' into 'flip_queued_request' John.C.Harrison
2014-11-26 13:07 ` Daniel Vetter
2014-11-24 18:49 ` [PATCH v3 16/28] drm/i915: Convert trace functions from seqno to request John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 17/28] drm/i915: Convert 'trace_irq' to use requests rather than seqnos John.C.Harrison
2014-11-26 13:24 ` Daniel Vetter
2014-11-26 14:12 ` John Harrison
2014-11-26 14:31 ` Chris Wilson
2014-11-26 14:42 ` Daniel Vetter
2014-11-26 14:58 ` John Harrison
2014-11-26 18:23 ` Daniel Vetter
2014-11-26 18:25 ` Daniel Vetter
2014-11-24 18:49 ` [PATCH v3 18/28] drm/i915: Convert 'ring_idle()' to use requests not seqnos John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 19/28] drm/i915: Connect requests to rings at creation not submission John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 20/28] drm/i915: Convert 'i915_seqno_passed' calls into 'i915_gem_request_completed' John.C.Harrison
2014-11-26 13:42 ` Daniel Vetter
2014-11-24 18:49 ` [PATCH v3 21/28] drm/i915: Remove the now redundant 'obj->ring' John.C.Harrison
2014-11-26 13:43 ` Daniel Vetter
2014-11-28 17:49 ` John Harrison
2014-11-28 18:06 ` Daniel Vetter
2014-12-01 12:44 ` John Harrison [this message]
2014-12-01 16:44 ` Daniel Vetter
2014-11-24 18:49 ` [PATCH v3 22/28] drm/i915: Cache request completion status John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 23/28] drm/i915: Zero fill the request structure John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 24/28] drm/i915: Spinlock protection for request list John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 25/28] drm/i915: Interrupt driven request completion John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 26/28] drm/i915: Remove obsolete parameter to i915_gem_request_completed() John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 27/28] drm/i915: Add unique id to the request structure for debugging John.C.Harrison
2014-11-24 18:49 ` [PATCH v3 28/28] drm/i915: Additional request structure tracing John.C.Harrison
2014-11-25 11:59 ` [PATCH v3 00/28] Replace seqno values with request structures Daniel, Thomas
2014-12-05 13:49 ` [PATCH v4 0/4] " John.C.Harrison
2014-12-05 13:49 ` [PATCH v4 1/4] drm/i915: Fix up seqno -> request merge issues John.C.Harrison
2014-12-05 20:37 ` Daniel Vetter
2014-12-05 13:49 ` [PATCH v4 2/4] drm/i915: Zero fill the request structure John.C.Harrison
2014-12-05 13:49 ` [PATCH v4 3/4] drm/i915: Add unique id to the request structure for debugging John.C.Harrison
2014-12-05 13:49 ` [PATCH v4 4/4] drm/i915: Additional request structure tracing John.C.Harrison
2014-12-05 19:01 ` shuang.he
2014-12-05 20:48 ` Daniel Vetter
2014-12-05 20:50 ` Daniel Vetter
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=547C629C.5010000@Intel.com \
--to=john.c.harrison@intel.com \
--cc=Intel-GFX@Lists.FreeDesktop.Org \
--cc=daniel@ffwll.ch \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox