From: Maarten Lankhorst <maarten.lankhorst@canonical.com>
To: Thomas Hellstrom <thomas@shipmail.org>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH] drm/ttm: remove fence_lock
Date: Thu, 18 Oct 2012 13:38:23 +0200 [thread overview]
Message-ID: <507FEA2F.6090403@canonical.com> (raw)
In-Reply-To: <507FE1BB.3060104@shipmail.org>
Op 18-10-12 13:02, Thomas Hellstrom schreef:
> On 10/18/2012 10:37 AM, Maarten Lankhorst wrote:
>> Hey,
>>
>> Op 18-10-12 09:59, Thomas Hellstrom schreef:
>>>
>>>
>>> On 10/18/2012 09:28 AM, Thomas Hellstrom wrote:
>>>> Hi, Maarten,
>>>>
>>>> As you know I have been having my doubts about this change.
>>>> To me it seems insane to be forced to read the fence pointer under a
>>>> reserved lock, simply because when you take the reserve lock, another
>>>> process may have it and there is a substantial chance that that process
>>>> will also be waiting for idle while holding the reserve lock.
>> I think it makes perfect sense, the only times you want to read the fence
>> is when you want to change the members protected by the reservation.
>
> No, that's not true. A typical case (or the only case)
> is where you want to do a map with no_wait semantics. You will want
> to be able to access a buffer's results even if the eviction code
> is about to schedule an unbind from the GPU, and have the buffer
> reserved?
Well either block on reserve or return -EBUSY if reserved, presumably the
former..
ttm_bo_vm_fault does the latter already, anyway.
You don't need to hold the reservation while performing the wait itself though,
you could check if ttm_bo_wait(no_wait_gpu = true) returns -EBUSY, and if so
take a ref to the sync_obj member and then wait after unreserving. You won't
reset sync_obj member to NULL in that case, but that should be harmless.
This will allow you to keep the reservations fast and short. Maybe a helper
would be appropriate for this since radeon and nouveau both seem to do this.
The next time someone wants to do a wait it will go through the fastpath and
unset the sync_obj member, since it's already signaled, or it's removed when
ttm_execbuffer_util is used.
~Maarten
next prev parent reply other threads:[~2012-10-18 11:38 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-12 15:23 [PATCH] drm/ttm: remove fence_lock Maarten Lankhorst
2012-10-18 7:28 ` Thomas Hellstrom
2012-10-18 7:59 ` Thomas Hellstrom
2012-10-18 8:37 ` Maarten Lankhorst
2012-10-18 11:02 ` Thomas Hellstrom
2012-10-18 11:38 ` Maarten Lankhorst [this message]
2012-10-18 11:55 ` Thomas Hellstrom
2012-10-18 14:45 ` Maarten Lankhorst
2012-10-18 16:43 ` Thomas Hellstrom
2012-10-18 17:04 ` Jerome Glisse
2014-03-20 23:55 ` Dave Airlie
2014-03-21 8:27 ` Thomas Hellstrom
2014-03-21 12:12 ` Maarten Lankhorst
2014-03-21 13:04 ` Thomas Hellstrom
2014-03-25 14:23 ` Maarten Lankhorst
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=507FEA2F.6090403@canonical.com \
--to=maarten.lankhorst@canonical.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=thomas@shipmail.org \
/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.