[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <74410776-0e8a-464c-b725-9780a0400afb@oracle.com>
Date: Mon, 8 Sep 2025 13:55:33 -0700
From: Anthony Yznaga <anthony.yznaga@...cle.com>
To: David Hildenbrand <david@...hat.com>, linux-mm@...ck.org
Cc: akpm@...ux-foundation.org, andreyknvl@...il.com, arnd@...db.de,
bp@...en8.de, brauner@...nel.org, bsegall@...gle.com, corbet@....net,
dave.hansen@...ux.intel.com, dietmar.eggemann@....com,
ebiederm@...ssion.com, hpa@...or.com, jakub.wartak@...lbox.org,
jannh@...gle.com, juri.lelli@...hat.com, khalid@...nel.org,
liam.howlett@...cle.com, linyongting@...edance.com,
lorenzo.stoakes@...cle.com, luto@...nel.org, markhemm@...glemail.com,
maz@...nel.org, mhiramat@...nel.org, mgorman@...e.de, mhocko@...e.com,
mingo@...hat.com, muchun.song@...ux.dev, neilb@...e.de,
osalvador@...e.de, pcc@...gle.com, peterz@...radead.org,
pfalcato@...e.de, rostedt@...dmis.org, rppt@...nel.org,
shakeel.butt@...ux.dev, surenb@...gle.com, tglx@...utronix.de,
vasily.averin@...ux.dev, vbabka@...e.cz, vincent.guittot@...aro.org,
viro@...iv.linux.org.uk, vschneid@...hat.com, willy@...radead.org,
x86@...nel.org, xhao@...ux.alibaba.com, linux-doc@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-arch@...r.kernel.org
Subject: Re: [PATCH v3 22/22] mm/mshare: charge fault handling allocations to
the mshare owner
On 9/8/25 1:28 PM, David Hildenbrand wrote:
> On 08.09.25 21:21, Anthony Yznaga wrote:
>>
>>
>> On 9/8/25 11:50 AM, David Hildenbrand wrote:
>>> On 20.08.25 03:04, Anthony Yznaga wrote:
>>>> When handling a fault in an mshare range, redirect charges for page
>>>> tables and other allocations to the mshare owner rather than the
>>>> current task.
>>>>
>>>
>>> That looks rather weird. I would have thought there would be an easy way
>>> to query the mshare owner for a given mshare mapping, and if the current
>>> MM corresponds to that owner you know that you are running in the owner
>>> context.
>>>
>>> Of course, we could have a helper like is_mshare_owner(mapping, current)
>>> or sth like that.
>>>
>>
>> I'm not quite following you. Charges for newly faulted pages will be
>> automatically directed to the mshare owner because the mshare mm will
>> have its mm_owner field pointing to the owner. On the other hand,
>> allocations for page table pages are handled differently.
>> GFP_PGTABLE_USER causes the accounting to go through
>> __memcg_kmem_charge_page() which will charge them to the memcg for the
>> current task unless unless current->active_memcg is set to point to
>> another memcg.
>
> As a note, I think at some point we discussed re-routing page faults to
> the owner, so the owner can take care of all of that naturally. Is that
> what's happening here?
The memcg charges are routed to the owner but otherwise the page faults
are handled using the mshare mm.
>
>
> So, are we running into that code that we have current be another MM
> than vma->vm_mm?
That will always be the case when handling a page fault in an mshare
region. The fault handling code uses the msharefs VMA to find the actual
VMA associated with the mshare mm. The actual VMA has its vm_mm pointing
to the mshare mm, and it is the VMA passed to handle_mm_fault().
>
> Reminds me of: FOLL_REMOTE->FAULT_FLAG_REMOTE. But I guess, we don't
> take care of different accounting in that case.
>
> Anyhow, what I meant is that you could just check whether you have a
> mshare VMA, and if so check if current is different to the mshare MM
> owner. So I don't immediately see why MMF_MSHARE is required.
It's because it is not the msharefs VMA that is passed to
handle_mm_fault(). At one point I did have the code for setting
active_memcg in do_user_addr_fault(), but it did not seem as clean.
The msharefs VMA is not passed handle_mm_fault() because protection
checks done in the arch-specific handling need to be done against the
actual VMA.
Powered by blists - more mailing lists