linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Andi Kleen <ak@linux.intel.com>
To: "David Hildenbrand (Arm)" <david@kernel.org>
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Subject: Re: [PATCH v2] smaps: Report correct page sizes with THP
Date: Mon, 2 Mar 2026 13:48:20 -0800	[thread overview]
Message-ID: <aaYFpEmiH99dryA4@tassilo> (raw)
In-Reply-To: <4a08a249-211b-40b9-b6bd-7c54af2b9d15@kernel.org>

On Mon, Mar 02, 2026 at 10:05:23PM +0100, David Hildenbrand (Arm) wrote:
> On 3/2/26 21:41, Andi Kleen wrote:
> >> Especially after reading 3340289ddf29ca75c3acfb3a6b72f234b2f74d5c I
> >> ended up with he following conclusion:
> >>
> >> "KernelPageSize" tells you in which granularity we can mmap()/munmap()
> >> etc. Simple.
> >>
> >> "MMUPageSize" tells us how this granularity is implemented (or emulated)
> >> under the hood.
> >>
> >> The case we care about is when MMUPageSize < KernelPageSize. A process
> >> might have to know that detail even when nothing is currently/yet
> >> faulted in.
> >>
> >> Assume a process would perform an atomic that would cross MMUPageSize,
> >> but not KernelPageSize. Depending on the architecture, atomics would not
> >> work as expected in that case.
> > 
> > I thought most architectures don't support atomics crossing pages
> > anyways. x86 supports it, but it's discouraged.
> 
> Right. And if your user space thinks it has "64k" pages, when it's
> actually emulated through "4k" pages under the hood, that could be a
> problem: user space could perform an atomic "within" a 64k page that

PPC user space doesn't do it.

> actually crosses two 4k pages. So it must be aware that mmap etc operate
> in 64k, but the underlying emulation might be smaller.

Sounds like a very contrived use case, which I'm not sure actually 
happens.  From my past experiences most software usually doesn't use
complicated enumerations anyways but just hard codes something
reasonable (like in your example just always assume 4K worst case).
From their POV it makes sense, how would you test
a complicated enumeration for cases that don't happen on your
current system.

> >> I'd expect other cases where an architecture might have to care about
> >> the actual, smallest possible MMUPageSize it might be executed on while
> >> running the program.
> > 
> > That's fine, they can use the min, or just the first match
> > (which is always the smallest)
> > 
> >>
> >> It's a shame we had to add MMUPageSize, but maybe it might resurface if
> >> we ever support emulating 64K/16K user pagesizes on 4K MMUs.
> > 
> > Okay, so if I follow that correctly you're suggesting 
> > to change KernelPageSize, not MMUPageSize. I can do that change.
> 
> Not at all. I'm saying that we leave KernelPageSize and MMUPageSize
> alone, just as they are today.

That doesn't solve the problem that motivated my patch
smaps is confusing today and would stay so.

> 
> Instead, if we want better statistics (and I think we want) regarding
> how things are mapped, we should look into a better interface.

I don't see how a new interface helps really. Some of the problems
you mentioned earlier could be either solved today with smaps 
(e.g. handling the case when a folio is mapped partially and just
report the smaller page size), or are unsolveable in the general case
(what the TLB actually handles) 

A new interface doesn't really change anything given that smaps
is extensible. 

I'll look at the partial folio case, but will only handle
it if it's simple.

> Ideally, that will tell you "how much" of a certain contiguous size is
> mapped, if that contiguous size benefits somehow from TLB optimizations,
> etc.

The key word is "somehow". It's better to work with real use cases
instead of such hypothetics.

-Andi


      reply	other threads:[~2026-03-02 21:48 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-25 23:27 Andi Kleen
2026-02-26 12:08 ` Usama Arif
2026-03-01 17:20   ` Andi Kleen
2026-02-26 17:31 ` David Hildenbrand (Arm)
2026-03-01 17:35   ` Andi Kleen
2026-03-02 19:29     ` David Hildenbrand (Arm)
2026-03-02 20:41       ` Andi Kleen
2026-03-02 21:05         ` David Hildenbrand (Arm)
2026-03-02 21:48           ` Andi Kleen [this message]

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=aaYFpEmiH99dryA4@tassilo \
    --to=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=david@kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lorenzo.stoakes@oracle.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