[PATCH v3 0/2] rust: miscdevice: add additional data to MiscDeviceRegistration

Christian Schrefl posted 2 patches 7 months ago
There is a newer version of this series
rust/kernel/miscdevice.rs        |  78 ++++++++++++++++++-------
samples/rust/rust_misc_device.rs | 120 ++++++++++++++++++++++++++++++++++++---
2 files changed, 168 insertions(+), 30 deletions(-)
[PATCH v3 0/2] rust: miscdevice: add additional data to MiscDeviceRegistration
Posted by Christian Schrefl 7 months 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 implements the changes and fixes the build of the sample
without changing any functionality (this is currently the only in tree 
user).

The second 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.

This series its based on my `UnsafePinned` series [0] and the 
pin-init-next branch.

Some discussion on Zulip about the motivation and approach [1].
Thanks a lot to everyone helping me out with this.

Link: https://lore.kernel.org/rust-for-linux/20250430-rust_unsafe_pinned-v2-0-fc8617a74024@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 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 (2):
      rust: miscdevice: add additional data to MiscDeviceRegistration
      rust: miscdevice: adjust the rust_misc_device sample to use RegistrationData.

 rust/kernel/miscdevice.rs        |  78 ++++++++++++++++++-------
 samples/rust/rust_misc_device.rs | 120 ++++++++++++++++++++++++++++++++++++---
 2 files changed, 168 insertions(+), 30 deletions(-)
---
base-commit: 9de1a293c8ece00d226b21a35751ec178be2a9fa
change-id: 20250119-b4-rust_miscdevice_registrationdata-a11d88dcb284
prerequisite-change-id: 20250418-rust_unsafe_pinned-891dce27418d:v4
prerequisite-patch-id: 25a01c330b680122836e386fe455a203b8c1f0a4
prerequisite-patch-id: 988474c343f8f54d296c73f6719c35e6b1e671e1
prerequisite-patch-id: 1d97c71229c1cd9c177a6346a4c846006f05f918

Best regards,
-- 
Christian Schrefl <chrisi.schrefl@gmail.com>
Re: [PATCH v3 0/2] rust: miscdevice: add additional data to MiscDeviceRegistration
Posted by Alice Ryhl 7 months ago
On Sat, May 17, 2025 at 01:33:48PM +0200, Christian Schrefl wrote:
> 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 implements the changes and fixes the build of the sample
> without changing any functionality (this is currently the only in tree 
> user).
> 
> The second 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.
> 
> This series its based on my `UnsafePinned` series [0] and the 
> pin-init-next branch.
> 
> Some discussion on Zulip about the motivation and approach [1].
> Thanks a lot to everyone helping me out with this.
> 
> Link: https://lore.kernel.org/rust-for-linux/20250430-rust_unsafe_pinned-v2-0-fc8617a74024@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>

Reviewed-by: Alice Ryhl <aliceryhl@google.com>

Danilo's comment on the design of miscdevice is fair - it does not match
other types of drivers. But this series is an improvement over what is
here today.

Alice