From: Zi Yan <ziy@nvidia.com>
To: Huan Nguyen <nhuhuan@google.com>
Cc: tglx@kernel.org, mingo@redhat.com, bp@alien8.de,
dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com,
akpm@linux-foundation.org, david@kernel.org, ljs@kernel.org,
Liam.Howlett@oracle.com, vbabka@kernel.org, rppt@kernel.org,
surenb@google.com, mhocko@suse.com, trondmy@kernel.org,
anna@kernel.org, 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, rostedt@goodmis.org, mhiramat@kernel.org,
mathieu.desnoyers@efficios.com, jackmanb@google.com,
hannes@cmpxchg.org, shivankg@amd.com, rientjes@google.com,
dave@stgolabs.net, nifan.cxl@gmail.com, fvdl@google.com,
jic23@kernel.org, rkodsara@amd.com, bharata@amd.com,
sj@kernel.org, weixugc@google.com, xuezhengchu@huawei.com,
yiannis@zptcorp.com, yiannis.nikolakop@gmail.com,
dimitrios.palyvos@zptcorp.com, alirad.malek@zptcorp.com,
ryan.roberts@arm.com, linux-kernel@vger.kernel.org,
linux-mm@kvack.org, linux-nfs@vger.kernel.org,
linux-trace-kernel@vger.kernel.org
Subject: Re: [RFC PATCH v3 0/3] mm: use non-temporal stores for demotion
Date: Tue, 03 Nov 2026 19:09:43 -0500 [thread overview]
Message-ID: <7CF5AD15-B833-44E1-A9FE-C8E12F8C9E82@nvidia.com> (raw)
In-Reply-To: <20261103223025.2482227-1-nhuhuan@google.com>
On 3 Nov 2026, at 17:30, Huan Nguyen wrote:
> This series continues the non-temporal demotion work originally posted
> by Yiannis Nikolakopoulos [1].
>
> Motivation
> ==========
> Memory tier demotion moves cold folios from local DRAM to slower memory
> tiers, such as CXL or remote NUMA nodes. Standard store instructions
> force the CPU to allocate cache lines for cold data that is unlikely to
> be referenced in the near term.
>
> Using non-temporal stores and prefetching on x86 bypasses CPU cache
> allocation, protecting active workload working sets and improving
> demotion throughput.
>
> Changes in v3
> =============
> - Unified MCE-safe NT copy (addressing v2 Open #1):
> Implement copy_mc_page_nt() in x86 assembly to provide machine-check
> safe copying using non-temporal stores (movnti) and prefetchnta.
>
> - Architecture abstraction (addressing v2 Open #2):
> v2 relied on memcpy_flushcache(), which lacks non-temporal stores on
> architectures like arm64. RFC v3 replaces this with a dedicated
> __HAVE_ARCH_COPY_PAGE_NT interface and generic fallback, enabling
> architectures to plug in native non-temporal routines independently.
>
> - Memory ordering:
> Add a wmb() barrier at the end of folio_mc_copy_nt() to ensure weakly
> ordered non-temporal stores are drained before page tables are updated.
>
> Discussions
> ===========
> 1. Migration mode vs. migration control refactoring:
> Currently, this series introduces MIGRATE_ASYNC_NONTEMPORAL into
> enum migrate_mode. In parallel, Shivank Garg's migration refactoring
> series [2] consolidates migration arguments into migrate_control.
> Once that lands, demotion can simply rely on the migration reason
> instead of adding a dedicated migration mode and helper.
If that is the ultimate goal, why not do it in this series to avoid
code churn? You probably can coordinate with Shivank on how to move
the migration control refactoring code to this series.
>
> 2. Large folio copy optimization:
> Multi-page folios (such as 2MiB THP) are supported by iterating over
> constituent 4KiB pages via copy_mc_page_nt(). Once the batch page
> copy series [3] lands, copy_mc_page_nt() can be extended to copy an
> entire multi-page folio in a single invocation, eliminating per-4KiB
> loop overhead and keeping the prefetchnta stream uninterrupted.
>
> Thanks to Yiannis Nikolakopoulos, Alirad Malek, and Dimitrios
> Palyvos-Giannas for their original work, feedback, and collaboration.
>
> References
> ==========
> [1] https://lore.kernel.org/linux-mm/20260730-rfc-nt-demote-v2-0-452dbe3b5073@zptcorp.com/
> [2] https://lore.kernel.org/linux-mm/20260902-migrate-refactor-shivank-v1-9-9dcca87669c4@amd.com/
> [3] https://lore.kernel.org/linux-mm/20261019-batpagecopy-v2-1-d75e7d0dfaae@amd.com/
>
> Signed-off-by: Huan Nguyen <nhuhuan@google.com>
>
> Huan Nguyen (3):
> mm, x86: support copying a folio using non-temporal stores
> mm/migrate: introduce async non-temporal migration mode
> mm/vmscan: demote folios using non-temporal stores
>
> arch/x86/include/asm/page_64.h | 2 ++
> arch/x86/lib/copy_page_64.S | 65 ++++++++++++++++++++++++++++++++++
> fs/nfs/write.c | 2 +-
> include/linux/highmem.h | 21 +++++++++++
> include/linux/migrate.h | 5 +++
> include/linux/migrate_mode.h | 1 +
> include/linux/mm.h | 1 +
> include/trace/events/migrate.h | 1 +
> mm/compaction.c | 18 +++++-----
> mm/migrate.c | 29 +++++++++------
> mm/util.c | 29 +++++++++++++++
> mm/vmscan.c | 2 +-
> 12 files changed, 154 insertions(+), 22 deletions(-)
>
> base-commit: 05441d697f7f9a927264f4058cbbc6a03dfcac9d
> --
> 2.56.0.398.g882cbad275-goog
Best Regards,
Yan, Zi
prev parent reply other threads:[~2026-11-04 0:09 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-30 15:02 [PATCH RFC v2 0/3] Demote to lower tier using non-temporal stores Yiannis Nikolakopoulos
2026-07-30 15:02 ` [PATCH RFC v2 1/3] mm, x86: support copying a folio " Yiannis Nikolakopoulos
2026-07-31 21:53 ` Huan Nguyen
2026-08-17 16:34 ` Garg, Shivank
2026-07-30 15:02 ` [PATCH RFC v2 2/3] mm: new migrate_mode flag for async " Yiannis Nikolakopoulos
2026-08-05 14:14 ` Huang, Ying
2026-07-30 15:02 ` [PATCH RFC v2 3/3] mm: use non-temporal stores for demotion Yiannis Nikolakopoulos
2026-07-30 17:30 ` [PATCH RFC v2 0/3] Demote to lower tier using non-temporal stores Gregory Price
2026-07-30 17:40 ` Frank van der Linden
2026-07-30 18:08 ` Johannes Weiner
2026-07-30 20:49 ` Gregory Price
2026-11-03 22:30 ` [RFC PATCH v3 0/3] mm: use non-temporal stores for demotion Huan Nguyen
2026-11-03 22:30 ` [RFC PATCH v3 1/3] mm, x86: support copying a folio using non-temporal stores Huan Nguyen
2026-11-03 22:30 ` [RFC PATCH v3 2/3] mm/migrate: introduce async non-temporal migration mode Huan Nguyen
2026-11-03 22:30 ` [RFC PATCH v3 3/3] mm/vmscan: demote folios using non-temporal stores Huan Nguyen
2026-11-04 0:09 ` Zi Yan [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=7CF5AD15-B833-44E1-A9FE-C8E12F8C9E82@nvidia.com \
--to=ziy@nvidia.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=alirad.malek@zptcorp.com \
--cc=anna@kernel.org \
--cc=apopple@nvidia.com \
--cc=bharata@amd.com \
--cc=bp@alien8.de \
--cc=byungchul@sk.com \
--cc=dave.hansen@linux.intel.com \
--cc=dave@stgolabs.net \
--cc=david@kernel.org \
--cc=dimitrios.palyvos@zptcorp.com \
--cc=fvdl@google.com \
--cc=gourry@gourry.net \
--cc=hannes@cmpxchg.org \
--cc=hpa@zytor.com \
--cc=jackmanb@google.com \
--cc=jic23@kernel.org \
--cc=joshua.hahnjy@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-nfs@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=ljs@kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=matthew.brost@intel.com \
--cc=mhiramat@kernel.org \
--cc=mhocko@suse.com \
--cc=mingo@redhat.com \
--cc=nhuhuan@google.com \
--cc=nifan.cxl@gmail.com \
--cc=rakie.kim@sk.com \
--cc=rientjes@google.com \
--cc=rkodsara@amd.com \
--cc=rostedt@goodmis.org \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=shivankg@amd.com \
--cc=sj@kernel.org \
--cc=surenb@google.com \
--cc=tglx@kernel.org \
--cc=trondmy@kernel.org \
--cc=vbabka@kernel.org \
--cc=weixugc@google.com \
--cc=x86@kernel.org \
--cc=xuezhengchu@huawei.com \
--cc=yiannis.nikolakop@gmail.com \
--cc=yiannis@zptcorp.com \
--cc=ying.huang@linux.alibaba.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
all inboxes | Powered by JetHome®