linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: "Christoph Lameter (Ampere)" <cl@gentwo.org>
To: Mitchell Levy <levymitchell0@gmail.com>
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: Wed, 25 Jun 2025 10:21:17 -0700 (PDT)	[thread overview]
Message-ID: <cd3a600c-a4ee-4034-f605-ad9bac5c7655@gentwo.org> (raw)
In-Reply-To: <20250624-rust-percpu-v1-4-9c59b07d2a9c@gmail.com>

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 ;-)


> +        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?



  reply	other threads:[~2025-06-25 17:21 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) [this message]
2025-06-26 18:50     ` Mitchell Levy
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=cd3a600c-a4ee-4034-f605-ad9bac5c7655@gentwo.org \
    --to=cl@gentwo.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=dennis@kernel.org \
    --cc=gary@garyguo.net \
    --cc=levymitchell0@gmail.com \
    --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