public inbox for rust-for-linux@vger.kernel.org
 help / color / mirror / Atom feed
From: Boqun Feng <boqun@kernel.org>
To: Joel Fernandes <joelagnelf@nvidia.com>
Cc: "Peter Zijlstra" <peterz@infradead.org>,
	"Lyude Paul" <lyude@redhat.com>,
	rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Boqun Feng" <boqun.feng@gmail.com>,
	"Daniel Almeida" <daniel.almeida@collabora.com>,
	"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>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Ingo Molnar" <mingo@redhat.com>, "Will Deacon" <will@kernel.org>,
	"Waiman Long" <longman@redhat.com>
Subject: Re: [PATCH v17 02/16] preempt: Track NMI nesting to separate per-CPU counter
Date: Thu, 5 Feb 2026 17:14:10 -0800	[thread overview]
Message-ID: <aYVAYq1oM78glL7w@tardis.local> (raw)
In-Reply-To: <44507281-87bc-4548-b542-addf3477921c@nvidia.com>

On Thu, Feb 05, 2026 at 07:50:03PM -0500, Joel Fernandes wrote:
> 
> 
> On 2/5/2026 5:17 PM, Joel Fernandes wrote:
> > 
> > 
> > On 2/5/2026 4:40 PM, Boqun Feng wrote:
> >> On Wed, Feb 04, 2026 at 12:12:34PM +0100, Peter Zijlstra wrote:
> >>> On Tue, Feb 03, 2026 at 01:15:21PM +0100, Peter Zijlstra wrote:
> >>>> But I'm really somewhat sad that 64bit can't do better than this.
> >>>
> >>> Here, the below builds and boots (albeit with warnings because printf
> >>> format crap sucks).
> >>>
> >>
> >> Thanks! I will drop patch #1 and #2 and use this one (with a commit log
> >> and some more tests), given it's based on the work of Joel, Lyude and
> >> me, would the following tags make sense to all of you?
> >>> Co-developed-by: Joel Fernandes <joelagnelf@nvidia.com>
> > 
> > I don't know, I am not a big fan of the alternative patch because it adds a
> > per-cpu counter anyway if !CONFIG_PREEMPT_LONG [1]. And it is also a much bigger
> > patch than the one I wrote. Purely from an objective perspective, I would still
> > want to keep my original patch because it is simple. What is really the
> > objection to it?
> > 

PREEMPT_LONG is an architecture-specific way to improve the performance
IMO. Just to be clear, do you object it at all, or do you object
combining it with your original patch? If it's the latter, I could make
another patch as a follow to enable PREEMPT_LONG.

> > [1]
> > +#ifndef CONFIG_PREEMPT_LONG
> > +/*
> > + * Any 32bit architecture that still cares about performance should
> > + * probably ensure this is near preempt_count.
> > + */
> > +DEFINE_PER_CPU(unsigned int, nmi_nesting);
> > +#endif
> > 
> If the objection to my patch is modifying a per-cpu counter, isn't NMI a slow
> path? If we agree, then keeping things simple is better IMO unless we have data

I guess Peter was trying to say it's not a slow path if you consider
perf event interrupts on x86? [1]

> showing that it is an issue. This is code is already quite convoluted, let us
> not convolute it more with 32-bit specific things.
> 
> I had tried moving it to DEFINE_PER_CPU_CACHE_HOT, but ISTR that did not work
> out (I think something about a limit to how many things could be moved to cache
> hot).
> 
> Happy to revise patch again with any other suggestions,
> 

[1]: https://lore.kernel.org/rust-for-linux/20260204130027.GE3016024@noisy.programming.kicks-ass.net/

Regards,
Boqun

> --
> Joel Fernandes
> 

  reply	other threads:[~2026-02-06  1:14 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-21 22:39 [PATCH v17 00/16] Refcounted interrupts, SpinLockIrq for rust Lyude Paul
2026-01-21 22:39 ` [PATCH v17 01/16] preempt: Introduce HARDIRQ_DISABLE_BITS Lyude Paul
2026-01-21 22:39 ` [PATCH v17 02/16] preempt: Track NMI nesting to separate per-CPU counter Lyude Paul
2026-02-03 11:44   ` Peter Zijlstra
2026-02-06  1:22     ` Joel Fernandes
2026-02-03 12:15   ` Peter Zijlstra
2026-02-04 11:12     ` Peter Zijlstra
2026-02-04 12:32       ` Gary Guo
2026-02-04 13:00         ` Peter Zijlstra
2026-02-05 21:40       ` Boqun Feng
2026-02-05 22:17         ` Joel Fernandes
2026-02-06  0:50           ` Joel Fernandes
2026-02-06  1:14             ` Boqun Feng [this message]
2026-02-06  1:24               ` Joel Fernandes
2026-02-06  2:51                 ` Boqun Feng
2026-02-06  8:13                   ` Joel Fernandes
2026-02-06 15:28                     ` Boqun Feng
2026-02-06 16:00                       ` Joel Fernandes
2026-02-06 16:16                         ` Boqun Feng
2026-02-07 22:11                           ` Joel Fernandes
2026-02-06  8:42                 ` Peter Zijlstra
2026-02-05 22:07       ` Boqun Feng
2026-02-06  8:45         ` Peter Zijlstra
2026-01-21 22:39 ` [PATCH v17 03/16] preempt: Introduce __preempt_count_{sub, add}_return() Lyude Paul
2026-01-21 22:39 ` [PATCH v17 04/16] openrisc: Include <linux/cpumask.h> in smp.h Lyude Paul
2026-01-21 22:39 ` [PATCH v17 05/16] irq & spin_lock: Add counted interrupt disabling/enabling Lyude Paul
2026-01-21 22:39 ` [PATCH v17 06/16] irq: Add KUnit test for refcounted interrupt enable/disable Lyude Paul
2026-01-30  7:43   ` David Gow
2026-01-21 22:39 ` [PATCH v17 07/16] rust: Introduce interrupt module Lyude Paul
2026-01-21 22:39 ` [PATCH v17 08/16] rust: helper: Add spin_{un,}lock_irq_{enable,disable}() helpers Lyude Paul
2026-01-26 13:25   ` Gary Guo
2026-01-21 22:39 ` [PATCH v17 09/16] rust: sync: Add SpinLockIrq Lyude Paul
2026-01-23 22:26   ` Benno Lossin
2026-01-21 22:39 ` [PATCH v17 10/16] rust: sync: Introduce lock::Lock::lock_with() and friends Lyude Paul
2026-01-22 11:56   ` kernel test robot
2026-01-23 22:55   ` Benno Lossin
2026-01-26 13:31   ` Gary Guo
2026-01-21 22:39 ` [PATCH v17 11/16] rust: sync: Expose lock::Backend Lyude Paul
2026-01-23 22:56   ` Benno Lossin
2026-01-21 22:39 ` [PATCH v17 12/16] rust: sync: lock/global: Rename B to G in trait bounds Lyude Paul
2026-01-21 22:39 ` [PATCH v17 13/16] rust: sync: Add a lifetime parameter to lock::global::GlobalGuard Lyude Paul
2026-01-21 22:39 ` [PATCH v17 14/16] rust: sync: lock/global: Add Backend parameter to GlobalGuard Lyude Paul
2026-01-21 22:39 ` [PATCH v17 15/16] rust: sync: lock/global: Add ContextualBackend support to GlobalLock Lyude Paul
2026-01-21 22:39 ` [PATCH v17 16/16] locking: Switch to _irq_{disable,enable}() variants in cleanup guards Lyude Paul
2026-01-26 13:24 ` [PATCH v17 00/16] Refcounted interrupts, SpinLockIrq for rust Gary Guo
2026-01-26 16:17 ` Boqun Feng
2026-02-03  0:36   ` Boqun Feng

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=aYVAYq1oM78glL7w@tardis.local \
    --to=boqun@kernel.org \
    --cc=a.hindborg@kernel.org \
    --cc=akpm@linux-foundation.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=joelagnelf@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=longman@redhat.com \
    --cc=lossin@kernel.org \
    --cc=lyude@redhat.com \
    --cc=mingo@redhat.com \
    --cc=ojeda@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tmgross@umich.edu \
    --cc=will@kernel.org \
    /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