From: Boqun Feng <boqun.feng@gmail.com>
To: Andreas Hindborg <a.hindborg@kernel.org>
Cc: Lyude Paul <lyude@redhat.com>,
rust-for-linux@vger.kernel.org,
Thomas Gleixner <tglx@linutronix.de>,
linux-kernel@vger.kernel.org,
Daniel Almeida <daniel.almeida@collabora.com>,
Ingo Molnar <mingo@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Juri Lelli <juri.lelli@redhat.com>,
Vincent Guittot <vincent.guittot@linaro.org>,
Dietmar Eggemann <dietmar.eggemann@arm.com>,
Steven Rostedt <rostedt@goodmis.org>,
Ben Segall <bsegall@google.com>, Mel Gorman <mgorman@suse.de>,
Valentin Schneider <vschneid@redhat.com>
Subject: Re: [PATCH v13 03/17] preempt: Introduce HARDIRQ_DISABLE_BITS
Date: Fri, 31 Oct 2025 12:59:28 -0700 [thread overview]
Message-ID: <aQUVIMElF674xTao@tardis.local> (raw)
In-Reply-To: <87pla386cp.fsf@t14s.mail-host-address-is-not-set>
On Fri, Oct 31, 2025 at 03:59:34PM +0100, Andreas Hindborg wrote:
> Lyude Paul <lyude@redhat.com> writes:
>
> > From: Boqun Feng <boqun.feng@gmail.com>
> >
> > In order to support preempt_disable()-like interrupt disabling, that is,
> > using part of preempt_count() to track interrupt disabling nested level,
> > change the preempt_count() layout to contain 8-bit HARDIRQ_DISABLE
> > count.
> >
> > Note that HARDIRQ_BITS and NMI_BITS are reduced by 1 because of this,
> > and it changes the maximum of their (hardirq and nmi) nesting level.
> >
> > Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
> > Signed-off-by: Lyude Paul <lyude@redhat.com>
> > ---
> > include/linux/preempt.h | 11 +++++++++--
> > 1 file changed, 9 insertions(+), 2 deletions(-)
> >
> > diff --git a/include/linux/preempt.h b/include/linux/preempt.h
> > index 9580b972e1545..bbd2e51363d8f 100644
> > --- a/include/linux/preempt.h
> > +++ b/include/linux/preempt.h
> > @@ -17,6 +17,8 @@
> > *
> > * - bits 0-7 are the preemption count (max preemption depth: 256)
> > * - bits 8-15 are the softirq count (max # of softirqs: 256)
> > + * - bits 16-23 are the hardirq disable count (max # of hardirq disable: 256)
> > + * - bits 24-27 are the hardirq count (max # of hardirqs: 16)
> > * - bit 28 is the NMI flag (no nesting count, tracked separately)
> > *
> > * The hardirq count could in theory be the same as the number of
> > @@ -30,29 +32,34 @@
> > *
> > * PREEMPT_MASK: 0x000000ff
> > * SOFTIRQ_MASK: 0x0000ff00
> > - * HARDIRQ_MASK: 0x000f0000
> > + * HARDIRQ_DISABLE_MASK: 0x00ff0000
> > + * HARDIRQ_MASK: 0x0f000000
> > * NMI_MASK: 0x10000000
> > * PREEMPT_NEED_RESCHED: 0x80000000
> > */
> > #define PREEMPT_BITS 8
> > #define SOFTIRQ_BITS 8
> > +#define HARDIRQ_DISABLE_BITS 8
> > #define HARDIRQ_BITS 4
> > #define NMI_BITS 1
> >
> > #define PREEMPT_SHIFT 0
> > #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS)
> > -#define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS)
> > +#define HARDIRQ_DISABLE_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS)
> > +#define HARDIRQ_SHIFT (HARDIRQ_DISABLE_SHIFT + HARDIRQ_DISABLE_BITS)
> > #define NMI_SHIFT (HARDIRQ_SHIFT + HARDIRQ_BITS)
> >
> > #define __IRQ_MASK(x) ((1UL << (x))-1)
> >
> > #define PREEMPT_MASK (__IRQ_MASK(PREEMPT_BITS) << PREEMPT_SHIFT)
> > #define SOFTIRQ_MASK (__IRQ_MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT)
> > +#define HARDIRQ_DISABLE_MASK (__IRQ_MASK(SOFTIRQ_BITS) << HARDIRQ_DISABLE_SHIFT)
>
> Should this be HARDIRQ_DISABLE_BITS rather than SOFTIRQ_BITS ?
>
Good catch! Yes, it' should be HARDIRQ_DISABLE_BITS. Thank you!
Regards,
Boqun
>
> Best regards,
> Andreas Hindborg
>
>
next prev parent reply other threads:[~2025-10-31 19:59 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-13 15:48 [PATCH v13 00/17] Refcounted interrupts, SpinLockIrq for rust Lyude Paul
2025-10-13 15:48 ` [PATCH v13 01/17] preempt: Track NMI nesting to separate per-CPU counter Lyude Paul
2025-10-13 16:19 ` Lyude Paul
2025-10-13 16:32 ` Miguel Ojeda
2025-10-13 20:00 ` Peter Zijlstra
2025-10-13 21:27 ` Joel Fernandes
2025-10-14 8:25 ` Peter Zijlstra
2025-10-14 17:59 ` Joel Fernandes
2025-10-14 19:37 ` Peter Zijlstra
2025-10-14 10:48 ` Peter Zijlstra
2025-10-14 17:55 ` Joel Fernandes
2025-10-14 19:43 ` Peter Zijlstra
2025-10-14 22:05 ` Joel Fernandes
2025-10-20 20:44 ` Joel Fernandes
2025-10-30 22:56 ` Joel Fernandes
2025-10-13 15:48 ` [PATCH v13 02/17] preempt: Reduce NMI_MASK to single bit and restore HARDIRQ_BITS Lyude Paul
2025-11-04 12:15 ` Andreas Hindborg
2025-10-13 15:48 ` [PATCH v13 03/17] preempt: Introduce HARDIRQ_DISABLE_BITS Lyude Paul
2025-10-31 14:59 ` Andreas Hindborg
2025-10-31 19:59 ` Boqun Feng [this message]
2025-10-13 15:48 ` [PATCH v13 04/17] preempt: Introduce __preempt_count_{sub, add}_return() Lyude Paul
2025-10-13 15:48 ` Lyude Paul
2025-11-04 12:30 ` Andreas Hindborg
2025-11-04 12:30 ` Andreas Hindborg
2025-10-13 15:48 ` [PATCH v13 05/17] irq & spin_lock: Add counted interrupt disabling/enabling Lyude Paul
2025-10-14 4:45 ` kernel test robot
2025-10-15 20:54 ` Bart Van Assche
2025-10-16 8:15 ` Peter Zijlstra
2025-10-17 6:44 ` Boqun Feng
2025-10-16 21:24 ` David Laight
2025-10-17 6:48 ` Boqun Feng
2025-11-04 12:45 ` Andreas Hindborg
2025-11-19 21:47 ` Lyude Paul
2025-10-13 15:48 ` [PATCH v13 06/17] irq: Add KUnit test for refcounted interrupt enable/disable Lyude Paul
2025-10-13 15:48 ` [PATCH v13 07/17] rust: Introduce interrupt module Lyude Paul
2025-11-04 12:55 ` Andreas Hindborg
2025-10-13 15:48 ` [PATCH v13 08/17] rust: helper: Add spin_{un,}lock_irq_{enable,disable}() helpers Lyude Paul
2025-11-04 12:56 ` Andreas Hindborg
2025-10-13 15:48 ` [PATCH v13 09/17] rust: sync: Add SpinLockIrq Lyude Paul
2025-11-04 13:09 ` Andreas Hindborg
2025-10-13 15:48 ` [PATCH v13 10/17] rust: sync: Introduce lock::Backend::Context Lyude Paul
2025-10-13 15:48 ` [PATCH v13 11/17] rust: sync: lock: Add `Backend::BackendInContext` Lyude Paul
2025-11-05 12:45 ` Andreas Hindborg
2025-10-13 15:48 ` [PATCH v13 12/17] rust: sync: lock/global: Rename B to G in trait bounds Lyude Paul
2025-10-13 15:48 ` [PATCH v13 13/17] rust: sync: Add a lifetime parameter to lock::global::GlobalGuard Lyude Paul
2025-10-13 15:48 ` [PATCH v13 14/17] rust: sync: Expose lock::Backend Lyude Paul
2025-10-13 15:48 ` [PATCH v13 15/17] rust: sync: lock/global: Add Backend parameter to GlobalGuard Lyude Paul
2025-10-13 15:48 ` [PATCH v13 16/17] rust: sync: lock/global: Add BackendInContext support to GlobalLock Lyude Paul
2025-10-13 15:48 ` [PATCH v13 17/17] 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=aQUVIMElF674xTao@tardis.local \
--to=boqun.feng@gmail.com \
--cc=a.hindborg@kernel.org \
--cc=bsegall@google.com \
--cc=daniel.almeida@collabora.com \
--cc=dietmar.eggemann@arm.com \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lyude@redhat.com \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
/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.