| From: |
| Onur Özkan <work-AT-onurozkan.dev> |
| To: |
| rcu-AT-vger.kernel.org, rust-for-linux-AT-vger.kernel.org, linux-kernel-AT-vger.kernel.org |
| Subject: |
| [PATCH v3 0/3] rust: add SRCU abstraction |
| Date: |
| Fri, 22 May 2026 08:41:49 +0300 |
| Message-ID: |
| <20260522054228.114814-1-work@onurozkan.dev> |
| Cc: |
| ojeda-AT-kernel.org, boqun-AT-kernel.org, gary-AT-garyguo.net, bjorn3_gh-AT-protonmail.com, lossin-AT-kernel.org, a.hindborg-AT-kernel.org, aliceryhl-AT-google.com, tmgross-AT-umich.edu, dakr-AT-kernel.org, peterz-AT-infradead.org, fujita.tomonori-AT-gmail.com, tamird-AT-kernel.org, jiangshanlai-AT-gmail.com, paulmck-AT-kernel.org, josh-AT-joshtriplett.org, rostedt-AT-goodmis.org, mathieu.desnoyers-AT-efficios.com, Onur Özkan <work-AT-onurozkan.dev> |
| Archive-link: |
| Article |
The immediate motivation is the Tyr reset infrastructure [1] which needs
to serialize reset sensitive hardware access against reset and teardown
paths. That reset series started to require many independent dependencies
so this SRCU support is split out as a standalone Rust API to keep the
reset series focused on the reset logic and easier to review, rebase and
land.
[1]: https://lore.kernel.org/all/20260416171728.205141-1-work@...
Changes since v2:
- Removed closure-based API.
- Added #[doc(hidden)] on new_srcu macro.
- Added #[must_use..] on srcu::Guard.
- Improved the clean-up path (PinnedDrop implementation) which
eventually made read_lock safe with leaked guards.
v2: https://lore.kernel.org/all/20260502162833.34334-1-work@o...
Changes since v1:
- Made the owned SRCU read-side guard API unsafe and added a safe closure
based helper for callers that do not need to keep the guard. This is to
avoid UB on the C side cleanup_srcu_struct where the SRCU struct is freed
while there are still active guards, which can happen if the caller leaks
the guard e.g., with mem::forget().
- Improved doc comments.
v1: https://lore.kernel.org/all/20260428103437.156236-1-work@...
Onur Özkan (3):
rust: helpers: add SRCU helpers
rust: sync: add SRCU abstraction
MAINTAINERS: add Rust SRCU files to SRCU entry
MAINTAINERS | 3 +
rust/helpers/helpers.c | 1 +
rust/helpers/srcu.c | 24 ++++++
rust/kernel/sync.rs | 2 +
rust/kernel/sync/srcu.rs | 156 +++++++++++++++++++++++++++++++++++++++
5 files changed, 186 insertions(+)
create mode 100644 rust/helpers/srcu.c
create mode 100644 rust/kernel/sync/srcu.rs
--
2.51.2