From: Lance Yang <lance.yang@linux.dev>
To: kas@kernel.org
Cc: akpm@linux-foundation.org, david@kernel.org, ljs@kernel.org,
ziy@nvidia.com, baolin.wang@linux.alibaba.com,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
kernel-team@meta.com, liam@infradead.org, nico.pache@linux.dev,
ryan.roberts@arm.com, dev.jain@arm.com, baohua@kernel.org,
lance.yang@linux.dev, usama.arif@linux.dev, vbabka@kernel.org,
jannh@google.com
Subject: Re: [PATCH v5 9/9] mm/collapse: separate scanning a PTE table from collapsing it
Date: Thu, 15 Oct 2026 13:43:58 +0800 [thread overview]
Message-ID: <20261015054358.65376-1-lance.yang@linux.dev> (raw)
In-Reply-To: <20261014171145.3292736-10-kas@kernel.org>
On Wed, Oct 14, 2026 at 06:11:42PM +0100, Kiryl Shutsemau (Meta) wrote:
>A collapse is two jobs. One reads a PTE table under mmap_lock and decides
>whether the range is worth collapsing. The other allocates, isolates,
>copies and flushes, and wants the lock given up first.
>
>collapse_single_pmd() did both, so the boundary between them was somewhere
>in the middle of a function.
>
>Give each half its own function:
>
> - collapse_scan_pmd() scans one table. It picks the side:
> collapse_scan_anon(), the anonymous scan that used to carry the
> collapse_scan_pmd() name, or collapse_scan_file().
>
> - collapse_pmd() does the collapse the scan asked for, and is handed
> what the scan returned. SCAN_SUCCEED means there is something to
> collapse. SCAN_PTE_MAPPED_HUGEPAGE means the page cache already
> holds the PMD folio and only the PTE table is left to retract.
> Anything else is why there is nothing to do. It calls
> collapse_anon(), formerly mthp_collapse(), or collapse_file().
>
>For now collapse_single_pmd() stays, as the two of them with the
>mmap_lock drop in between, so its callers see what they saw before.
>collapse_control_init() sets a control up before its first scan.
>
>What the scan found and the collapse needs travels in collapse_control.
>For an anonymous table that is the orders and the referenced and
>swapped-out counts. collapse_anon() and collapse_huge_page() now read
>them from there instead of taking them as arguments.
>
>For a file it is the file itself and the offset in it. A file collapse
>works on the page cache and never sees a VMA, so the scan takes the
>reference while it still has one and the collapse gives it back.
>
>The file scan moves under mmap_lock with the anonymous one, where before
>the lock was given up first. The lock is now held over the page cache
>walk, an RCU walk over one table's worth of slots with no PTL, and taken
>fewer times. collapse_scan_mm_slot() ends its walk whenever the lock was
>dropped, so a refused file table used to cost khugepaged an unlock, a
>trip back through khugepaged_do_scan(), a relock and a VMA lookup. Now
>only a table that goes on to be collapsed does.
>
>Assisted-by: LLM
>Acked-by: Zi Yan <ziy@nvidia.com>
>Signed-off-by: Kiryl Shutsemau (Meta) <kas@kernel.org>
>---
Reviewed-by: Lance Yang <lance.yang@linux.dev>
next prev parent reply other threads:[~2026-10-15 5:44 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-14 17:11 [PATCH v5 0/9] mm/collapse: separate a collapse from its callers Kiryl Shutsemau (Meta)
2026-10-14 17:11 ` [PATCH v5 1/9] mm/khugepaged: drop redundant mm_struct pin in madvise_collapse() Kiryl Shutsemau (Meta)
2026-10-15 4:34 ` Lance Yang
2026-10-14 17:11 ` [PATCH v5 2/9] mm/khugepaged: count collapses where khugepaged makes them Kiryl Shutsemau (Meta)
2026-10-15 4:36 ` Lance Yang
2026-10-14 17:11 ` [PATCH v5 3/9] mm/khugepaged: rename mthp_present_ptes bitmap to eligible_ptes Kiryl Shutsemau (Meta)
2026-10-15 4:38 ` Lance Yang
2026-10-14 17:11 ` [PATCH v5 4/9] mm/collapse: add collapse.h for the collapse interface Kiryl Shutsemau (Meta)
2026-10-15 4:41 ` Lance Yang
2026-10-14 17:11 ` [PATCH v5 5/9] mm/collapse: state what a collapse may do in the policy Kiryl Shutsemau (Meta)
2026-10-15 4:44 ` Lance Yang
2026-10-14 17:11 ` [PATCH v5 6/9] mm/collapse: drop the collapse_possible() wrapper Kiryl Shutsemau (Meta)
2026-10-15 4:45 ` Lance Yang
2026-10-14 17:11 ` [PATCH v5 7/9] mm/collapse: name the per-table scan reset for what it resets Kiryl Shutsemau (Meta)
2026-10-15 4:46 ` Lance Yang
2026-10-14 17:11 ` [PATCH v5 8/9] mm/collapse: call collapse_file() from collapse_single_pmd() Kiryl Shutsemau (Meta)
2026-10-15 5:39 ` Lance Yang
2026-10-15 7:21 ` Baolin Wang
2026-10-14 17:11 ` [PATCH v5 9/9] mm/collapse: separate scanning a PTE table from collapsing it Kiryl Shutsemau (Meta)
2026-10-15 5:43 ` Lance Yang [this message]
2026-10-14 21:16 ` [PATCH v5 0/9] mm/collapse: separate a collapse from its callers Andrew Morton
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=20261015054358.65376-1-lance.yang@linux.dev \
--to=lance.yang@linux.dev \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=david@kernel.org \
--cc=dev.jain@arm.com \
--cc=jannh@google.com \
--cc=kas@kernel.org \
--cc=kernel-team@meta.com \
--cc=liam@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=nico.pache@linux.dev \
--cc=ryan.roberts@arm.com \
--cc=usama.arif@linux.dev \
--cc=vbabka@kernel.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.