rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] rust: add `UnsafePinned` type
@ 2025-04-30  8:36 Christian Schrefl
  2025-04-30  8:36 ` [PATCH v2 1/3] rust: add UnsafePinned type Christian Schrefl
                   ` (3 more replies)
  0 siblings, 4 replies; 27+ messages in thread
From: Christian Schrefl @ 2025-04-30  8:36 UTC (permalink / raw)
  To: Sky, Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, Danilo Krummrich, Gerald Wisböck
  Cc: linux-kernel, rust-for-linux, Christian Schrefl

This version now only has the kernel implementation without the
config flag for using the upstream version. Additionally now
commits for using `UnsafePinned` in `Opaque` were added.

Checkpatch warns about `rust/kernel/types/unsafe_pinned.rs`
missing a MAINTAINERS entry, I don't think that is necessary since it
will be part of the `RUST` entry anyways (from what I understand).

Once this has had some time to review I'll rebase my `miscdevice`
patches [0] on top of this.

This patchset depends on the `pin-init` sync for v6.16 [1].

Link: https://lore.kernel.org/rust-for-linux/20250131-b4-rust_miscdevice_registrationdata-v2-0-588f1e6cfabe@gmail.com/ [0]
Link: https://lore.kernel.org/rust-for-linux/20250421221728.528089-1-benno.lossin@proton.me [1]

Signed-off-by: Christian Schrefl <chrisi.schrefl@gmail.com>
---
Changes in v2:
- Expanded `UnsafePinned` documentation to describe differences
    with upstream rust implementation.
- Removed config flag for using upstream `UnsafePinned` type.
- Add patch implementing `Wrapper` for `Opaque`
- Add patch for using `UnsafePinned` internally in `Opaque`
- Link to v1: https://lore.kernel.org/r/20250418-rust_unsafe_pinned-v1-1-c4c7558399f8@gmail.com

---
Christian Schrefl (3):
      rust: add UnsafePinned type
      rust: implement `Wrapper<T>` for `Opaque<T>`
      rust: use `UnsafePinned` in the implementation of `Opaque`

 init/Kconfig                       |   3 +
 rust/kernel/lib.rs                 |   1 +
 rust/kernel/revocable.rs           |   2 +
 rust/kernel/types.rs               |  42 +++++++-------
 rust/kernel/types/unsafe_pinned.rs | 115 +++++++++++++++++++++++++++++++++++++
 5 files changed, 143 insertions(+), 20 deletions(-)
---
base-commit: 39051adb070432b283e6c11b2b24937281b9f97f
change-id: 20250418-rust_unsafe_pinned-891dce27418d
prerequisite-message-id: <20250421221728.528089-1-benno.lossin@proton.me>
prerequisite-patch-id: dcf79c049766e66eda0377b225bb441edefcdfe4
prerequisite-patch-id: 0a078ba4989327e90317f882fa42a387bb7594a0
prerequisite-patch-id: d5182c6fc3e3b2f255001334b5da9d5c5b7b29ed
prerequisite-patch-id: 016806607094f0f403000ec455db9ea79e538bf6
prerequisite-patch-id: 368bea523f3b3e14f1dd599343475e0b166fad37
prerequisite-patch-id: 526054a8a8871d1dd5f376b7ab6aa5542b481b70
prerequisite-patch-id: a691b331bc3200287413e6423b8cc3e9cbb177e0
prerequisite-patch-id: 5afb38f41b18408fef4d3abc5750c09a67b2d34e

Best regards,
-- 
Christian Schrefl <chrisi.schrefl@gmail.com>


^ permalink raw reply	[flat|nested] 27+ messages in thread
* [PATCH v2 0/3] rust: miscdevice: Add additional data to MiscDeviceRegistration
@ 2025-01-31 15:08 Christian Schrefl
  2025-01-31 15:08 ` [PATCH v2 1/3] rust: add UnsafePinned type Christian Schrefl
  0 siblings, 1 reply; 27+ messages in thread
From: Christian Schrefl @ 2025-01-31 15:08 UTC (permalink / raw)
  To: Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, Arnd Bergmann, Greg Kroah-Hartman, Lee Jones,
	Daniel Almeida, Danilo Krummrich
  Cc: rust-for-linux, linux-kernel, Christian Schrefl

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 adds the UnsafePinned (Previously Aliased) type.

The second patch implements the changes and fixes the build of the sample.

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
(Thanks a lot to everyone helping me out with this):
Link: https://rust-for-linux.zulipchat.com/#narrow/channel/288089-General/topic/Passing.20a.20DevRes.20to.20a.20miscdev/near/494553814

Signed-off-by: Christian Schrefl <chrisi.schrefl@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 befofre `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: add UnsafePinned type
      rust: miscdevice: Add additional data to MiscDeviceRegistration
      rust: miscdevice: adjust the rust_misc_device sample to use RegistrationData.

 rust/kernel/miscdevice.rs        |  75 ++++++++++++++++++-------
 rust/kernel/types.rs             |  57 +++++++++++++++++++
 samples/rust/rust_misc_device.rs | 117 ++++++++++++++++++++++++++++++++++++---
 3 files changed, 221 insertions(+), 28 deletions(-)
---
base-commit: b4b0881156fb8209bf5ef6cb63211bb0ad6e1a6b
change-id: 20250119-b4-rust_miscdevice_registrationdata-a11d88dcb284

Best regards,
-- 
Christian Schrefl <chrisi.schrefl@gmail.com>


^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2025-05-02  9:07 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-30  8:36 [PATCH v2 0/3] rust: add `UnsafePinned` type Christian Schrefl
2025-04-30  8:36 ` [PATCH v2 1/3] rust: add UnsafePinned type Christian Schrefl
2025-04-30  9:16   ` Alice Ryhl
2025-04-30  9:19   ` Alice Ryhl
2025-04-30 16:45     ` Christian Schrefl
2025-04-30  9:45   ` Benno Lossin
2025-04-30 17:30     ` Christian Schrefl
2025-05-01 18:51       ` Benno Lossin
2025-05-01 19:11         ` Christian Schrefl
2025-05-01 22:51           ` Benno Lossin
2025-05-02  0:08             ` Christian Schrefl
2025-05-02  8:35               ` Alice Ryhl
2025-05-02  9:00               ` Ralf Jung
2025-05-01 17:12   ` Christian Schrefl
2025-05-01 18:55     ` Benno Lossin
2025-05-02  8:57       ` Ralf Jung
2025-04-30  8:36 ` [PATCH v2 2/3] rust: implement `Wrapper<T>` for `Opaque<T>` Christian Schrefl
2025-04-30  9:20   ` Alice Ryhl
2025-04-30  9:32   ` Benno Lossin
2025-04-30  8:36 ` [PATCH v2 3/3] rust: use `UnsafePinned` in the implementation of `Opaque` Christian Schrefl
2025-04-30  9:18   ` Alice Ryhl
2025-04-30  9:35   ` Benno Lossin
2025-04-30 16:44   ` Boqun Feng
2025-04-30 17:07     ` Christian Schrefl
2025-04-30  9:46 ` [PATCH v2 0/3] rust: add `UnsafePinned` type Benno Lossin
  -- strict thread matches above, loose matches on Subject: below --
2025-01-31 15:08 [PATCH v2 0/3] rust: miscdevice: Add additional data to MiscDeviceRegistration Christian Schrefl
2025-01-31 15:08 ` [PATCH v2 1/3] rust: add UnsafePinned type Christian Schrefl
2025-03-26 20:26   ` Benno Lossin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).