Re: [PATCH v8 1/1] rust: introduce abstractions for fwctl
Jason Gunthorpe <[email protected]>
| Newsgroups | org.kernel.vger.rust-for-linux,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Thu, Aug 13, 2026 at 06:23:12PM +0300, Zhi Wang wrote: > Introduce safe Rust wrappers around struct fwctl_device and > struct fwctl_uctx. This lets Rust drivers register fwctl devices and > implement firmware RPC callbacks through a typed trait interface. > > The abstraction keeps lifetime and reference-count handling inside the > wrapper, exposes pinned per-FD user contexts to drivers, and validates the > layout assumptions required by the C fwctl allocation model. Allocation > sizes are padded so the kmalloc-backed C allocations also satisfy Rust > alignment requirements. > > Registration owns driver private data with a lifetime tied to the bound > parent device and verifies the parent identity before registration. > Callbacks access that data through a higher-ranked closure, preventing its > erased lifetime from escaping, while Device remains only the refcounted > fwctl object. This avoids requiring Rust drop glue from the fwctl_device > release path after unregister or module teardown. > > RPC callbacks receive typed scope information, a mutable request/response > buffer, and the userspace output-buffer size. Response pointer conversion, > length validation, and raw output-length handling remain inside the > abstraction. > > Add the Rust sources to the FWCTL MAINTAINERS entry and add myself as the > maintainer for the Rust abstractions. > > Co-developed-by: Danilo Krummrich <[email protected]> > Signed-off-by: Danilo Krummrich <[email protected]> > Link: https://lore.kernel.org/r/[email protected] > Signed-off-by: Zhi Wang <[email protected]> > --- > MAINTAINERS | 3 + > drivers/fwctl/Kconfig | 12 + > rust/bindings/bindings_helper.h | 1 + > rust/helpers/fwctl.c | 17 + > rust/helpers/helpers.c | 3 +- > rust/kernel/fwctl.rs | 593 ++++++++++++++++++++++++++++++++ > rust/kernel/lib.rs | 2 + > 7 files changed, 630 insertions(+), 1 deletion(-) > create mode 100644 rust/helpers/fwctl.c > create mode 100644 rust/kernel/fwctl.rs Applied thanks, I was eventually able to get things here so it can compile even. Jason