All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 00/18] Refcounted interrupt disable and SpinLockIrq for Rust
@ 2026-08-07  7:01 Boqun Feng
  2026-08-07  7:01 ` [PATCH v5 01/18] preempt: Track NMI nesting to separate per-CPU counter Boqun Feng
                   ` (18 more replies)
  0 siblings, 19 replies; 34+ messages in thread
From: Boqun Feng @ 2026-08-07  7:01 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: Ingo Molnar, Will Deacon, Boqun Feng, Waiman Long, Gary Guo,
	Alice Ryhl, Lyude Paul, Daniel Almeida, Onur Özkan,
	Miguel Ojeda, Danilo Krummrich, linux-kernel, rust-for-linux,
	Shrikanth Hegde, Madhavan Srinivasan, Christophe Leroy (CS GROUP)

Hi Peter & Ingo,

Please take a look at this updated series for SpinLockIrq.

Changes since v4:

* Addressed SoB issues spotted by Peter.
* Added underflow/overflow checking for interrupt disabling counter as
  suggested by Shrikanth.
* Added a max nesting level per suggestion from Shrikanth.
* Document/comment updates.

v4: https://lore.kernel.org/lkml/20260804161447.84806-1-boqun@kernel.org/

Regards,
Boqun

Boqun Feng (10):
  preempt: Introduce HARDIRQ_DISABLE_BITS
  preempt: Introduce __preempt_count_{sub,add}_return()
  irq & spin_lock: Add counted interrupt disabling/enabling
  irq: Add max local_interrupt_disable() nesting level kunit test case
  locking: Switch to _irq_{disable,enable}() variants in cleanup guards
  sched: Remove the unused preempt_offset parameter of __cant_sleep()
  sched: Avoid signed comparison of preempt_count() in __cant_migrate()
  preempt: Introduce HAS_SEPARATE_PREEMPT_RESCHED_BITS
  arm64: sched/preempt: Enable HAS_SEPARATE_PREEMPT_RESCHED_BITS
  rust: helper: Add spin_{un,}lock_irq_{enable,disable}() helpers

Heiko Carstens (1):
  s390/preempt: Enable HAS_SEPARATE_PREEMPT_RESCHED_BITS

Joel Fernandes (1):
  preempt: Track NMI nesting to separate per-CPU counter

Lyude Paul (6):
  openrisc: Include <linux/cpumask.h> in smp.h
  irq: Add KUnit test for refcounted interrupt enable/disable
  rust: Introduce interrupt module
  rust: sync: Use super::* in spinlock.rs
  rust: sync: Add SpinLockIrq
  rust: sync: Introduce SpinLockIrq::lock_with() and friends

 arch/arm64/Kconfig                            |   1 +
 arch/arm64/include/asm/preempt.h              |  20 ++
 arch/openrisc/include/asm/smp.h               |   2 +
 arch/s390/Kconfig                             |   1 +
 arch/s390/include/asm/lowcore.h               |  13 +-
 arch/s390/include/asm/preempt.h               |  51 +--
 arch/x86/Kconfig                              |   1 +
 arch/x86/include/asm/preempt.h                |  61 +++-
 arch/x86/kernel/cpu/common.c                  |   2 +-
 include/asm-generic/preempt.h                 |  14 +
 include/linux/hardirq.h                       |  40 ++-
 include/linux/interrupt_rc.h                  |  95 +++++
 include/linux/kernel.h                        |   4 +-
 include/linux/preempt.h                       |  44 ++-
 include/linux/spinlock.h                      |  49 ++-
 include/linux/spinlock_api_smp.h              |  41 +++
 include/linux/spinlock_api_up.h               |  15 +
 include/linux/spinlock_rt.h                   |  18 +
 kernel/Kconfig.preempt                        |   4 +
 kernel/irq/Makefile                           |   1 +
 kernel/irq/refcount_interrupt_test.c          | 131 +++++++
 kernel/locking/spinlock.c                     |  31 ++
 kernel/sched/core.c                           |  18 +-
 kernel/sched/fair.c                           |  12 +-
 kernel/softirq.c                              |  36 +-
 rust/helpers/helpers.c                        |   1 +
 rust/helpers/interrupt.c                      |  18 +
 rust/helpers/spinlock.c                       |  15 +
 rust/helpers/sync.c                           |   5 +
 rust/kernel/interrupt.rs                      |  89 +++++
 rust/kernel/lib.rs                            |   1 +
 rust/kernel/sync.rs                           |   9 +-
 rust/kernel/sync/lock/global.rs               |   3 +
 rust/kernel/sync/lock/spinlock.rs             | 329 +++++++++++++++++-
 .../testing/selftests/bpf/bpf_experimental.h  |   7 +-
 35 files changed, 1092 insertions(+), 90 deletions(-)
 create mode 100644 include/linux/interrupt_rc.h
 create mode 100644 kernel/irq/refcount_interrupt_test.c
 create mode 100644 rust/helpers/interrupt.c
 create mode 100644 rust/kernel/interrupt.rs

-- 
2.50.1 (Apple Git-155)


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

end of thread, other threads:[~2026-08-11 10:10 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-07  7:01 [PATCH v5 00/18] Refcounted interrupt disable and SpinLockIrq for Rust Boqun Feng
2026-08-07  7:01 ` [PATCH v5 01/18] preempt: Track NMI nesting to separate per-CPU counter Boqun Feng
2026-08-07  7:01 ` [PATCH v5 02/18] preempt: Introduce HARDIRQ_DISABLE_BITS Boqun Feng
2026-08-07  7:02 ` [PATCH v5 03/18] preempt: Introduce __preempt_count_{sub,add}_return() Boqun Feng
2026-08-07  7:02 ` [PATCH v5 04/18] openrisc: Include <linux/cpumask.h> in smp.h Boqun Feng
2026-08-07  7:02 ` [PATCH v5 05/18] irq & spin_lock: Add counted interrupt disabling/enabling Boqun Feng
2026-08-07  7:02 ` [PATCH v5 06/18] irq: Add KUnit test for refcounted interrupt enable/disable Boqun Feng
2026-08-07  7:02 ` [PATCH v5 07/18] irq: Add max local_interrupt_disable() nesting level kunit test case Boqun Feng
2026-08-07  7:02 ` [PATCH v5 08/18] locking: Switch to _irq_{disable,enable}() variants in cleanup guards Boqun Feng
2026-08-07  7:02 ` [PATCH v5 09/18] sched: Remove the unused preempt_offset parameter of __cant_sleep() Boqun Feng
2026-08-07  7:02 ` [PATCH v5 10/18] sched: Avoid signed comparison of preempt_count() in __cant_migrate() Boqun Feng
2026-08-07  7:02 ` [PATCH v5 11/18] preempt: Introduce HAS_SEPARATE_PREEMPT_RESCHED_BITS Boqun Feng
2026-08-07  7:02 ` [PATCH v5 12/18] arm64: sched/preempt: Enable HAS_SEPARATE_PREEMPT_RESCHED_BITS Boqun Feng
2026-08-07  7:02 ` [PATCH v5 13/18] s390/preempt: " Boqun Feng
2026-08-07  7:02 ` [PATCH v5 14/18] rust: Introduce interrupt module Boqun Feng
2026-08-10  8:57   ` Peter Zijlstra
2026-08-10 13:28     ` Boqun Feng
2026-08-07  7:02 ` [PATCH v5 15/18] rust: helper: Add spin_{un,}lock_irq_{enable,disable}() helpers Boqun Feng
2026-08-07  7:02 ` [PATCH v5 16/18] rust: sync: Use super::* in spinlock.rs Boqun Feng
2026-08-07  7:02 ` [PATCH v5 17/18] rust: sync: Add SpinLockIrq Boqun Feng
2026-08-10  9:02   ` Peter Zijlstra
2026-08-10 13:21     ` Boqun Feng
2026-08-07  7:02 ` [PATCH v5 18/18] rust: sync: Introduce SpinLockIrq::lock_with() and friends Boqun Feng
2026-08-10  8:52 ` [PATCH v5 00/18] Refcounted interrupt disable and SpinLockIrq for Rust Peter Zijlstra
2026-08-10  8:53   ` Peter Zijlstra
2026-08-10  9:30     ` Peter Zijlstra
2026-08-10 10:38       ` Gary Guo
2026-08-10 10:49         ` Peter Zijlstra
2026-08-11  4:17   ` [PATCH 0/4] Improvements on SpinLockIrq patch series Boqun Feng
2026-08-11  4:17     ` [PATCH 1/4] irq: Add {over,under}flow detection for local_interrupt_{enable,disable} Boqun Feng
2026-08-11  4:17     ` [PATCH 2/4] selftests/bpf: Use the new NMI_BITS definition Boqun Feng
2026-08-11  4:17     ` [PATCH 3/4] irq: Explain better on NMI_MASK overflow condition Boqun Feng
2026-08-11  4:17     ` [PATCH 4/4] irq: Add max local_interrupt_disable() nesting level kunit test case Boqun Feng
2026-08-11 10:09     ` [PATCH 0/4] Improvements on SpinLockIrq patch series Shrikanth Hegde

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.