From: Thomas Hellstrom <thomas-4+hqylr40dJg9hUCZPvPmw@public.gmane.org>
To: Luca Barbieri <luca-Ukmtq+NC3rhBHFWNQifrYwC/G2K4zDHf@public.gmane.org>
Cc: "airlied-cv59FeDIM0c@public.gmane.org"
<airlied-cv59FeDIM0c@public.gmane.org>,
"nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org"
<nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>,
Thomas Hellstrom
<thellstrom-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>,
"dri-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org"
<dri-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>
Subject: Re: [PATCH] drm/ttm: Fix race condition in ttm_bo_delayed_delete
Date: Wed, 20 Jan 2010 12:28:46 +0100 [thread overview]
Message-ID: <4B56E8EE.8090706@shipmail.org> (raw)
In-Reply-To: <ff13bc9a1001181433v1694e681l9f7ce9d880132dc3-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
Luca Barbieri wrote:
>> Would nentry=list_first_entry(&entry->ddestroy, ....) work?
>>
> Yes, it seems a bit less intuitive, but if that's the accepted
> practice, let's do that instead.
>
>
>> Here nentry may have been removed from the list by another process, which
>> would trigger the unnecessary call, mentioned above.
>>
> You are right.
>
> I attached a revised patch.
> It's only compile tested, but the changes are small and it should
> hopefully work.
>
Yes, it looks correct. Although it seems a little unintuitive to enter
the loop with the spinlock held, and exit it with the spinlock not held.
I've attached yet another patch to have that fixed. Could you take a
look at whether it seems OK with you and, in that case, repost it for Dave?
> The whole function seems more complicated than needed, but I can't
> find a way to do it with less code. If we could keep glob->lru_lock
> while calling ttm_bo_cleanup_refs things would be much simpler, but
> that would require intrusive changes and may not be possible.
>
Yes, one of the rules of TTM is to avoid calling any kref_put() function
that may free an object with a spinlock or a mutex held, since the
free function must be able to take whatever mutex or spinlock it likes,
otherwise we'd end up in a complete mess of recursive locks and lock
dependency errors. Since therefore ttm_bo_cleanup_refs would need to
temporarily release any lock held at call time, we wouldn't be better off.
/Thomas
next prev parent reply other threads:[~2010-01-20 11:28 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-18 18:47 [PATCH] drm/ttm: Fix race condition in ttm_bo_delayed_delete Luca Barbieri
2010-01-18 19:40 ` Thomas Hellstrom
[not found] ` <4B54B949.9010906-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
2010-01-18 22:33 ` Luca Barbieri
[not found] ` <ff13bc9a1001181433v1694e681l9f7ce9d880132dc3-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-20 11:28 ` Thomas Hellstrom [this message]
[not found] ` <4B56E8EE.8090706-4+hqylr40dJg9hUCZPvPmw@public.gmane.org>
2010-01-20 12:11 ` Thomas Hellstrom
2010-01-20 12:11 ` Thomas Hellstrom
[not found] ` <4B56F308.5090603-4+hqylr40dJg9hUCZPvPmw@public.gmane.org>
2010-01-20 12:16 ` Thomas Hellstrom
2010-01-20 12:16 ` Thomas Hellstrom
[not found] ` <4B56F401.8070700-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
2010-01-20 19:22 ` Luca Barbieri
[not found] ` <ff13bc9a1001201122y110fb003k704bc6d05d2aea07-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-20 20:16 ` Thomas Hellstrom
[not found] ` <4B5764BA.7080801-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
2010-01-20 20:45 ` Luca Barbieri
[not found] ` <ff13bc9a1001201245g6ee25219q851b7989968f4c7b-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-20 20:58 ` Luca Barbieri
[not found] ` <ff13bc9a1001201258i37ee7354gb305aa98afae3716-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-20 21:11 ` Thomas Hellstrom
2010-01-20 21:04 ` Thomas Hellstrom
[not found] ` <4B576FF5.9040907-4+hqylr40dJg9hUCZPvPmw@public.gmane.org>
2010-01-21 3:49 ` Luca Barbieri
[not found] ` <ff13bc9a1001201949l4691f202v2a2874b9cef86f37-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-21 12:29 ` Jerome Glisse
[not found] ` <20100121122920.GB3837-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2010-01-21 12:59 ` Thomas Hellstrom
[not found] ` <4B584FAE.8040801-4+hqylr40dJg9hUCZPvPmw@public.gmane.org>
2010-01-25 8:14 ` Jerome Glisse
[not found] ` <20100125081444.GA23124-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2010-01-25 20:51 ` Thomas Hellstrom
2010-01-21 15:14 ` Luca Barbieri
[not found] ` <ff13bc9a1001210714m34c3976etc7680f056cb55453-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-25 8:20 ` Jerome Glisse
2010-01-21 12:53 ` Thomas Hellstrom
[not found] ` <4B584E48.8020806-4+hqylr40dJg9hUCZPvPmw@public.gmane.org>
2010-01-21 13:40 ` Luca Barbieri
[not found] ` <ff13bc9a1001210540t7dc2b7a7p38359ca82b8b3eb4-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-21 14:07 ` Francisco Jerez
[not found] ` <87vdeveekk.fsf-sGOZH3hwPm2sTnJN9+BGXg@public.gmane.org>
2010-01-21 14:17 ` Luca Barbieri
[not found] ` <ff13bc9a1001210617qe37ab7at949d545216693608-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-21 14:44 ` Francisco Jerez
[not found] ` <87pr53ecwd.fsf-sGOZH3hwPm2sTnJN9+BGXg@public.gmane.org>
2010-01-21 15:36 ` Luca Barbieri
[not found] ` <ff13bc9a1001210736k71740417r7b129c70374fece3-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-21 16:18 ` Francisco Jerez
[not found] ` <87y6jrbfef.fsf-sGOZH3hwPm2sTnJN9+BGXg@public.gmane.org>
2010-01-21 16:30 ` Luca Barbieri
[not found] ` <ff13bc9a1001210830g2653f672r918f8cb90cbf6170-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-21 17:39 ` Francisco Jerez
2010-01-21 15:39 ` Maarten Maathuis
[not found] ` <6d4bc9fc1001210739r2bb8b4c4i18590376a1628d82-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-21 15:56 ` Luca Barbieri
[not found] ` <ff13bc9a1001210756r1e627146w89fb2138ca77e6b5-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-21 16:02 ` Maarten Maathuis
2010-01-21 14:23 ` Thomas Hellstrom
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=4B56E8EE.8090706@shipmail.org \
--to=thomas-4+hqylr40djg9huczpvpmw@public.gmane.org \
--cc=airlied-cv59FeDIM0c@public.gmane.org \
--cc=dri-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=luca-Ukmtq+NC3rhBHFWNQifrYwC/G2K4zDHf@public.gmane.org \
--cc=nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=thellstrom-pghWNbHTmq7QT0dZR+AlfA@public.gmane.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.