From: Lyude Paul <lyude@redhat.com>
To: rust-for-linux@vger.kernel.org,
Thomas Gleixner <tglx@linutronix.de>,
Boqun Feng <boqun.feng@gmail.com>,
linux-kernel@vger.kernel.org,
Daniel Almeida <daniel.almeida@collabora.com>
Cc: "Miguel Ojeda" <ojeda@kernel.org>,
"Alex Gaynor" <alex.gaynor@gmail.com>,
"Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"Trevor Gross" <tmgross@umich.edu>,
"Danilo Krummrich" <dakr@kernel.org>
Subject: [PATCH v12 00/15] Refcounted interrupts, SpinLockIrq for rust
Date: Thu, 17 Jul 2025 15:15:39 -0400 [thread overview]
Message-ID: <20250717191719.2076270-1-lyude@redhat.com> (raw)
This is the latest patch series for adding rust bindings for controlling
local processor interrupts, adding support for spinlocks in rust that
are acquired with local processor interrupts disabled, and implementing
local interrupt controls through refcounting in the kernel.
The previous version of this patch series can be found here:
https://lkml.org/lkml/2025/5/27/1219
This patch series applies on top of the rust-next branch.
(The main difference from V11 is that I mistakenly squashed a patch that
shouldn't have been squashed in V11, so it has been unsquashed in V12.
Nothing else has changed since V11)
Boqun Feng (6):
preempt: Introduce HARDIRQ_DISABLE_BITS
preempt: Introduce __preempt_count_{sub, add}_return()
irq & spin_lock: Add counted interrupt disabling/enabling
rust: helper: Add spin_{un,}lock_irq_{enable,disable}() helpers
rust: sync: lock: Add `Backend::BackendInContext`
locking: Switch to _irq_{disable,enable}() variants in cleanup guards
Lyude Paul (9):
irq: Add KUnit test for refcounted interrupt enable/disable
rust: Introduce interrupt module
rust: sync: Add SpinLockIrq
rust: sync: Introduce lock::Backend::Context
rust: sync: lock/global: Rename B to G in trait bounds
rust: sync: Add a lifetime parameter to lock::global::GlobalGuard
rust: sync: Expose lock::Backend
rust: sync: lock/global: Add Backend parameter to GlobalGuard
rust: sync: lock/global: Add BackendInContext support to GlobalLock
arch/arm64/include/asm/preempt.h | 18 ++
arch/s390/include/asm/preempt.h | 10 +
arch/x86/include/asm/preempt.h | 10 +
include/asm-generic/preempt.h | 14 ++
include/linux/irqflags_types.h | 6 +
include/linux/preempt.h | 20 +-
include/linux/spinlock.h | 88 +++++++--
include/linux/spinlock_api_smp.h | 27 +++
include/linux/spinlock_api_up.h | 8 +
include/linux/spinlock_rt.h | 15 ++
kernel/irq/Makefile | 1 +
kernel/irq/refcount_interrupt_test.c | 108 +++++++++++
kernel/locking/spinlock.c | 29 +++
kernel/softirq.c | 3 +
rust/helpers/helpers.c | 1 +
rust/helpers/interrupt.c | 18 ++
rust/helpers/spinlock.c | 15 ++
rust/helpers/sync.c | 5 +
rust/kernel/interrupt.rs | 86 +++++++++
rust/kernel/lib.rs | 1 +
rust/kernel/sync.rs | 5 +-
rust/kernel/sync/lock.rs | 69 ++++++-
rust/kernel/sync/lock/global.rs | 91 ++++++---
rust/kernel/sync/lock/mutex.rs | 2 +
rust/kernel/sync/lock/spinlock.rs | 272 +++++++++++++++++++++++++++
25 files changed, 871 insertions(+), 51 deletions(-)
create mode 100644 kernel/irq/refcount_interrupt_test.c
create mode 100644 rust/helpers/interrupt.c
create mode 100644 rust/kernel/interrupt.rs
base-commit: 23b128bba76776541dc09efaf3acf6242917e1f0
--
2.50.0
next reply other threads:[~2025-07-17 19:17 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-17 19:15 Lyude Paul [this message]
2025-07-17 19:15 ` [PATCH v12 01/15] preempt: Introduce HARDIRQ_DISABLE_BITS Lyude Paul
2025-07-17 19:15 ` [PATCH v12 02/15] preempt: Introduce __preempt_count_{sub, add}_return() Lyude Paul
2025-07-17 19:15 ` [PATCH v12 03/15] irq & spin_lock: Add counted interrupt disabling/enabling Lyude Paul
2025-07-17 19:15 ` [PATCH v12 04/15] irq: Add KUnit test for refcounted interrupt enable/disable Lyude Paul
2025-07-17 19:15 ` [PATCH v12 05/15] rust: Introduce interrupt module Lyude Paul
2025-07-17 19:15 ` [PATCH v12 06/15] rust: helper: Add spin_{un,}lock_irq_{enable,disable}() helpers Lyude Paul
2025-07-17 19:15 ` [PATCH v12 07/15] rust: sync: Add SpinLockIrq Lyude Paul
2025-07-17 19:15 ` [PATCH v12 08/15] rust: sync: Introduce lock::Backend::Context Lyude Paul
2025-07-17 19:15 ` [PATCH v12 09/15] rust: sync: lock: Add `Backend::BackendInContext` Lyude Paul
2025-07-17 19:15 ` [PATCH v12 10/15] rust: sync: lock/global: Rename B to G in trait bounds Lyude Paul
2025-07-17 19:15 ` [PATCH v12 11/15] rust: sync: Add a lifetime parameter to lock::global::GlobalGuard Lyude Paul
2025-07-17 19:15 ` [PATCH v12 12/15] rust: sync: Expose lock::Backend Lyude Paul
2025-07-17 19:15 ` [PATCH v12 13/15] rust: sync: lock/global: Add Backend parameter to GlobalGuard Lyude Paul
2025-07-17 19:15 ` [PATCH v12 14/15] rust: sync: lock/global: Add BackendInContext support to GlobalLock Lyude Paul
2025-07-17 19:15 ` [PATCH v12 15/15] locking: Switch to _irq_{disable,enable}() variants in cleanup guards Lyude Paul
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=20250717191719.2076270-1-lyude@redhat.com \
--to=lyude@redhat.com \
--cc=a.hindborg@kernel.org \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=dakr@kernel.org \
--cc=daniel.almeida@collabora.com \
--cc=gary@garyguo.net \
--cc=linux-kernel@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=tglx@linutronix.de \
--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 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).