All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: mm-commits@vger.kernel.org,lizhe.67@bytedance.com,akpm@linux-foundation.org
Subject: [to-be-updated] string-introduce-memcpy_nt-helpers.patch removed from -mm tree
Date: Thu, 02 Jul 2026 09:03:54 -0700	[thread overview]
Message-ID: <20260702160354.7C9BA1F000E9@smtp.kernel.org> (raw)


The quilt patch titled
     Subject: string: introduce memcpy_nt() helpers
has been removed from the -mm tree.  Its filename was
     string-introduce-memcpy_nt-helpers.patch

This patch was dropped because an updated version will be issued

------------------------------------------------------
From: "Li Zhe" <lizhe.67@bytedance.com>
Subject: string: introduce memcpy_nt() helpers
Date: Wed, 1 Jul 2026 17:05:51 +0800

Introduce memcpy_nt() and memcpy_nt_drain() for write-once copy sites that
want a named non-temporal copy primitive plus an explicit ordering point. 
On x86, place the arch-visible wrapper in arch/x86/include/asm/string_64.h
and map it to the existing memcpy_flushcache() backend plus sfence. 
Architectures that do not override the helper fall back to memcpy() and a
no-op drain in include/linux/string.h.

The immediate user is the ZONE_DEVICE template-copy path.  That path
populates struct page descriptors in a write-once pattern, so most
destination cachelines are not expected to be reused immediately after the
copy.  A regular cached memcpy() can therefore incur avoidable
write-allocate traffic and pollute the cache with data that has little
near-term reuse.

This interface lets callers request that non-temporal-copy semantics
directly, while x86 simply reuses the existing memcpy_flushcache() backend
instead of adding another generic memcpy-like wrapper with extra selection
policy above it.

Link: https://lore.kernel.org/20260701090553.62691-7-lizhe.67@bytedance.com
Signed-off-by: Li Zhe <lizhe.67@bytedance.com>
Cc: Alistair Popple <apopple@nvidia.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Balbir Singh <balbirs@nvidia.com>
Cc: "Borislav Petkov (AMD)" <bp@alien8.de>
Cc: David Hildenbrand <david@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Kees Cook <kees@kernel.org>
Cc: Mike Rapoport (Microsoft) <rppt@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 arch/x86/include/asm/string_64.h |   16 ++++++++++++++++
 include/linux/string.h           |   18 ++++++++++++++++++
 2 files changed, 34 insertions(+)

--- a/arch/x86/include/asm/string_64.h~string-introduce-memcpy_nt-helpers
+++ a/arch/x86/include/asm/string_64.h
@@ -100,6 +100,22 @@ static __always_inline void memcpy_flush
 	}
 	__memcpy_flushcache(dst, src, cnt);
 }
+
+#define __HAVE_ARCH_MEMCPY_NT 1
+/*
+ * Reuse the existing x86 flushcache backend as the nt copy primitive.
+ * Callers pair it with memcpy_nt_drain() when later stores must be
+ * ordered after the copy.
+ */
+static __always_inline void memcpy_nt(void *dst, const void *src, size_t cnt)
+{
+	memcpy_flushcache(dst, src, cnt);
+}
+
+static __always_inline void memcpy_nt_drain(void)
+{
+	asm volatile("sfence" : : : "memory");
+}
 #endif
 
 #endif /* __KERNEL__ */
--- a/include/linux/string.h~string-introduce-memcpy_nt-helpers
+++ a/include/linux/string.h
@@ -278,6 +278,24 @@ static inline void memcpy_flushcache(voi
 }
 #endif
 
+#ifndef __HAVE_ARCH_MEMCPY_NT
+/*
+ * memcpy_nt() requests a non-temporal copy when the architecture has a
+ * suitable backend. Callers must follow it with memcpy_nt_drain()
+ * before later normal stores that need to be ordered after the copy.
+ * Architectures that do not override it fall back to memcpy() and a
+ * no-op drain.
+ */
+static inline void memcpy_nt(void *dst, const void *src, size_t cnt)
+{
+	memcpy(dst, src, cnt);
+}
+
+static inline void memcpy_nt_drain(void)
+{
+}
+#endif
+
 void *memchr_inv(const void *s, int c, size_t n);
 char *strreplace(char *str, char old, char new);
 
_

Patches currently in -mm which might be from lizhe.67@bytedance.com are

x86-string-extend-memcpy_flushcache-fixed-size-fastpaths.patch
mm-use-memcpy_nt-in-zone-device-template-copies.patch


                 reply	other threads:[~2026-07-02 16:03 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20260702160354.7C9BA1F000E9@smtp.kernel.org \
    --to=akpm@linux-foundation.org \
    --cc=lizhe.67@bytedance.com \
    --cc=mm-commits@vger.kernel.org \
    /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.