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.
next prev parent 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 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.