From: Will Deacon <will@kernel.org>
To: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
"Christoph Lameter (Ampere)" <cl@gentwo.org>,
"David Hildenbrand (Arm)" <david@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Yang Shi <yang@os.amperecomputing.com>,
Ryan Roberts <ryan.roberts@arm.com>,
dennis@kernel.org, tj@kernel.org, urezki@gmail.com,
catalin.marinas@arm.com, akpm@linux-foundation.org,
hca@linux.ibm.com, gor@linux.ibm.com, agordeev@linux.ibm.com,
linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, Jason Gunthorpe <jgg@nvidia.com>
Subject: Re: [RFC v2 PATCH 0/16] Optimize this_cpu_*() ops for non-x86 (ARM64 for this series)
Date: Thu, 6 Aug 2026 18:15:35 +0100 [thread overview]
Message-ID: <anTBN7WzVZukl26p@willie-the-truck> (raw)
In-Reply-To: <anIXr4Kbn59Ac31Y@lucifer>
On Tue, Aug 04, 2026 at 06:23:48PM +0100, Lorenzo Stoakes (ARM) wrote:
> On Tue, Aug 04, 2026 at 09:30:08AM -0700, Linus Torvalds wrote:
> > On Tue, 4 Aug 2026 at 09:27, Christoph Lameter (Ampere) <cl@gentwo.org> wrote:
> > >
> > > We certainly do not want to replicate that approach. We are using the per
> > > cpu page tables to avoid address calculations in the VM that other
> > > platforms can do with a segment override.
> >
> > Right, and I said that that's ok as long as it's a internal
> > architecture thing. Not a "this is how the VM works".
> >
> > Because people really have wanted to make it a "this is how the VM
> > works" thing. And that is very much what I object to.
>
> Well :) it fundamentally changes how mm works - now we have a whole new set of
> kernel page tables and PGD's that we have to think about.
>
> And the series either tries to hack changes that fundamentally alter how
> vmalloc works or will add its own duplicative kernel page table code to do the
> same kind of thing.
>
> So now core mm has to worry about TLB coherency and synchronisation, how this
> might interact with things like page table isolation, and a lot of other
> headaches (and I'm not really convinced they've been thought through here).
>
> IOW - breaking fundamental assumptions about kernel page tables is inherently a
> whole-VM change (See [0] for instance for an example of what can go wrong).
>
> If Christoph + Yang can provide compelling data that advocates for this change
> AND the core mm and arm64 communities agree to move forward with this, then
> things are different.
>
> However, I think the best approach here is to find the least invasive way of
> limiting the change to the architecture itself.
>
> Mark has put forward an approach that eliminates the exact overhead that this
> series aims to address but does so without having to fundamentally alter core
> mm assumptions (v2 posted at [1]).
>
> So that seems very clearly to be a better alternative to me.
>
> Ultimately we need mm and arm64 maintainer agreement on the way forwards (or in
> the case of a truly isolated arm64 solution, arm64 maintainer agreement).
So the nice thing about having two implementations (i.e. the per-cpu
page-tables *and* the preemption stuff from Mark) is that we can pitch
them against each other to help us make a decision.
However, I don't see how anybody could argue that Mark's series isn't
cleaner and easier to maintain. I've seen it described as "hacky" but I
can't tell whether or not that's supposed to be a criticism. If we
seriously want to consider the per-cpu page-table approach on arm64, the
numbers need to be _really_ good and across a variety of hardware, not
just the stuff with a memory system made of baling twine. That extends
to the kernel text replication efforts too.
Will
next prev parent reply other threads:[~2026-08-06 17:15 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-15 18:04 [RFC v2 PATCH 0/16] Optimize this_cpu_*() ops for non-x86 (ARM64 for this series) Yang Shi
2026-07-15 18:04 ` [PATCH 01/16] drivers: arch_numa: move percpu set up code to arch Yang Shi
2026-07-15 18:04 ` [PATCH 02/16] arm64: kconfig: make percpu related configs not depend on NUMA Yang Shi
2026-07-15 18:04 ` [PATCH 03/16] mm: pgalloc: introduce {pud|pmd}_populate_sync() Yang Shi
2026-07-15 18:04 ` [PATCH 04/16] vmalloc: pass in pgd pointer for vmap{__vunmap}_range_noflush() Yang Shi
2026-07-29 9:32 ` Lorenzo Stoakes (ARM)
2026-08-03 19:12 ` Yang Shi
2026-08-04 13:47 ` Lorenzo Stoakes (ARM)
2026-07-15 18:04 ` [PATCH 05/16] arm64: mm: enable percpu kernel page table Yang Shi
2026-07-15 18:04 ` [PATCH 06/16] arm64: mm: defined {pud|pmd}_populate_sync() Yang Shi
2026-07-15 18:04 ` [PATCH 07/16] arm64: mm: sync percpu page table for memory hotplug/unplug Yang Shi
2026-07-15 18:04 ` [PATCH 08/16] arm64: kasan: sync up kasan shadow area page table Yang Shi
2026-07-15 18:04 ` [PATCH 09/16] arm64: mm: define percpu virtual space area Yang Shi
2026-07-15 18:04 ` [PATCH 10/16] mm: percpu: prepare to use dedicated percpu area Yang Shi
2026-07-15 18:04 ` [PATCH 11/16] arm64: mm: map local percpu first chunk Yang Shi
2026-07-15 18:04 ` [PATCH 12/16] mm: percpu: set up first chunk and reserve chunk Yang Shi
2026-07-15 18:04 ` [PATCH 13/16] arm64: mm: introduce __per_cpu_local_off Yang Shi
2026-07-15 18:04 ` [PATCH 14/16] mm: percpu: allocate and free local percpu vm area Yang Shi
2026-07-15 18:04 ` [PATCH 15/16] arm64: kconfig: select HAVE_LOCAL_PER_CPU_MAP Yang Shi
2026-07-15 18:04 ` [PATCH 16/16] arm64: percpu: use local percpu for this_cpu_*() APIs Yang Shi
2026-07-16 13:23 ` [RFC v2 PATCH 0/16] Optimize this_cpu_*() ops for non-x86 (ARM64 for this series) Ryan Roberts
2026-07-21 19:08 ` Mark Rutland
2026-07-21 23:20 ` Yang Shi
2026-07-22 9:36 ` Mark Rutland
2026-07-27 21:10 ` Yang Shi
2026-07-27 22:06 ` Christoph Lameter (Ampere)
2026-07-29 9:28 ` David Hildenbrand (Arm)
2026-08-04 14:15 ` Lorenzo Stoakes (ARM)
2026-08-04 14:21 ` Lorenzo Stoakes (ARM)
2026-08-04 14:40 ` Jason Gunthorpe
2026-08-04 18:06 ` Matthew Wilcox
2026-08-04 18:16 ` Jason Gunthorpe
2026-08-04 15:21 ` Linus Torvalds
2026-08-04 16:15 ` Christoph Lameter (Ampere)
2026-08-04 16:30 ` Linus Torvalds
2026-08-04 16:54 ` David Hildenbrand (Arm)
2026-08-04 17:01 ` Linus Torvalds
2026-08-04 17:32 ` Lorenzo Stoakes (ARM)
2026-08-04 21:40 ` Christoph Lameter (Ampere)
2026-08-04 21:48 ` David Hildenbrand (Arm)
2026-08-04 21:56 ` Christoph Lameter (Ampere)
2026-08-04 22:01 ` David Hildenbrand (Arm)
2026-08-05 8:16 ` Lorenzo Stoakes (ARM)
2026-08-04 17:23 ` Lorenzo Stoakes (ARM)
2026-08-04 17:28 ` Linus Torvalds
2026-08-04 21:51 ` Yang Shi
2026-08-04 22:05 ` David Hildenbrand (Arm)
2026-08-04 22:35 ` Christoph Lameter (Ampere)
2026-08-05 6:11 ` David Hildenbrand (Arm)
2026-08-05 14:48 ` Mark Rutland
2026-08-05 7:52 ` Lorenzo Stoakes (ARM)
2026-08-06 17:15 ` Will Deacon [this message]
2026-08-06 17:31 ` Lorenzo Stoakes (ARM)
2026-08-18 16:48 ` Christoph Lameter (Ampere)
2026-08-04 16:19 ` Christoph Lameter (Ampere)
2026-08-04 16:47 ` David Hildenbrand (Arm)
2026-08-04 21:25 ` Christoph Lameter (Ampere)
2026-08-04 21:47 ` David Hildenbrand (Arm)
2026-08-04 22:01 ` Christoph Lameter (Ampere)
2026-08-05 6:12 ` David Hildenbrand (Arm)
2026-08-05 8:45 ` Heiko Carstens
2026-08-05 11:10 ` David Laight
2026-08-05 14:53 ` Mark Rutland
2026-07-30 6:06 ` [RFC v2 PATCH 0/16] Optimize this_cpu_*() ops for non-x86 (ARM64 for this series)~ Mete Durlu
2026-09-02 11:51 ` [RFC v2 PATCH 0/16] Optimize this_cpu_*() ops for non-x86 (ARM64 for this series) Usama Anjum
2026-09-02 21:04 ` Yang Shi
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=anTBN7WzVZukl26p@willie-the-truck \
--to=will@kernel.org \
--cc=agordeev@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=catalin.marinas@arm.com \
--cc=cl@gentwo.org \
--cc=david@kernel.org \
--cc=dennis@kernel.org \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=jgg@nvidia.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=mark.rutland@arm.com \
--cc=ryan.roberts@arm.com \
--cc=tj@kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=urezki@gmail.com \
--cc=yang@os.amperecomputing.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox