[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <DBWEQWVWLJWA.2JHS152T8YSO1@kernel.org>
Date: Thu, 07 Aug 2025 20:30:15 +0200
From: "Danilo Krummrich" <dakr@...nel.org>
To: "Liam R. Howlett" <Liam.Howlett@...cle.com>
Cc: "Gary Guo" <gary@...yguo.net>, "Alice Ryhl" <aliceryhl@...gle.com>,
"Andrew Morton" <akpm@...ux-foundation.org>, "Lorenzo Stoakes"
<lorenzo.stoakes@...cle.com>, "Miguel Ojeda" <ojeda@...nel.org>, "Andrew
Ballance" <andrewjballance@...il.com>, "Boqun Feng" <boqun.feng@...il.com>,
Björn Roy Baron <bjorn3_gh@...tonmail.com>, "Benno Lossin"
<lossin@...nel.org>, "Andreas Hindborg" <a.hindborg@...nel.org>, "Trevor
Gross" <tmgross@...ch.edu>, <linux-kernel@...r.kernel.org>,
<maple-tree@...ts.infradead.org>, <rust-for-linux@...r.kernel.org>,
<linux-mm@...ck.org>
Subject: Re: [PATCH 2/3] rust: maple_tree: add MapleTree::lock() and load()
On Thu Aug 7, 2025 at 6:15 PM CEST, Liam R. Howlett wrote:
> * Gary Guo <gary@...yguo.net> [250727 08:03]:
>> On Sat, 26 Jul 2025 18:18:02 +0200
>> Well, `Lock::from_raw` is designed to interact with a C-side lock:
>>
>> > Construct a Lock from a raw pointer
>> >
>> > This can be useful for interacting with a lock which was initialised outside of Rust.
>>
>
> If it matters for future build out, the tree supports an external lock
> that may not be a spinlock. This is currently used by the mm for the
> vma management, and others (although willy wants it to go away
> eventually).
When I was considering maple tree for GPUVM, i.e. vma management for GPUs, I
would have needed the external lock as well. For GPU VMA management we have
section for which we have to ensure that the tree won't be altered for a
sequence of sleeping operations.
In the worst case we could have used the internal spinlock and yet have an
external mutex for this purpose; an uncontended spinlock shouldn't be that big
a deal to take. So, long story short, I think there may be a few cases where an
external lock can make sense.
Just to recap why GPUVM couldn't leverage maple tree: we have cases where we
have to pre-allocate multiple entries for the tree, whose ranges are yet unknown
at the time we need to pre-allocate them. Unfortunately, I can't think of a
solution for this given that in this situation we can't predict the number of
new nodes this requires.
If however in the meantime there have been ideas to tackle this please let me
know, I'd still love to have maple tree for GPUVM.
- Danilo
Powered by blists - more mailing lists