From: "Eliot Courtney" <ecourtney@nvidia.com>
To: "Eliot Courtney" <ecourtney@nvidia.com>,
"Liam R. Howlett" <liam@infradead.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"Andrew Ballance" <andrewjballance@gmail.com>,
"Danilo Krummrich" <dakr@kernel.org>
Cc: "John Hubbard" <jhubbard@nvidia.com>,
"Alistair Popple" <apopple@nvidia.com>,
"Timur Tabi" <ttabi@nvidia.com>,
"Alexandre Courbot" <acourbot@nvidia.com>,
"Miguel Ojeda" <ojeda@kernel.org>,
<maple-tree@lists.infradead.org>,
<rust-for-linux@vger.kernel.org>, <nova-gpu@lists.linux.dev>,
<linux-kernel@vger.kernel.org>,
"Joel Fernandes" <joelagnelf@nvidia.com>,
"Gary Guo" <gary@garyguo.net>, "Boqun Feng" <boqun@kernel.org>
Subject: Re: [PATCH v2] rust: maple_tree: implement Send and Sync for MapleTree
Date: Fri, 11 Sep 2026 23:14:44 +0900 [thread overview]
Message-ID: <DLCJT6N5P15Z.3A81XS0F2BMAT@nvidia.com> (raw)
In-Reply-To: <20260908-maple-tree-send-sync-v2-1-24aae5b3a990@nvidia.com>
On Tue Sep 8, 2026 at 6:54 PM JST, Eliot Courtney wrote:
> From: Joel Fernandes <joelagnelf@nvidia.com>
>
> The C maple_tree struct contains a *mut c_void, which prevents Rust from
> auto-deriving Send/Sync. Following is an example error message when using
> MapleTree in nova-core's Vmm.
>
> This propagates up through MapleTreeAlloc to Vmm, BarUser, Gpu, and NovaCore,
> causing NovaCore to fail the Send bound required by pci::Driver:
>
> error[E0277]: `*mut c_void` cannot be sent between threads safely
> --> drivers/gpu/nova-core/driver.rs:77:22
> |
> 77 | impl pci::Driver for NovaCore {
> | ^^^^^^^^ `*mut c_void` cannot be sent between threads safely
> |
> = help: within `MapleTreeAlloc<()>`, the trait `Send` is not implemented for `*mut c_void`
> note: required because it appears within the type `kernel::bindings::maple_tree`
> note: required because it appears within the type `Opaque<kernel::bindings::maple_tree>`
> note: required because it appears within the type `MapleTree<()>`
> note: required because it appears within the type `MapleTreeAlloc<()>`
> = note: required for `Box<MapleTreeAlloc<()>, Kmalloc>` to implement `Send`
> note: required because it appears within the type `core::pin::Pin<Box<MapleTreeAlloc<()>, Kmalloc>>`
> note: required because it appears within the type `Vmm`
> note: required because it appears within the type `BarUser`
> note: required because it appears within the type `Gpu`
> note: required because it appears within the type `NovaCore`
> note: required by a bound in `kernel::pci::Driver`
> --> rust/kernel/pci.rs:294:19
>
> Implement Send and Sync for MapleTree. The tree contains no thread-local
> state, and all shared access goes through the internal ma_lock spinlock.
>
> Reviewed-by: Gary Guo <gary@garyguo.net>
> Reviewed-by: Alice Ryhl <aliceryhl@google.com>
> Signed-off-by: Joel Fernandes <joelagnelf@nvidia.com>
> Reviewed-by: Boqun Feng <boqun@kernel.org>
> [ecourtney: also require T: Sync for the Sync impl]
> Signed-off-by: Eliot Courtney <ecourtney@nvidia.com>
> ---
> This is a repost of Joel's v3 [1]. The upcoming nova-core memory
> management changes depend on it.
>
> Compared to v3, I've added Boqun's Reviewed-by from the v2 thread [2],
> which v3 didn't pick up.
>
> This is based on drm-rust-next.
>
> [1] https://lore.kernel.org/all/20260511143604.3848176-1-joelagnelf@nvidia.com/
> [2] https://lore.kernel.org/all/aftiZGt3HQe0Bf_x@tardis.local/
> [3] https://lore.kernel.org/all/CAH5fLgh_TQiqKxXsz_DVcQxkCaEw+q0JyTh4e4Tnp28V0JDmYg@mail.gmail.com/
> ---
Applied to drm-rust-next, thanks!
[1/1] rust: maple_tree: implement Send and Sync for MapleTree
[ecourtney: also require T: Sync for the Sync impl]
commit: 9cf1bc8bbc71a6b727ed6def13f125b07cf35210
next prev parent reply other threads:[~2026-09-11 14:14 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-08 9:54 [PATCH v2] rust: maple_tree: implement Send and Sync for MapleTree Eliot Courtney
2026-09-08 18:22 ` Liam R. Howlett
2026-09-09 14:21 ` Danilo Krummrich
2026-09-11 14:14 ` Eliot Courtney [this message]
-- strict thread matches above, loose matches on Subject: below --
2026-05-06 13:51 Joel Fernandes
2026-05-06 15:46 ` Boqun Feng
2026-05-06 16:18 ` Joel Fernandes
2026-05-07 7:18 ` Alice Ryhl
2026-04-22 20:28 Joel Fernandes
2026-04-23 11:29 ` Gary Guo
2026-04-23 17:07 ` Boqun Feng
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=DLCJT6N5P15Z.3A81XS0F2BMAT@nvidia.com \
--to=ecourtney@nvidia.com \
--cc=acourbot@nvidia.com \
--cc=aliceryhl@google.com \
--cc=andrewjballance@gmail.com \
--cc=apopple@nvidia.com \
--cc=boqun@kernel.org \
--cc=dakr@kernel.org \
--cc=gary@garyguo.net \
--cc=jhubbard@nvidia.com \
--cc=joelagnelf@nvidia.com \
--cc=liam@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maple-tree@lists.infradead.org \
--cc=nova-gpu@lists.linux.dev \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=ttabi@nvidia.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 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.