[PATCH v5 0/3] rust: miscdevice: add additional data to MiscDeviceRegistration

Christian Schrefl posted 3 patches 6 months, 2 weeks ago
There is a newer version of this series
rust/kernel/miscdevice.rs        |  93 +++++++++++++++++++++++--------
rust/kernel/revocable.rs         |   2 +
rust/kernel/types.rs             |  25 +++++----
samples/rust/rust_misc_device.rs | 116 +++++++++++++++++++++++++++++++++++++--
4 files changed, 195 insertions(+), 41 deletions(-)
[PATCH v5 0/3] rust: miscdevice: add additional data to MiscDeviceRegistration
Posted by Christian Schrefl 6 months, 2 weeks ago
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 rust-next branch.

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 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        |  93 +++++++++++++++++++++++--------
 rust/kernel/revocable.rs         |   2 +
 rust/kernel/types.rs             |  25 +++++----
 samples/rust/rust_misc_device.rs | 116 +++++++++++++++++++++++++++++++++++++--
 4 files changed, 195 insertions(+), 41 deletions(-)
---
base-commit: 7a17bbc1d952057898cb0739e60665908fbb8c72
change-id: 20250119-b4-rust_miscdevice_registrationdata-a11d88dcb284

Best regards,
-- 
Christian Schrefl <chrisi.schrefl@gmail.com>
Re: [PATCH v5 0/3] rust: miscdevice: add additional data to MiscDeviceRegistration
Posted by Danilo Krummrich 6 months, 1 week ago
Greg,

On Sat, Jun 07, 2025 at 02:07:29PM +0200, Christian Schrefl wrote:
> Christian Schrefl (3):
>       rust: implement `Wrapper<T>` for `Opaque<T>`

Just a heads-up, this patch is also required for a patch series with some
improvements for devres (sent out soon), which itself in turn will be needed for
the next version of the series adding device driver support for misc device [1].

Unless there's a reason not to do so, we hence probably want to take the misc
device patches through the driver-core tree. A subsequent conflict with the
char-misc tree seems extremely unlikely.

[1] https://lore.kernel.org/lkml/20250530142447.166524-1-dakr@kernel.org/