rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v11 00/14] Refcounted interrupts, SpinLockIrq for rust
@ 2025-07-17 18:37 Lyude Paul
  2025-07-17 18:37 ` [PATCH v11 01/14] preempt: Introduce HARDIRQ_DISABLE_BITS Lyude Paul
                   ` (14 more replies)
  0 siblings, 15 replies; 16+ messages in thread
From: Lyude Paul @ 2025-07-17 18:37 UTC (permalink / raw)
  To: rust-for-linux, Thomas Gleixner, Boqun Feng, linux-kernel,
	Daniel Almeida
  Cc: Miguel Ojeda, Alex Gaynor, Gary Guo, Björn Roy Baron,
	Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross,
	Danilo Krummrich

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.

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 (8):
  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: 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


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

end of thread, other threads:[~2025-07-17 19:07 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-17 18:37 [PATCH v11 00/14] Refcounted interrupts, SpinLockIrq for rust Lyude Paul
2025-07-17 18:37 ` [PATCH v11 01/14] preempt: Introduce HARDIRQ_DISABLE_BITS Lyude Paul
2025-07-17 18:37 ` [PATCH v11 02/14] preempt: Introduce __preempt_count_{sub, add}_return() Lyude Paul
2025-07-17 18:37 ` [PATCH v11 03/14] irq & spin_lock: Add counted interrupt disabling/enabling Lyude Paul
2025-07-17 18:37 ` [PATCH v11 04/14] irq: Add KUnit test for refcounted interrupt enable/disable Lyude Paul
2025-07-17 18:37 ` [PATCH v11 05/14] rust: Introduce interrupt module Lyude Paul
2025-07-17 18:37 ` [PATCH v11 06/14] rust: helper: Add spin_{un,}lock_irq_{enable,disable}() helpers Lyude Paul
2025-07-17 18:37 ` [PATCH v11 07/14] rust: sync: Add SpinLockIrq Lyude Paul
2025-07-17 18:38 ` [PATCH v11 08/14] rust: sync: Introduce lock::Backend::Context Lyude Paul
2025-07-17 18:38 ` [PATCH v11 09/14] rust: sync: lock: Add `Backend::BackendInContext` Lyude Paul
2025-07-17 18:38 ` [PATCH v11 10/14] rust: sync: Add a lifetime parameter to lock::global::GlobalGuard Lyude Paul
2025-07-17 18:38 ` [PATCH v11 11/14] rust: sync: Expose lock::Backend Lyude Paul
2025-07-17 18:38 ` [PATCH v11 12/14] rust: sync: lock/global: Add Backend parameter to GlobalGuard Lyude Paul
2025-07-17 18:38 ` [PATCH v11 13/14] rust: sync: lock/global: Add BackendInContext support to GlobalLock Lyude Paul
2025-07-17 18:38 ` [PATCH v11 14/14] locking: Switch to _irq_{disable,enable}() variants in cleanup guards Lyude Paul
2025-07-17 19:07 ` [PATCH v11 00/14] Refcounted interrupts, SpinLockIrq for rust Lyude Paul

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).