linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Mitchell Levy <levymitchell0@gmail.com>
To: "Christoph Lameter (Ampere)" <cl@gentwo.org>
Cc: "Miguel Ojeda" <ojeda@kernel.org>,
	"Alex Gaynor" <alex.gaynor@gmail.com>,
	"Boqun Feng" <boqun.feng@gmail.com>,
	"Gary Guo" <gary@garyguo.net>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Andreas Hindborg" <a.hindborg@kernel.org>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Dennis Zhou" <dennis@kernel.org>, "Tejun Heo" <tj@kernel.org>,
	"Danilo Krummrich" <dakr@kernel.org>,
	"Benno Lossin" <lossin@kernel.org>,
	linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org,
	linux-mm@kvack.org
Subject: Re: [PATCH 4/5] rust: percpu: Add pin-hole optimizations for numerics
Date: Thu, 26 Jun 2025 11:50:31 -0700	[thread overview]
Message-ID: <685d9677.170a0220.3b599c.7713@mx.google.com> (raw)
In-Reply-To: <cd3a600c-a4ee-4034-f605-ad9bac5c7655@gentwo.org>

On Wed, Jun 25, 2025 at 10:21:17AM -0700, Christoph Lameter (Ampere) wrote:
> On Tue, 24 Jun 2025, Mitchell Levy wrote:
> 
> > The C implementations of `this_cpu_add`, `this_cpu_sub`, etc., are
> > optimized to save an instruction by avoiding having to compute
> > `this_cpu_ptr(&x)` for some per-CPU variable `x`. For example, rather
> > than
> 
> Cool. Great progress for Rust support. Maybe we can switch the SLUB
> allocator over or come up with SLRB for the Slab Rust allocator ;-)

Thank you!

I'm certainly very excited about the prospect of more Rust :)

> 
> > +        impl PerCpuNumeric<'_, $ty> {
> > +            /// Adds `rhs` to the per-CPU variable.
> > +            pub fn add(&mut self, rhs: $ty) {
> > +                // SAFETY: `self.ptr.0` is a valid offset into the per-CPU area (i.e., valid as a
> > +                // pointer relative to the `gs` segment register) by the invariants of PerCpu.
> > +                unsafe {
> > +                    asm!(
> > +                        concat!("add gs:[{off}], {val}"),
> > +                        off = in(reg) self.ptr.0 as *mut $ty,
> > +                        val = in(reg_byte) rhs,
> 
> That looks arch specific to x86? What about ARM and other platforms?

Yes; pretty much everything added by this series is x86_64 specific. In
`rust/kernel/lib.rs` the whole percpu module is gated behind
`#[cfg(CONFIG_X86_64)]`. 

I'm certainly interested in adding support for ARM and other
architectures. That said, x86 is where I started, and since it's in a
workable state, I wanted to get some input from the list.



  reply	other threads:[~2025-06-26 18:50 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-24 22:10 [PATCH 0/5] rust: Add Per-CPU Variable API Mitchell Levy
2025-06-24 22:10 ` [PATCH 1/5] rust: percpu: introduce a rust API for per-CPU variables Mitchell Levy
2025-06-26 14:05   ` kernel test robot
2025-06-24 22:10 ` [PATCH 2/5] rust: rust-analyzer: add lib to dirs searched for crates Mitchell Levy
2025-06-24 22:10 ` [PATCH 3/5] rust: percpu: add a rust per-CPU variable test Mitchell Levy
2025-06-24 22:10 ` [PATCH 4/5] rust: percpu: Add pin-hole optimizations for numerics Mitchell Levy
2025-06-25 17:21   ` Christoph Lameter (Ampere)
2025-06-26 18:50     ` Mitchell Levy [this message]
2025-06-25 17:23   ` Christoph Lameter (Ampere)
2025-06-26 18:55     ` Mitchell Levy
2025-06-24 22:10 ` [PATCH 5/5] rust: percpu: cache per-CPU pointers in the dynamic case Mitchell Levy

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=685d9677.170a0220.3b599c.7713@mx.google.com \
    --to=levymitchell0@gmail.com \
    --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=cl@gentwo.org \
    --cc=dakr@kernel.org \
    --cc=dennis@kernel.org \
    --cc=gary@garyguo.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lossin@kernel.org \
    --cc=ojeda@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=tj@kernel.org \
    --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