From: Lorenzo Stoakes <ljs@kernel.org>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: linux-kernel@vger.kernel.org,
"David Hildenbrand (Arm)" <david@kernel.org>,
"Jason Wang" <jasowang@redhat.com>,
"Xuan Zhuo" <xuanzhuo@linux.alibaba.com>,
"Eugenio Pérez" <eperezma@redhat.com>,
"Muchun Song" <muchun.song@linux.dev>,
"Oscar Salvador" <osalvador@suse.de>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Liam R. Howlett" <liam@infradead.org>,
"Vlastimil Babka" <vbabka@kernel.org>,
"Mike Rapoport" <rppt@kernel.org>,
"Suren Baghdasaryan" <surenb@google.com>,
"Michal Hocko" <mhocko@suse.com>,
"Brendan Jackman" <jackmanb@google.com>,
"Johannes Weiner" <hannes@cmpxchg.org>, "Zi Yan" <ziy@nvidia.com>,
"Baolin Wang" <baolin.wang@linux.alibaba.com>,
"Nico Pache" <npache@redhat.com>,
"Ryan Roberts" <ryan.roberts@arm.com>,
"Dev Jain" <dev.jain@arm.com>, "Barry Song" <baohua@kernel.org>,
"Lance Yang" <lance.yang@linux.dev>,
"Hugh Dickins" <hughd@google.com>,
"Matthew Brost" <matthew.brost@intel.com>,
"Joshua Hahn" <joshua.hahnjy@gmail.com>,
"Rakie Kim" <rakie.kim@sk.com>,
"Byungchul Park" <byungchul@sk.com>,
"Gregory Price" <gourry@gourry.net>,
"Ying Huang" <ying.huang@linux.alibaba.com>,
"Alistair Popple" <apopple@nvidia.com>,
"Christoph Lameter" <cl@gentwo.org>,
"David Rientjes" <rientjes@google.com>,
"Roman Gushchin" <roman.gushchin@linux.dev>,
"Harry Yoo" <harry.yoo@oracle.com>,
"Axel Rasmussen" <axelrasmussen@google.com>,
"Yuanchu Xie" <yuanchu@google.com>, "Wei Xu" <weixugc@google.com>,
"Chris Li" <chrisl@kernel.org>,
"Kairui Song" <kasong@tencent.com>,
"Kemeng Shi" <shikemeng@huaweicloud.com>,
"Nhat Pham" <nphamcs@gmail.com>, "Baoquan He" <bhe@redhat.com>,
virtualization@lists.linux.dev, linux-mm@kvack.org,
"Andrea Arcangeli" <aarcange@redhat.com>
Subject: Re: [PATCH v10 29/37] mm: memfd: skip zeroing for zeroed hugetlb pool pages
Date: Mon, 8 Jun 2026 13:47:42 +0100 [thread overview]
Message-ID: <aia5QJcMcnwtVZdM@lucifer> (raw)
In-Reply-To: <0d6c2d31f48ff454223ad4f1d37ef7b73263bf5d.1780906288.git.mst@redhat.com>
On Mon, Jun 08, 2026 at 04:39:37AM -0400, Michael S. Tsirkin wrote:
> Add bool *zeroed output to alloc_hugetlb_folio_reserve() so
> callers can check whether the pool page is known-zero. memfd's
> memfd_alloc_folio() uses this to skip the explicit folio_zero_user()
> when the page is already zero.
But why does memfd do that?
This is more AI-ish 'write out in English what the code does' which isn't
really helpful.
>
> This avoids redundant zeroing for memfd hugetlb pages that were
> pre-allocated into the pool and never mapped to userspace.
I think this should lead the commit message given it seems to be the whole
intent no?
>
> Note: HPG_zeroed is currently only set for surplus pages
> allocated with __GFP_ZERO (via alloc_surplus_hugetlb_folio),
> not for pool pages from alloc_pool_huge_folio. So the
> zeroed output from alloc_hugetlb_folio_reserve is typically
> false for pool-only reservations. It becomes true when
> surplus pages fill the reservation. The addr_hint 0 passed
> to folio_zero_user is acceptable for memfd: these pages are
> not mapped yet and will get proper dcache handling at mmap
> time via the page fault path.
This paragraph is really hard to read, and you don't seem to propagate the
same very specific information in the code so people maintaining it don't
know what's going on.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> Assisted-by: Claude:claude-opus-4-6
This is committing the sins of the rest and adding more complexity
throughout.
The whole approach needs a rework I think, but hugetlbfs stuff should be
deferred in general.
> ---
> include/linux/cma.h | 3 ++-
> include/linux/hugetlb.h | 6 ++++--
> mm/cma.c | 6 ++++--
> mm/hugetlb.c | 11 +++++++++--
> mm/hugetlb_cma.c | 4 ++--
> mm/memfd.c | 14 ++++++++------
> 6 files changed, 29 insertions(+), 15 deletions(-)
>
> diff --git a/include/linux/cma.h b/include/linux/cma.h
> index 8555d38a97b1..dee88909cf5d 100644
> --- a/include/linux/cma.h
> +++ b/include/linux/cma.h
> @@ -53,7 +53,8 @@ extern bool cma_release(struct cma *cma, const struct page *pages, unsigned long
>
> struct page *cma_alloc_frozen(struct cma *cma, unsigned long count,
> unsigned int align, bool no_warn);
> -struct page *cma_alloc_frozen_compound(struct cma *cma, unsigned int order);
> +struct page *cma_alloc_frozen_compound(struct cma *cma, unsigned int order,
> + gfp_t caller_gfp);
> bool cma_release_frozen(struct cma *cma, const struct page *pages,
> unsigned long count);
>
> diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
> index 06d033a57a61..7eb529eabe99 100644
> --- a/include/linux/hugetlb.h
> +++ b/include/linux/hugetlb.h
> @@ -708,7 +708,8 @@ struct folio *alloc_hugetlb_folio_nodemask(struct hstate *h, int preferred_nid,
> nodemask_t *nmask, gfp_t gfp_mask,
> bool allow_alloc_fallback);
> struct folio *alloc_hugetlb_folio_reserve(struct hstate *h, int preferred_nid,
> - nodemask_t *nmask, gfp_t gfp_mask);
> + nodemask_t *nmask, gfp_t gfp_mask,
> + bool *zeroed);
>
> int hugetlb_add_to_page_cache(struct folio *folio, struct address_space *mapping,
> pgoff_t idx);
> @@ -1128,7 +1129,8 @@ static inline void wait_for_freed_hugetlb_folios(void)
>
> static inline struct folio *
> alloc_hugetlb_folio_reserve(struct hstate *h, int preferred_nid,
> - nodemask_t *nmask, gfp_t gfp_mask)
> + nodemask_t *nmask, gfp_t gfp_mask,
> + bool *zeroed)
> {
> return NULL;
> }
> diff --git a/mm/cma.c b/mm/cma.c
> index c7ca567f4c5c..27971f6264ab 100644
> --- a/mm/cma.c
> +++ b/mm/cma.c
> @@ -924,9 +924,11 @@ struct page *cma_alloc_frozen(struct cma *cma, unsigned long count,
> return __cma_alloc_frozen(cma, count, align, gfp);
> }
>
> -struct page *cma_alloc_frozen_compound(struct cma *cma, unsigned int order)
> +struct page *cma_alloc_frozen_compound(struct cma *cma, unsigned int order,
> + gfp_t caller_gfp)
> {
> - gfp_t gfp = GFP_KERNEL | __GFP_COMP | __GFP_NOWARN;
> + gfp_t gfp = GFP_KERNEL | __GFP_COMP | __GFP_NOWARN |
> + (caller_gfp & __GFP_ZERO);
>
> return __cma_alloc_frozen(cma, 1 << order, order, gfp);
> }
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index ed00db703911..a087e915783f 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -2196,7 +2196,7 @@ struct folio *alloc_buddy_hugetlb_folio_with_mpol(struct hstate *h,
> }
>
> struct folio *alloc_hugetlb_folio_reserve(struct hstate *h, int preferred_nid,
> - nodemask_t *nmask, gfp_t gfp_mask)
> + nodemask_t *nmask, gfp_t gfp_mask, bool *zeroed)
> {
> struct folio *folio;
>
> @@ -2212,6 +2212,12 @@ struct folio *alloc_hugetlb_folio_reserve(struct hstate *h, int preferred_nid,
> h->resv_huge_pages--;
>
> spin_unlock_irq(&hugetlb_lock);
> +
> + if (zeroed && folio) {
> + *zeroed = folio_test_hugetlb_zeroed(folio);
> + folio_clear_hugetlb_zeroed(folio);
> + }
> +
> return folio;
> }
>
> @@ -2296,7 +2302,8 @@ static int gather_surplus_pages(struct hstate *h, long delta)
> * It is okay to use NUMA_NO_NODE because we use numa_mem_id()
> * down the road to pick the current node if that is the case.
> */
> - folio = alloc_surplus_hugetlb_folio(h, htlb_alloc_mask(h),
> + folio = alloc_surplus_hugetlb_folio(h,
> + htlb_alloc_mask(h),
> NUMA_NO_NODE, &alloc_nodemask,
> USER_ADDR_NONE);
> if (!folio) {
> diff --git a/mm/hugetlb_cma.c b/mm/hugetlb_cma.c
> index 7693ccefd0c6..c9266b25be3d 100644
> --- a/mm/hugetlb_cma.c
> +++ b/mm/hugetlb_cma.c
> @@ -35,14 +35,14 @@ struct folio *hugetlb_cma_alloc_frozen_folio(int order, gfp_t gfp_mask,
> return NULL;
>
> if (hugetlb_cma[nid])
> - page = cma_alloc_frozen_compound(hugetlb_cma[nid], order);
> + page = cma_alloc_frozen_compound(hugetlb_cma[nid], order, gfp_mask);
>
> if (!page && !(gfp_mask & __GFP_THISNODE)) {
> for_each_node_mask(node, *nodemask) {
> if (node == nid || !hugetlb_cma[node])
> continue;
>
> - page = cma_alloc_frozen_compound(hugetlb_cma[node], order);
> + page = cma_alloc_frozen_compound(hugetlb_cma[node], order, gfp_mask);
> if (page)
> break;
> }
> diff --git a/mm/memfd.c b/mm/memfd.c
> index abe13b291ddc..a99617a62e33 100644
> --- a/mm/memfd.c
> +++ b/mm/memfd.c
> @@ -69,6 +69,7 @@ struct folio *memfd_alloc_folio(struct file *memfd, pgoff_t idx)
> #ifdef CONFIG_HUGETLB_PAGE
> struct folio *folio;
> gfp_t gfp_mask;
> + bool zeroed;
>
> if (is_file_hugepages(memfd)) {
> /*
> @@ -93,17 +94,18 @@ struct folio *memfd_alloc_folio(struct file *memfd, pgoff_t idx)
> folio = alloc_hugetlb_folio_reserve(h,
> numa_node_id(),
> NULL,
> - gfp_mask);
> + gfp_mask,
> + &zeroed);
> if (folio) {
> u32 hash;
>
> /*
> - * Zero the folio to prevent information leaks to userspace.
> - * Use folio_zero_user() which is optimized for huge/gigantic
> - * pages. Pass 0 as addr_hint since this is not a faulting path
> - * and we don't have a user virtual address yet.
> + * Zero the folio to prevent information leaks to
> + * userspace. Skip if the pool page is known-zero
> + * (HPG_zeroed set during pool pre-allocation).
> */
> - folio_zero_user(folio, 0);
> + if (!zeroed)
> + folio_zero_user(folio, 0);
>
> /*
> * Mark the folio uptodate before adding to page cache,
> --
> MST
>
Thanks, Lorenzo
next prev parent reply other threads:[~2026-06-08 12:47 UTC|newest]
Thread overview: 119+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-08 8:33 [PATCH v10 00/37] mm/virtio: skip redundant zeroing of host-zeroed pages Michael S. Tsirkin
2026-06-08 8:34 ` [PATCH v10 01/37] mm: mempolicy: fix interleave index calculation Michael S. Tsirkin
2026-06-08 9:43 ` Lorenzo Stoakes
2026-06-08 8:34 ` [PATCH v10 02/37] mm: memory-failure: serialize TestSetPageHWPoison with zone->lock Michael S. Tsirkin
2026-06-08 9:43 ` Lorenzo Stoakes
2026-06-08 13:48 ` Michael S. Tsirkin
2026-06-08 14:14 ` Lorenzo Stoakes
2026-06-08 20:17 ` Michael S. Tsirkin
2026-06-08 16:20 ` Andrew Morton
2026-06-08 8:34 ` [PATCH v10 03/37] mm: page_alloc: propagate PageReported flag across buddy splits Michael S. Tsirkin
2026-06-08 9:52 ` Lorenzo Stoakes
2026-06-08 12:50 ` Matthew Wilcox
2026-06-08 8:34 ` [PATCH v10 04/37] mm: page_reporting: allow driver to set batch capacity Michael S. Tsirkin
2026-06-08 8:34 ` [PATCH v10 05/37] mm: hugetlb: remove dead alloc_hugetlb_folio stub Michael S. Tsirkin
2026-06-08 9:56 ` Lorenzo Stoakes
2026-06-08 8:35 ` [PATCH v10 06/37] mm: move vma_alloc_folio_noprof to page_alloc.c Michael S. Tsirkin
2026-06-08 10:05 ` Lorenzo Stoakes
2026-06-08 8:35 ` [PATCH v10 07/37] mm: thread user_addr through page allocator for cache-friendly zeroing Michael S. Tsirkin
2026-06-08 10:23 ` Lorenzo Stoakes
2026-06-08 11:06 ` Lorenzo Stoakes
2026-06-08 13:04 ` Matthew Wilcox
2026-06-08 13:09 ` Lorenzo Stoakes
2026-06-08 14:26 ` David Hildenbrand (Arm)
2026-06-08 14:31 ` Matthew Wilcox
2026-06-08 14:37 ` David Hildenbrand (Arm)
2026-06-08 14:44 ` Matthew Wilcox
2026-06-08 14:55 ` David Hildenbrand (Arm)
2026-06-08 19:33 ` Michael S. Tsirkin
2026-06-08 19:59 ` Gregory Price
2026-06-08 20:21 ` Zi Yan
2026-06-08 20:33 ` Michael S. Tsirkin
2026-06-08 20:40 ` Zi Yan
2026-06-08 21:04 ` Michael S. Tsirkin
2026-06-08 21:16 ` Zi Yan
2026-06-08 11:08 ` David Hildenbrand (Arm)
2026-06-08 15:27 ` Zi Yan
2026-06-08 18:39 ` David Hildenbrand (Arm)
2026-06-08 19:43 ` Gregory Price
2026-06-08 19:52 ` Zi Yan
2026-06-08 20:25 ` Gregory Price
2026-06-08 20:37 ` Zi Yan
2026-06-08 20:56 ` Gregory Price
2026-06-08 21:03 ` Michael S. Tsirkin
2026-06-08 8:35 ` [PATCH v10 08/37] mm: add alloc_contig_frozen_pages_user " Michael S. Tsirkin
2026-06-08 10:29 ` Lorenzo Stoakes
2026-06-08 8:35 ` [PATCH v10 09/37] mm: hugetlb: thread user_addr through gigantic page allocation Michael S. Tsirkin
2026-06-08 8:36 ` [PATCH v10 10/37] mm: add folio_zero_user stub for configs without THP/HUGETLBFS Michael S. Tsirkin
2026-06-08 9:12 ` Lorenzo Stoakes
2026-06-08 8:36 ` [PATCH v10 11/37] mm: page_alloc: move prep_compound_page before post_alloc_hook Michael S. Tsirkin
2026-06-08 10:33 ` Lorenzo Stoakes
2026-06-08 8:36 ` [PATCH v10 12/37] mm: use folio_zero_user for user pages in post_alloc_hook Michael S. Tsirkin
2026-06-08 11:23 ` Lorenzo Stoakes
2026-06-08 15:53 ` Gregory Price
2026-06-08 19:45 ` Michael S. Tsirkin
2026-06-08 20:16 ` Gregory Price
2026-06-08 20:30 ` Michael S. Tsirkin
2026-06-08 20:53 ` Gregory Price
2026-06-08 21:16 ` Michael S. Tsirkin
2026-06-08 19:42 ` Michael S. Tsirkin
2026-06-08 8:36 ` [PATCH v10 13/37] mm: use __GFP_ZERO in vma_alloc_zeroed_movable_folio Michael S. Tsirkin
2026-06-08 10:39 ` Lorenzo Stoakes
2026-06-08 10:55 ` Lorenzo Stoakes
2026-06-08 8:37 ` [PATCH v10 14/37] mm: remove arch vma_alloc_zeroed_movable_folio overrides Michael S. Tsirkin
2026-06-08 11:29 ` Lorenzo Stoakes
2026-06-08 8:37 ` [PATCH v10 15/37] mm: alloc_anon_folio: pass raw fault address to vma_alloc_folio Michael S. Tsirkin
2026-06-08 11:35 ` Lorenzo Stoakes
2026-06-08 8:37 ` [PATCH v10 16/37] mm: alloc_swap_folio: " Michael S. Tsirkin
2026-06-08 11:37 ` Lorenzo Stoakes
2026-06-08 15:59 ` Gregory Price
2026-06-08 20:09 ` Michael S. Tsirkin
2026-06-08 8:37 ` [PATCH v10 17/37] mm: page_reporting: skip redundant zeroing of host-zeroed reported pages Michael S. Tsirkin
2026-06-08 12:00 ` Lorenzo Stoakes
2026-06-08 16:09 ` Gregory Price
2026-06-08 18:40 ` Matthew Wilcox
2026-06-08 19:55 ` Michael S. Tsirkin
2026-06-08 8:38 ` [PATCH v10 18/37] mm: page_alloc: use aliasing checks instead of user_alloc_needs_zeroing Michael S. Tsirkin
2026-06-08 11:39 ` Lorenzo Stoakes
2026-06-08 8:38 ` [PATCH v10 19/37] mm: page_alloc: clear PG_zeroed on buddy merge if not both zero Michael S. Tsirkin
2026-06-08 11:47 ` Lorenzo Stoakes
2026-06-08 8:38 ` [PATCH v10 20/37] mm: page_alloc: preserve PG_zeroed in page_del_and_expand Michael S. Tsirkin
2026-06-08 8:38 ` [PATCH v10 21/37] mm: page_alloc: propagate PG_zeroed in split_large_buddy Michael S. Tsirkin
2026-06-08 8:38 ` [PATCH v10 22/37] mm: add free_frozen_pages_zeroed Michael S. Tsirkin
2026-06-08 12:06 ` Lorenzo Stoakes
2026-06-08 8:38 ` [PATCH v10 23/37] mm: page_alloc: skip kernel_init_pages for FPI_ZEROED when safe Michael S. Tsirkin
2026-06-08 12:18 ` Lorenzo Stoakes
2026-06-08 8:38 ` [PATCH v10 24/37] mm: add put_page_zeroed and folio_put_zeroed Michael S. Tsirkin
2026-06-08 12:25 ` Lorenzo Stoakes
2026-06-08 12:46 ` David Hildenbrand (Arm)
2026-06-08 14:08 ` Michael S. Tsirkin
2026-06-08 14:28 ` David Hildenbrand (Arm)
2026-06-08 19:58 ` Michael S. Tsirkin
2026-06-08 8:39 ` [PATCH v10 25/37] mm: use __GFP_ZERO in alloc_anon_folio Michael S. Tsirkin
2026-06-08 12:29 ` Lorenzo Stoakes
2026-06-08 8:39 ` [PATCH v10 26/37] mm: vma_alloc_anon_folio_pmd: pass raw fault address to vma_alloc_folio Michael S. Tsirkin
2026-06-08 12:30 ` Lorenzo Stoakes
2026-06-08 8:39 ` [PATCH v10 27/37] mm: use __GFP_ZERO in vma_alloc_anon_folio_pmd Michael S. Tsirkin
2026-06-08 12:32 ` Lorenzo Stoakes
2026-06-08 8:39 ` [PATCH v10 28/37] mm: hugetlb: add gfp parameter and skip zeroing for zeroed pages Michael S. Tsirkin
2026-06-08 12:44 ` Lorenzo Stoakes
2026-06-08 8:39 ` [PATCH v10 29/37] mm: memfd: skip zeroing for zeroed hugetlb pool pages Michael S. Tsirkin
2026-06-08 12:47 ` Lorenzo Stoakes [this message]
2026-06-08 8:39 ` [PATCH v10 30/37] mm: page_reporting: add per-page zeroed bitmap for host feedback Michael S. Tsirkin
2026-06-08 8:39 ` [PATCH v10 31/37] virtio_balloon: submit reported pages as individual buffers Michael S. Tsirkin
2026-06-08 8:40 ` [PATCH v10 32/37] virtio_balloon: disable indirect descriptors Michael S. Tsirkin
2026-06-08 8:40 ` [PATCH v10 33/37] mm: page_reporting: add flush parameter with page budget Michael S. Tsirkin
2026-06-08 8:40 ` [PATCH v10 34/37] virtio_balloon: skip zeroing for host-zeroed reported pages Michael S. Tsirkin
2026-06-08 8:40 ` [PATCH v10 35/37] virtio_balloon: disable reporting zeroed optimization for confidential guests Michael S. Tsirkin
2026-06-08 8:40 ` [PATCH v10 36/37] mm: balloon: use put_page_zeroed for zeroed balloon pages Michael S. Tsirkin
2026-06-08 11:10 ` David Hildenbrand (Arm)
2026-06-08 8:40 ` [PATCH v10 37/37] virtio_balloon: implement VIRTIO_BALLOON_F_DEVICE_INIT_ON_INFLATE Michael S. Tsirkin
2026-06-08 9:17 ` [PATCH v10 00/37] mm/virtio: skip redundant zeroing of host-zeroed pages Lorenzo Stoakes
2026-06-08 12:52 ` Lorenzo Stoakes
2026-06-08 11:02 ` Vlastimil Babka (SUSE)
2026-06-08 11:13 ` Vlastimil Babka (SUSE)
2026-06-08 15:45 ` Gregory Price
2026-06-08 17:50 ` Lorenzo Stoakes
2026-06-08 19:39 ` Michael S. Tsirkin
2026-06-08 14:21 ` Matthew Wilcox
2026-06-08 20:02 ` Michael S. Tsirkin
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=aia5QJcMcnwtVZdM@lucifer \
--to=ljs@kernel.org \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=apopple@nvidia.com \
--cc=axelrasmussen@google.com \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=bhe@redhat.com \
--cc=byungchul@sk.com \
--cc=chrisl@kernel.org \
--cc=cl@gentwo.org \
--cc=david@kernel.org \
--cc=dev.jain@arm.com \
--cc=eperezma@redhat.com \
--cc=gourry@gourry.net \
--cc=hannes@cmpxchg.org \
--cc=harry.yoo@oracle.com \
--cc=hughd@google.com \
--cc=jackmanb@google.com \
--cc=jasowang@redhat.com \
--cc=joshua.hahnjy@gmail.com \
--cc=kasong@tencent.com \
--cc=lance.yang@linux.dev \
--cc=liam@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=matthew.brost@intel.com \
--cc=mhocko@suse.com \
--cc=mst@redhat.com \
--cc=muchun.song@linux.dev \
--cc=npache@redhat.com \
--cc=nphamcs@gmail.com \
--cc=osalvador@suse.de \
--cc=rakie.kim@sk.com \
--cc=rientjes@google.com \
--cc=roman.gushchin@linux.dev \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=shikemeng@huaweicloud.com \
--cc=surenb@google.com \
--cc=vbabka@kernel.org \
--cc=virtualization@lists.linux.dev \
--cc=weixugc@google.com \
--cc=xuanzhuo@linux.alibaba.com \
--cc=ying.huang@linux.alibaba.com \
--cc=yuanchu@google.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