From: Lorenzo Stoakes <ljs@kernel.org>
To: "David Hildenbrand (Arm)" <david@kernel.org>
Cc: xu.xin16@zte.com.cn, tao.wangtao@honor.com,
catalin.marinas@arm.com, will@kernel.org, tglx@kernel.org,
mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com,
x86@kernel.org, akpm@linux-foundation.org, willy@infradead.org,
sj@kernel.org, kees@kernel.org, luizcap@redhat.com,
zhangjiao2@cmss.chinamobile.com, kas@kernel.org, hpa@zytor.com,
liam@infradead.org, vbabka@kernel.org, rppt@kernel.org,
surenb@google.com, mhocko@suse.com, jack@suse.cz,
riel@surriel.com, harry@kernel.org, jannh@google.com,
jgg@ziepe.ca, jhubbard@nvidia.com, peterx@redhat.com,
ziy@nvidia.com, baolin.wang@linux.alibaba.com,
npache@redhat.com, ryan.roberts@arm.com, dev.jain@arm.com,
baohua@kernel.org, lance.yang@linux.dev,
chengming.zhou@linux.dev, nao.horiguchi@gmail.com,
matthew.brost@intel.com, joshua.hahnjy@gmail.com,
rakie.kim@sk.com, byungchul@sk.com, gourry@gourry.net,
ying.huang@linux.alibaba.com, apopple@nvidia.com,
pfalcato@suse.de, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-mm@kvack.org, damon@lists.linux.dev,
shakeel.butt@linux.dev, ryncsn@gmail.com, dvander@google.com,
wangzicheng@honor.com
Subject: Re: [PATCH 0/15] mm: introduce ANON_VMA_LAZY for deferred anon_vma creation
Date: Fri, 5 Jun 2026 11:07:57 +0100 [thread overview]
Message-ID: <aiKd7tfrICFnlWxV@lucifer> (raw)
In-Reply-To: <68a4aec0-72d4-4967-b063-b57cc7ee40cf@kernel.org>
On Fri, Jun 05, 2026 at 11:38:52AM +0200, David Hildenbrand (Arm) wrote:
> On 6/4/26 05:10, xu.xin16@zte.com.cn wrote:
> >>>
> >>> arch/arm64/Kconfig | 1 +
> >>> arch/x86/Kconfig | 1 +
> >>> fs/proc/page.c | 6 +-
> >>> include/linux/mm.h | 38 ++
> >>> include/linux/mm_types.h | 9 +-
> >>> include/linux/page-flags.h | 34 +-
> >>> include/linux/pagemap.h | 2 +-
> >>> include/linux/rmap.h | 165 ++++++++-
> >>> mm/Kconfig | 22 ++
> >>> mm/damon/ops-common.c | 4 +-
> >>> mm/debug.c | 2 +-
> >>> mm/debug_vm_pgtable.c | 2 +-
> >>> mm/gup.c | 6 +-
> >>> mm/huge_memory.c | 16 +-
> >>> mm/internal.h | 171 +++++++++
> >>> mm/khugepaged.c | 13 +-
> >>> mm/ksm.c | 43 ++-
> >>> mm/memory-failure.c | 11 +-
> >>> mm/memory.c | 19 +-
> >>> mm/migrate.c | 126 ++++---
> >>> mm/mmap.c | 15 +-
> >>> mm/mremap.c | 4 +-
> >>> mm/page_idle.c | 2 +-
> >>> mm/rmap.c | 690 ++++++++++++++++++++++++++++++++++---
> >>> mm/vma.c | 76 ++--
> >>> mm/vma.h | 4 +-
> >>> mm/vma_exec.c | 2 +-
> >>> mm/vma_init.c | 1 +
> >>> 28 files changed, 1279 insertions(+), 206 deletions(-)
> >>
> >> Hi!
> >>
> >> When I saw the diffsat I was concerned. Going through the patches made me ...
> >> more concerned :)
> >>
> >> This is a lot of complexity. On top of something that is already so complicated
> >> that I fail to grasp most details without regularly taking a look at the nice
> >> figures Lorenzo created recently.
> >>
> >> For example, I read above "since child VMAs do not need to allocate anon_vma"
> >> and wondered how that could be part of something that is just done lazily. Then
> >> I had to learn in the patches that there is some additional "Child VMAs
> >> are created as ANON_VMA_TREE_PARENT and do not allocate anon_vma" -- excuse me,
> >> what? :)
> >>
> >> Reading about VMA refcounts made me shiver. Reading "Holding only
> >> folio_lock(folio) cannot guarantee that the split
> >> operation completes atomically." confused me. Learning that we have to invent
> >> interesting ways to make page migration mutually exclusive to free_pgtables()
> >> concerned me. Figuring out that there are arch-specific config options and
> >> runtime toggles is a clear warning sign.
> >>
> >> Seeing test_folio_unmapped() was funny, though (why?! :)).
> >>
> >> I think this patch set has a noble goal of reducing anon_vma overhead when anon
> >> pages are not shared during fork. However, using anon_vma for them actually
> >> makes the overall implementation (e.g., rmap walks, locking) more consistent and
> >> simpler.
> >>
> >> Even if we could be convinced that most of this here is correct, how should we
> >> reasonably maintain this increasing level of complexity here?
> >
> > Indeed, it's very complex, but having the changes of 15 patches scattered across
> > various subsystems is really frustrating for reviewers. It took me a whole day to
> > read through the entire patch set, which made an already complicated matter even
> > more complex (maintaining such complex code in the future will be a pain).
> >
> > However, overall, I think the original intention behind Tao's patch is innovative
> > and valuable, and Tao could definitely make this patch set simpler and more
> > readable, because the core changes actually start from PATCH 10.
> >
> > I believe that if Tao had done the following, things might have gone better and easier
> > for reviewing. In fact, I understand the motivation behind the patch is quite simple
> > at its core (just wanting to avoid allocating the anon_vma structure when a VMA hasn't
> > been truly forked, and instead put the VMA information directly into folio->mapping):
> >
> > 1) You could actually simplify your patch significantly — without adding a lot of wrappers
> > and helper functions that introduce extra review overhead — and keep only the most essential elements.
> >
> > 2) Provide complete test code (in tools/testing/selftest) that covers the affected functionality,
> > such as VMA, huge pages, KSM, etc.
> >
> > 3) Use the RFC tag to start a discussion.
> >
> >
> > I would be very glad to see if Tao could post a simpler v2 version that does not alter the rmap
> > core data structures too much and does not introduce excessive complexity, no matter whether
> > it can be merged finaly.
>
> I'm afraid, the overall complexity would increase in any case.
>
> So to quote myself "But fundamentally, I think we want to find a new design that
> is just naturally simpler."
In general I'm prioritising my work, and hope to ship something within the next
month, even if it might just be some early bits of work on this to plumb stuff
in, and certainly the main ting will be an RFC :)
So keep an eye out for this which will hopefully address people's needs!
>
> --
> Cheers,
>
> David
Thanks, Lorenzo
next prev parent reply other threads:[~2026-06-05 10:08 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-27 11:01 [PATCH 0/15] mm: introduce ANON_VMA_LAZY for deferred anon_vma creation tao
2026-05-27 11:01 ` [PATCH 01/15] mm/rmap: introduce anon_rmap APIs for anonymous folios tao
2026-05-27 11:44 ` Lorenzo Stoakes
2026-05-28 7:47 ` wangtao
2026-05-27 11:01 ` [PATCH 02/15] mm: convert anon_vma rmap APIs to anon_rmap tao
2026-05-27 11:49 ` Lorenzo Stoakes
2026-05-28 8:55 ` wangtao
2026-05-27 11:01 ` [PATCH 03/15] mm: introduce anon_vma_tree_t for multiple anon_vma topologies tao
2026-05-27 11:56 ` Lorenzo Stoakes
2026-05-28 9:00 ` wangtao
2026-05-27 11:01 ` [PATCH 04/15] mm: switch to anon_vma_tree_t APIs in preparation for ANON_VMA_LAZY tao
2026-05-27 11:01 ` [PATCH 05/15] mm: add CONFIG_ANON_VMA_LAZY and folio helpers tao
2026-05-27 11:01 ` [PATCH 06/15] mm: add CONFIG_VMA_REF and VMA helpers tao
2026-05-27 11:01 ` [PATCH 07/15] mm: replace direct FOLIO_MAPPING_ANON usage with helpers tao
2026-05-27 11:01 ` [PATCH 08/15] mm: prepare rmap infrastructure for ANON_VMA_LAZY tao
2026-05-27 11:01 ` [PATCH 09/15] mm: implement ANON_VMA_LAZY rmap semantics tao
2026-05-27 11:01 ` [PATCH 10/15] mm: defer anon_vma creation with ANON_VMA_LAZY tao
2026-05-27 11:01 ` [PATCH 11/15] mm: handle ANON_VMA_LAZY in huge page operations tao
2026-05-27 11:01 ` [PATCH 12/15] mm: handle ANON_VMA_LAZY during migration tao
2026-05-27 11:01 ` [PATCH 13/15] mm: support setup and upgrade of ANON_VMA_LAZY folios tao
2026-05-27 11:01 ` [PATCH 14/15] mm: support merging of ANON_VMA_LAZY VMAs tao
2026-05-27 11:01 ` [PATCH 15/15] mm: enable CONFIG_ANON_VMA_LAZY on arm64 and x86_64 tao
2026-05-27 11:23 ` [PATCH 0/15] mm: introduce ANON_VMA_LAZY for deferred anon_vma creation Pedro Falcato
2026-05-28 6:45 ` wangtao
2026-05-28 7:14 ` Lorenzo Stoakes
2026-05-27 11:30 ` Lorenzo Stoakes
2026-05-28 7:11 ` wangtao
2026-05-28 7:22 ` Lorenzo Stoakes
2026-05-27 14:33 ` Lorenzo Stoakes
2026-05-28 7:57 ` wangtao
2026-05-28 8:14 ` Lorenzo Stoakes
[not found] ` <CAGsJ_4zy=-m5wjm0BC-vQXMHGRkHymC-5S_L9Oi708v339vvPw@mail.gmail.com>
2026-05-29 2:20 ` wangzicheng
2026-05-29 6:56 ` Lorenzo Stoakes
2026-05-29 6:45 ` Lorenzo Stoakes
2026-05-29 9:41 ` wangtao
2026-05-29 12:03 ` Lorenzo Stoakes
2026-06-01 1:46 ` wangtao
2026-06-02 2:15 ` Barry Song
2026-06-02 2:46 ` Lance Yang
2026-06-02 15:37 ` Lorenzo Stoakes
2026-06-02 19:44 ` Pedro Falcato
2026-06-02 23:03 ` Barry Song
2026-06-03 7:07 ` Lorenzo Stoakes
2026-06-02 19:56 ` Harry Yoo
2026-06-02 22:27 ` Barry Song
2026-06-02 20:47 ` Lorenzo Stoakes
2026-05-29 15:07 ` Jonathan Corbet
2026-05-29 15:40 ` Lorenzo Stoakes
2026-05-30 11:28 ` Barry Song
2026-06-02 16:07 ` Harry Yoo
2026-06-03 2:59 ` wangtao
2026-06-03 3:12 ` wangtao
2026-06-03 7:54 ` Lorenzo Stoakes
2026-06-03 11:05 ` wangtao
2026-06-03 11:53 ` Lorenzo Stoakes
2026-06-04 3:50 ` wangtao
2026-06-03 20:25 ` David Hildenbrand (Arm)
2026-06-03 22:14 ` Barry Song
2026-06-04 4:03 ` wangtao
2026-06-04 4:20 ` Barry Song
2026-06-04 7:35 ` wangtao
2026-06-04 3:10 ` xu.xin16
2026-06-04 4:10 ` wangtao
2026-06-05 9:38 ` David Hildenbrand (Arm)
2026-06-05 10:07 ` Lorenzo Stoakes [this message]
2026-06-05 10:56 ` David Hildenbrand (Arm)
2026-06-04 9:40 ` Lorenzo Stoakes
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=aiKd7tfrICFnlWxV@lucifer \
--to=ljs@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=apopple@nvidia.com \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=bp@alien8.de \
--cc=byungchul@sk.com \
--cc=catalin.marinas@arm.com \
--cc=chengming.zhou@linux.dev \
--cc=damon@lists.linux.dev \
--cc=dave.hansen@linux.intel.com \
--cc=david@kernel.org \
--cc=dev.jain@arm.com \
--cc=dvander@google.com \
--cc=gourry@gourry.net \
--cc=harry@kernel.org \
--cc=hpa@zytor.com \
--cc=jack@suse.cz \
--cc=jannh@google.com \
--cc=jgg@ziepe.ca \
--cc=jhubbard@nvidia.com \
--cc=joshua.hahnjy@gmail.com \
--cc=kas@kernel.org \
--cc=kees@kernel.org \
--cc=lance.yang@linux.dev \
--cc=liam@infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=luizcap@redhat.com \
--cc=matthew.brost@intel.com \
--cc=mhocko@suse.com \
--cc=mingo@redhat.com \
--cc=nao.horiguchi@gmail.com \
--cc=npache@redhat.com \
--cc=peterx@redhat.com \
--cc=pfalcato@suse.de \
--cc=rakie.kim@sk.com \
--cc=riel@surriel.com \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=ryncsn@gmail.com \
--cc=shakeel.butt@linux.dev \
--cc=sj@kernel.org \
--cc=surenb@google.com \
--cc=tao.wangtao@honor.com \
--cc=tglx@kernel.org \
--cc=vbabka@kernel.org \
--cc=wangzicheng@honor.com \
--cc=will@kernel.org \
--cc=willy@infradead.org \
--cc=x86@kernel.org \
--cc=xu.xin16@zte.com.cn \
--cc=ying.huang@linux.alibaba.com \
--cc=zhangjiao2@cmss.chinamobile.com \
--cc=ziy@nvidia.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