From: "Michael S. Tsirkin" <mst@redhat.com>
To: Gregory Price <gourry@gourry.net>
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>,
"Lorenzo Stoakes" <ljs@kernel.org>,
"Liam R. Howlett" <Liam.Howlett@oracle.com>,
"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>,
"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 resend v6 14/30] mm: hugetlb: use __GFP_ZERO and skip zeroing for zeroed pages
Date: Mon, 11 May 2026 17:47:48 -0400 [thread overview]
Message-ID: <20260511174337-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <agIFq63QZugkWcXJ@gourry-fedora-PF4VCD3F>
On Mon, May 11, 2026 at 12:36:59PM -0400, Gregory Price wrote:
> On Mon, May 11, 2026 at 05:03:02AM -0400, Michael S. Tsirkin wrote:
> > Convert the hugetlb fault and fallocate paths to use __GFP_ZERO.
> > For pages allocated from the buddy allocator, post_alloc_hook()
> > handles zeroing.
> >
> > Hugetlb surplus pages need special handling because they can be
> > pre-allocated into the pool during mmap (by hugetlb_acct_memory)
> > before any page fault. Pool pages are kept around and may need
> > zeroing long after buddy allocation, so a buddy-level zeroed
> > hint (consumed at allocation time) cannot track their state.
> >
> > Add a bool *zeroed output parameter to alloc_hugetlb_folio()
> > so callers know whether the page needs zeroing. Buddy-allocated
> > pages are always zeroed (zeroed by post_alloc_hook). Pool
> > pages use a new HPG_zeroed flag to track whether the page is
> > known-zero (freshly buddy-allocated, never mapped to userspace).
> > The flag is set in alloc_surplus_hugetlb_folio() after buddy
> > allocation and cleared in free_huge_folio() when a user-mapped
> > page returns to the pool.
> >
> > Callers that do not need zeroing (CoW, migration) pass NULL for
> > zeroed and 0 for gfp.
> >
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > Assisted-by: Claude:claude-opus-4-6
> > Assisted-by: cursor-agent:GPT-5.4-xhigh
> > ---
> > fs/hugetlbfs/inode.c | 10 ++++++--
> > include/linux/hugetlb.h | 8 +++++--
> > mm/hugetlb.c | 52 ++++++++++++++++++++++++++++++-----------
> > 3 files changed, 53 insertions(+), 17 deletions(-)
> >
> > diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
> > index 8b05bec08e04..24e42cb10ade 100644
> > --- a/fs/hugetlbfs/inode.c
> > +++ b/fs/hugetlbfs/inode.c
> > @@ -810,14 +810,20 @@ static long hugetlbfs_fallocate(struct file *file, int mode, loff_t offset,
> > * folios in these areas, we need to consume the reserves
> > * to keep reservation accounting consistent.
> > */
> > - folio = alloc_hugetlb_folio(&pseudo_vma, addr, false);
> > + {
> > + bool zeroed;
> > +
> > + folio = alloc_hugetlb_folio(&pseudo_vma, addr, false,
> > + __GFP_ZERO, &zeroed);
>
> This feels like a very odd pattern:
>
> 1) ask for __GFP_ZERO
> 2) Have to check whether it was actually zeroed
>
> Seems like the zeroing piece should just be sunk in if you're going to
> ask for __GFP_ZERO anyway. And in that case, maybe just `bool zero` as
> an argument, rather than GFP (to avoid future overloading of flags).
>
> ~Gregory
Heh. The reason is that it either allocates from buddy - using gfp flags
or from the pool, in which case it zeroes.
We could even avoid the bool - just test __GFP_ZERO inside
alloc_hugetlb_folio. Would that be better?
--
MST
next prev parent reply other threads:[~2026-05-11 21:48 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-11 9:01 [PATCH resend v6 00/30] mm/virtio: skip redundant zeroing of host-zeroed pages Michael S. Tsirkin
2026-05-11 9:01 ` [PATCH resend v6 01/30] mm: move vma_alloc_folio_noprof to page_alloc.c Michael S. Tsirkin
2026-05-11 14:47 ` Gregory Price
2026-05-11 15:09 ` Michael S. Tsirkin
2026-05-11 9:01 ` [PATCH resend v6 02/30] mm: mempolicy: fix interleave index for unaligned VMA start Michael S. Tsirkin
2026-05-11 14:59 ` Gregory Price
2026-05-11 15:15 ` Michael S. Tsirkin
2026-05-11 15:26 ` Michael S. Tsirkin
2026-05-11 9:01 ` [PATCH resend v6 03/30] mm: thread user_addr through page allocator for cache-friendly zeroing Michael S. Tsirkin
2026-05-11 15:37 ` Gregory Price
2026-05-11 15:55 ` Michael S. Tsirkin
2026-05-11 16:52 ` Gregory Price
2026-05-11 21:59 ` Michael S. Tsirkin
2026-05-12 2:50 ` Gregory Price
2026-05-12 18:06 ` Michael S. Tsirkin
2026-05-11 9:02 ` [PATCH resend v6 04/30] mm: add folio_zero_user stub for configs without THP/HUGETLBFS Michael S. Tsirkin
2026-05-11 9:02 ` [PATCH resend v6 05/30] mm: page_alloc: move prep_compound_page before post_alloc_hook Michael S. Tsirkin
2026-05-11 15:54 ` Gregory Price
2026-05-11 9:02 ` [PATCH resend v6 06/30] mm: use folio_zero_user for user pages in post_alloc_hook Michael S. Tsirkin
2026-05-11 9:02 ` [PATCH resend v6 07/30] mm: use __GFP_ZERO in vma_alloc_zeroed_movable_folio Michael S. Tsirkin
2026-05-11 9:02 ` [PATCH resend v6 08/30] mm: remove arch vma_alloc_zeroed_movable_folio overrides Michael S. Tsirkin
2026-05-11 9:02 ` [PATCH resend v6 09/30] mm: alloc_anon_folio: pass raw fault address to vma_alloc_folio Michael S. Tsirkin
2026-05-11 16:03 ` Gregory Price
2026-05-11 9:02 ` [PATCH resend v6 10/30] mm: alloc_swap_folio: " Michael S. Tsirkin
2026-05-11 16:05 ` Gregory Price
2026-05-11 21:41 ` Michael S. Tsirkin
2026-05-11 21:52 ` Gregory Price
2026-05-11 22:02 ` Michael S. Tsirkin
2026-05-11 9:02 ` [PATCH resend v6 11/30] mm: use __GFP_ZERO in alloc_anon_folio Michael S. Tsirkin
2026-05-11 16:15 ` Gregory Price
2026-05-11 9:02 ` [PATCH resend v6 12/30] mm: vma_alloc_anon_folio_pmd: pass raw fault address to vma_alloc_folio Michael S. Tsirkin
2026-05-11 16:17 ` Gregory Price
2026-05-11 9:02 ` [PATCH resend v6 13/30] mm: use __GFP_ZERO in vma_alloc_anon_folio_pmd Michael S. Tsirkin
2026-05-11 16:26 ` Gregory Price
2026-05-11 9:03 ` [PATCH resend v6 14/30] mm: hugetlb: use __GFP_ZERO and skip zeroing for zeroed pages Michael S. Tsirkin
2026-05-11 16:36 ` Gregory Price
2026-05-11 21:47 ` Michael S. Tsirkin [this message]
2026-05-12 2:49 ` Gregory Price
2026-05-12 16:35 ` Michael S. Tsirkin
2026-05-11 9:03 ` [PATCH resend v6 15/30] mm: memfd: skip zeroing for zeroed hugetlb pool pages Michael S. Tsirkin
2026-05-11 16:39 ` Gregory Price
2026-05-11 9:03 ` [PATCH resend v6 16/30] mm: page_reporting: allow driver to set batch capacity Michael S. Tsirkin
2026-05-11 9:03 ` [PATCH resend v6 17/30] mm: page_alloc: propagate PageReported flag across buddy splits Michael S. Tsirkin
2026-05-12 15:40 ` Gregory Price
2026-05-12 15:46 ` Michael S. Tsirkin
2026-05-11 9:03 ` [PATCH resend v6 18/30] mm: page_reporting: skip redundant zeroing of host-zeroed reported pages Michael S. Tsirkin
2026-05-11 9:03 ` [PATCH resend v6 19/30] mm: page_reporting: add per-page zeroed bitmap for host feedback Michael S. Tsirkin
2026-05-11 9:03 ` [PATCH resend v6 20/30] mm: page_alloc: clear PG_zeroed on buddy merge if not both zero Michael S. Tsirkin
2026-05-12 15:56 ` Gregory Price
2026-05-12 15:58 ` Michael S. Tsirkin
2026-05-12 16:32 ` Gregory Price
2026-05-12 21:06 ` Michael S. Tsirkin
2026-05-11 9:03 ` [PATCH resend v6 21/30] mm: page_alloc: preserve PG_zeroed in page_del_and_expand Michael S. Tsirkin
2026-05-12 15:58 ` Gregory Price
2026-05-11 9:03 ` [PATCH resend v6 22/30] virtio_balloon: submit reported pages as individual buffers Michael S. Tsirkin
2026-05-11 9:03 ` [PATCH resend v6 23/30] mm: page_reporting: add flush parameter with page budget Michael S. Tsirkin
2026-05-11 9:03 ` [PATCH resend v6 24/30] mm: page_alloc: propagate PG_zeroed in split_large_buddy Michael S. Tsirkin
2026-05-11 9:04 ` [PATCH resend v6 25/30] virtio_balloon: skip zeroing for host-zeroed reported pages Michael S. Tsirkin
2026-05-11 9:04 ` [PATCH resend v6 26/30] virtio_balloon: disable reporting zeroed optimization for confidential guests Michael S. Tsirkin
2026-05-11 9:04 ` [PATCH resend v6 27/30] mm: add free_frozen_pages_zeroed Michael S. Tsirkin
2026-05-11 9:04 ` [PATCH resend v6 28/30] mm: add put_page_zeroed and folio_put_zeroed Michael S. Tsirkin
2026-05-12 16:05 ` Gregory Price
2026-05-11 9:04 ` [PATCH resend v6 29/30] virtio_balloon: implement VIRTIO_BALLOON_F_DEVICE_INIT_ON_INFLATE Michael S. Tsirkin
2026-05-11 9:04 ` [PATCH resend v6 30/30] mm: balloon: use put_page_zeroed for zeroed balloon pages 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=20260511174337-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=Liam.Howlett@oracle.com \
--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=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=matthew.brost@intel.com \
--cc=mhocko@suse.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 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.