From: Christian Schrefl <chrisi.schrefl@gmail.com>
To: "Miguel Ojeda" <ojeda@kernel.org>,
"Danilo Krummrich" <dakr@kernel.org>,
"Alex Gaynor" <alex.gaynor@gmail.com>,
"Boqun Feng" <boqun.feng@gmail.com>,
"Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"Trevor Gross" <tmgross@umich.edu>,
"Arnd Bergmann" <arnd@arndb.de>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Lee Jones" <lee@kernel.org>,
"Daniel Almeida" <daniel.almeida@collabora.com>,
"Benno Lossin" <lossin@kernel.org>,
"Benno Lossin" <lossin@kernel.org>
Cc: "Gerald Wisböck" <gerald.wisboeck@feather.ink>,
rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
"Christian Schrefl" <chrisi.schrefl@gmail.com>
Subject: [PATCH v6 0/3] rust: miscdevice: add additional data to MiscDeviceRegistration
Date: Tue, 10 Jun 2025 22:27:54 +0200 [thread overview]
Message-ID: <20250610-b4-rust_miscdevice_registrationdata-v6-0-b03f5dfce998@gmail.com> (raw)
Currently there is no good way to pass arbitrary data from the driver to
a `miscdevice` or to share data between individual handles to a
`miscdevice` in rust.
This series adds additional (generic) data to the MiscDeviceRegistration
for this purpose.
The first patch originally comes from my `UnsafePinned` patch series [0].
The second patch implements the changes and fixes the build of the sample
without changing any functionality (this is currently the only in tree
user).
The third patch changes the `rust_misc_device` sample to use this to
share the same data between multiple handles to the `miscdevice`.
I have tested the sample with qemu and the C userspace example
from the doc comments.
Some discussion on Zulip about the motivation and approach [1].
Thanks a lot to everyone helping me out with this.
This patch series is based on the v6.16-rc1 tag.
Link: https://lore.kernel.org/rust-for-linux/20250511-rust_unsafe_pinned-v4-2-a86c32e47e3d@gmail.com/ [0]
Link: https://rust-for-linux.zulipchat.com/#narrow/channel/288089-General/topic/Passing.20a.20DevRes.20to.20a.20miscdev/near/494553814 [1]
Signed-off-by: Christian Schrefl <chrisi.schrefl@gmail.com>
---
Changes in v6:
- add `Send` bounds required to use `assert_send`
- rebase on-top of v6.16-rc1
- added missing newline before `impl Wrapper..`
- Link to v5: https://lore.kernel.org/r/20250607-b4-rust_miscdevice_registrationdata-v5-0-b77b5b7aab5b@gmail.com
Changes in v5:
- Remove repr(C) and PhantomData (Benno)
- Rename `RegistrationData` to just `Data` (Benno)
- Add bound `Data: Send` bound to `impl Send for
MiscDeviceRegistration` (Benno)
- Add safety comment about `MiscDeviceRegistration: Send` requirement
- Add Invariants to `MiscDeviceRegistration` (Benno)
- Slightly reword safety comment in drop.
- Removed spurious newline changes in sample (Benno)
- Removed spurious typo fix (Miguel)
- Add Alice's Reviewed-by from v3.
- Link to v4: https://lore.kernel.org/r/20250530-b4-rust_miscdevice_registrationdata-v4-0-d313aafd7e59@gmail.com
Changes in v4:
- Rework to use Opaque instead of `UnsafePinned`.
- Include `impl Wrapper for Opaque` patch.
- Link to v3: https://lore.kernel.org/r/20250517-b4-rust_miscdevice_registrationdata-v3-0-cdb33e228d37@gmail.com
Changes in v3:
- Rebased on top of my `UnsafePinned` series.
- Link to v2: https://lore.kernel.org/r/20250131-b4-rust_miscdevice_registrationdata-v2-0-588f1e6cfabe@gmail.com
Changes in v2:
- Don't use associated_type_bounds since the MSRV does not support
that on stable yet (Kernel test robot)
- Doc changes and add intra-doc links (Miguel)
- Use container_of macro instead of pointer cast in `fops_open` (Greg)
- Rename `Aliased` to `UnsafePinned` (Boqun)
- Make sure Data is initialized before `misc_register` is called
- Rework the example to use an additional shared value instead of
replacing the unique one
- Expanded the c code for the example to use the new ioctls
- Link to v1: https://lore.kernel.org/r/20250119-b4-rust_miscdevice_registrationdata-v1-0-edbf18dde5fc@gmail.com
---
Christian Schrefl (3):
rust: implement `Wrapper<T>` for `Opaque<T>`
rust: miscdevice: add additional data to `MiscDeviceRegistration`
rust: miscdevice: adjust the `rust_misc_device` sample to use `Data`.
rust/kernel/miscdevice.rs | 104 ++++++++++++++++++++++++++---------
rust/kernel/revocable.rs | 2 +
rust/kernel/types.rs | 26 +++++----
samples/rust/rust_misc_device.rs | 116 +++++++++++++++++++++++++++++++++++++--
4 files changed, 205 insertions(+), 43 deletions(-)
---
base-commit: 19272b37aa4f83ca52bdf9c16d5d81bdd1354494
change-id: 20250119-b4-rust_miscdevice_registrationdata-a11d88dcb284
Best regards,
--
Christian Schrefl <chrisi.schrefl@gmail.com>
next reply other threads:[~2025-06-10 20:28 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-10 20:27 Christian Schrefl [this message]
2025-06-10 20:27 ` [PATCH v6 1/3] rust: implement `Wrapper<T>` for `Opaque<T>` Christian Schrefl
2025-06-27 14:43 ` Miguel Ojeda
2025-06-29 15:11 ` Danilo Krummrich
2025-06-10 20:27 ` [PATCH v6 2/3] rust: miscdevice: add additional data to `MiscDeviceRegistration` Christian Schrefl
2025-06-10 20:27 ` [PATCH v6 3/3] rust: miscdevice: adjust the `rust_misc_device` sample to use `Data` Christian Schrefl
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=20250610-b4-rust_miscdevice_registrationdata-v6-0-b03f5dfce998@gmail.com \
--to=chrisi.schrefl@gmail.com \
--cc=a.hindborg@kernel.org \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=arnd@arndb.de \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=dakr@kernel.org \
--cc=daniel.almeida@collabora.com \
--cc=gary@garyguo.net \
--cc=gerald.wisboeck@feather.ink \
--cc=gregkh@linuxfoundation.org \
--cc=lee@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=tmgross@umich.edu \
/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.