From: "Christian König" <ckoenig.leichtzumerken@gmail.com>
To: "Christian König" <christian.koenig@amd.com>,
"Peter Zijlstra" <peterz@infradead.org>,
"Lucas Stach" <l.stach@pengutronix.de>,
"Russell King" <linux+etnaviv@armlinux.org.uk>,
"Christian Gmeiner" <christian.gmeiner@gmail.com>,
"Qiang Yu" <yuq825@gmail.com>, "Anholt, Eric" <eric@anholt.net>,
"Thomas Hellstrom" <thellstrom@vmware.com>,
dri-devel <dri-devel@lists.freedesktop.org>,
"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
"The etnaviv authors" <etnaviv@lists.freedesktop.org>,
lima@lists.freedesktop.org
Subject: Re: [PATCH 3/6] drm/gem: use new ww_mutex_(un)lock_for_each macros
Date: Fri, 14 Jun 2019 20:51:11 +0200 [thread overview]
Message-ID: <d97212dc-367c-28e9-6961-9b99110a4d2e@gmail.com> (raw)
In-Reply-To: <CAKMK7uFcDCJ9sozny1RqqRATwcK39doZNq+NZekvrzuO63ap-Q@mail.gmail.com>
Am 14.06.19 um 20:24 schrieb Daniel Vetter:
>
> On Fri, Jun 14, 2019 at 8:10 PM Christian König <ckoenig.leichtzumerken@gmail.com> wrote:
>> [SNIP]
>> WW_MUTEX_LOCK_BEGIN()
>>
>> lock(lru_lock);
>>
>> while (bo = list_first(lru)) {
>> if (kref_get_unless_zero(bo)) {
>> unlock(lru_lock);
>> WW_MUTEX_LOCK(bo->ww_mutex);
>> lock(lru_lock);
>> } else {
>> /* bo is getting freed, steal it from the freeing process
>> * or just ignore */
>> }
>> }
>> unlock(lru_lock)
>>
>> WW_MUTEX_LOCK_END;
Ah, now I know what you mean. And NO, that approach doesn't work.
See for the correct ww_mutex dance we need to use the iterator multiple
times.
Once to give us the BOs which needs to be locked and another time to
give us the BOs which needs to be unlocked in case of a contention.
That won't work with the approach you suggest here.
Regards,
Christian.
>
>
> Also I think if we allow this we could perhaps use this to implement the
> modeset macros too.
> -Daniel
>
>
>
>
>>> This is kinda what we went with for modeset locks with
>>> DRM_MODESET_LOCK_ALL_BEGIN/END, you can grab more locks in between the
>>> pair at least. But it's a lot more limited use-cases, maybe too fragile an
>>> idea for ww_mutex in full generality.
>>>
>>> Not going to type this out because too much w/e mode here already, but I
>>> can give it a stab next week.
>>> -Daniel
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
>
next prev parent reply other threads:[~2019-06-14 18:51 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-14 12:41 ww_mutex deadlock handling cleanup Christian König
2019-06-14 12:41 ` [PATCH 1/6] locking: add ww_mutex_(un)lock_for_each helpers Christian König
2019-06-14 12:56 ` Peter Zijlstra
2019-06-14 13:04 ` Christian König
2019-06-14 12:41 ` [PATCH 2/6] drm/ttm: use new ww_mutex_(un)lock_for_each macros Christian König
2019-06-14 12:41 ` [PATCH 3/6] drm/gem: " Christian König
2019-06-14 12:59 ` Peter Zijlstra
2019-06-14 13:06 ` Christian König
2019-06-14 13:21 ` Peter Zijlstra
2019-06-14 13:19 ` Peter Zijlstra
2019-06-14 15:22 ` Daniel Vetter
2019-06-14 18:10 ` Christian König
2019-06-14 18:24 ` Daniel Vetter
2019-06-14 18:51 ` Christian König [this message]
2019-06-14 20:30 ` Daniel Vetter
2019-06-15 13:56 ` Daniel Vetter
2019-06-17 9:30 ` Christian König
2019-06-14 12:41 ` [PATCH 4/6] drm/etnaviv: " Christian König
2019-06-14 12:41 ` [PATCH 5/6] drm/lima: " Christian König
2019-06-14 12:41 ` [PATCH 6/6] drm/vc4: " Christian König
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=d97212dc-367c-28e9-6961-9b99110a4d2e@gmail.com \
--to=ckoenig.leichtzumerken@gmail.com \
--cc=christian.gmeiner@gmail.com \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=eric@anholt.net \
--cc=etnaviv@lists.freedesktop.org \
--cc=l.stach@pengutronix.de \
--cc=lima@lists.freedesktop.org \
--cc=linux+etnaviv@armlinux.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=thellstrom@vmware.com \
--cc=yuq825@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome