From: "Onur Özkan" <work@onurozkan.dev>
To: rcu@vger.kernel.org, rust-for-linux@vger.kernel.org,
linux-kernel@vger.kernel.org
Cc: ojeda@kernel.org, boqun@kernel.org, gary@garyguo.net,
bjorn3_gh@protonmail.com, lossin@kernel.org,
a.hindborg@kernel.org, aliceryhl@google.com, tmgross@umich.edu,
dakr@kernel.org, peterz@infradead.org, fujita.tomonori@gmail.com,
tamird@kernel.org, jiangshanlai@gmail.com, paulmck@kernel.org,
josh@joshtriplett.org, rostedt@goodmis.org,
mathieu.desnoyers@efficios.com, "Onur Özkan" <work@onurozkan.dev>
Subject: [PATCH v6 0/4] rust: helpers: add SRCU helpers
Date: Wed, 27 May 2026 23:35:31 +0300 [thread overview]
Message-ID: <20260527203615.163688-1-work@onurozkan.dev> (raw)
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.
Changes since v5:
- Created separate srcu_readers_active() variants for "srcutiny.h" and
"srcutree.h".
v5: https://lore.kernel.org/all/20260527174120.510447-1-work@onurozkan.dev
Changes since v4:
- Exposed srcu_readers_active from C side and wired it to the Rust
helpers.
- Used srcu_readers_active() in SRCU drop and logged with pr_warn if
there are leaked guards during the drop.
v4: https://lore.kernel.org/all/20260525175706.124910-1-work@onurozkan.dev
Changes since v3 (which are for Sashiko notes [2]):
- Added rust helpers for srcu_barrier() and synchronize_srcu_expedited()
so the abstraction builds with CONFIG_TINY_SRCU, where these are
static inline functions.
- Added missing INVARIANT comment in Srcu::new() about why the type
invariants hold after successful initialization.
v3: https://lore.kernel.org/all/20260522054228.114814-1-work@onurozkan.dev
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@onurozkan.dev
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@onurozkan.dev
[1]: https://lore.kernel.org/all/20260416171728.205141-1-work@onurozkan.dev
[2]: https://sashiko.dev/#/patchset/20260522054228.114814-1-work@onurozkan.dev?part=2
Onur Özkan (4):
rust: helpers: add SRCU helpers
srcu: expose srcu_readers_active()
rust: sync: add SRCU abstraction
MAINTAINERS: add Rust SRCU files to SRCU entry
MAINTAINERS | 3 +
include/linux/srcutiny.h | 13 +++
include/linux/srcutree.h | 24 ++++++
kernel/rcu/srcutiny.c | 2 +-
kernel/rcu/srcutree.c | 25 ------
rust/helpers/helpers.c | 1 +
rust/helpers/srcu.c | 39 +++++++++
rust/kernel/sync.rs | 2 +
rust/kernel/sync/srcu.rs | 166 +++++++++++++++++++++++++++++++++++++++
9 files changed, 249 insertions(+), 26 deletions(-)
create mode 100644 rust/helpers/srcu.c
create mode 100644 rust/kernel/sync/srcu.rs
--
2.51.2
next reply other threads:[~2026-05-27 20:36 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-27 20:35 Onur Özkan [this message]
2026-05-27 20:35 ` [PATCH v6 1/4] rust: helpers: add SRCU helpers Onur Özkan
2026-05-27 20:35 ` [PATCH v6 2/4] srcu: expose srcu_readers_active() Onur Özkan
2026-05-27 20:35 ` [PATCH v6 3/4] rust: sync: add SRCU abstraction Onur Özkan
2026-05-27 20:35 ` [PATCH v6 4/4] MAINTAINERS: add Rust SRCU files to SRCU entry Onur Özkan
2026-05-27 22:31 ` Boqun Feng
2026-05-27 23:06 ` Paul E. McKenney
2026-05-27 23:22 ` Boqun Feng
2026-05-27 23:36 ` Paul E. McKenney
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=20260527203615.163688-1-work@onurozkan.dev \
--to=work@onurozkan.dev \
--cc=a.hindborg@kernel.org \
--cc=aliceryhl@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun@kernel.org \
--cc=dakr@kernel.org \
--cc=fujita.tomonori@gmail.com \
--cc=gary@garyguo.net \
--cc=jiangshanlai@gmail.com \
--cc=josh@joshtriplett.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=ojeda@kernel.org \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=rcu@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=tamird@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.