[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <2026020616-hardhat-french-4dac@gregkh>
Date: Fri, 6 Feb 2026 14:22:42 +0100
From: Greg KH <gregkh@...uxfoundation.org>
To: Danilo Krummrich <dakr@...nel.org>
Cc: Alice Ryhl <aliceryhl@...gle.com>, rafael@...nel.org, ojeda@...nel.org,
boqun.feng@...il.com, gary@...yguo.net, bjorn3_gh@...tonmail.com,
lossin@...nel.org, a.hindborg@...nel.org, tmgross@...ch.edu,
driver-core@...ts.linux.dev, rust-for-linux@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 2/5] devres: export devres_node_init() and
devres_node_add()
On Fri, Feb 06, 2026 at 02:16:05PM +0100, Danilo Krummrich wrote:
> On Fri Feb 6, 2026 at 1:34 PM CET, Greg KH wrote:
> > That's fine, because the rust driver core code should also be built into
> > the kernel, not as a module, right?
>
> Yes, but the Rust compiler may still choose to put some of the core code into
> the module.
What exactly do you mean by "the module"?
> Especially with generic types and functions the Rust compiler may move some the
> generated code for a certain type instance into the module that instanciates the
> type.
Ah, that's a mess. why? The code lives in the .rs file in the kernel
core, right?
> For instance, even though rust/kernel/devres.rs is *always* built-in, we get the
> following error when devres_node_init() is not exported when the users of this
> built-in code are built as module.
>
> ERROR: modpost: "devres_node_init" [drivers/pwm/pwm_th1520.ko] undefined!
> ERROR: modpost: "devres_node_init" [drivers/gpu/drm/tyr/tyr.ko] undefined!
> ERROR: modpost: "devres_node_init" [drivers/gpu/nova-core/nova_core.ko] undefined!
> ERROR: modpost: "devres_node_init" [samples/rust/rust_dma.ko] undefined!
> ERROR: modpost: "devres_node_init" [samples/rust/rust_driver_pci.ko] undefined!
> ERROR: modpost: "devres_node_init" [samples/rust/rust_driver_auxiliary.ko] undefined!
> make[2]: *** [scripts/Makefile.modpost:147: Module.symvers] Error 1
This feels like a compiler bug, how is the compiler reaching into
devres.rs and sucking out code to put into the module? Doesn't the
build/link boundry stay at the .rs boundry?
> However, sprinkling "raw" EXPORT_SYMBOL_GPL() due to that is not great at all.
> Hence, we could do something like in [1] instead. I don't know if there are
> other options that may be better though.
>
> [1] https://lore.kernel.org/all/DG7UR3WWZB4V.2MYMJJH1VDHH@kernel.org/
That's a start, but still messy. There's no compiler options to prevent
this "lifting" of the code out of devres.rs? If not, this is not going
to be the only problem that drivers run into like this in the future.
thanks,
greg k-h
Powered by blists - more mailing lists