[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 3/9] mm/huge_memory: support huge zero folio in vmf_insert_folio_pmd()
- To: David Hildenbrand <david@xxxxxxxxxx>
- From: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx>
- Date: Thu, 17 Jul 2025 16:47:50 +0100
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=VUK6RMNiEGcht6MZIdAyltFKHQhtIo79O24zgJULf3E=; b=WNWvblx68PWvM6kHHzrP0YjKVp08t8YbWn4uQieYsm/AnkueEzTextbYRmO541/LYX1kAd2dh5kWzsK+1UErWC+KM5s6tDEblJ0rtwRxPOVxZWzME9RZAZtjaK3cqNwy3nqDJ6oEBbE8UF8x8TMMTaGsv/yotXD5hh35Gcn1jYJ9YXMWsodE28h9312gs/IW1KZkwS5efZQStZJnTVSreAclvQU/Rc0Ql67o37+ol33GwLzTmJI+j7cWSmQzgcKeODXzKay7VQ4Te0seCkgJLeV80/IgQTw/2CPBU7izrqrvVxTYZC42tnoK0c8Ab9BXs2yDLru6yZg15GbCRH4Mrg==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VcU95HziCPjjg025XwyE82a8XWNlH5DJ1phT2+M6isCAVnwOXMsoHNcVjEMaKjGku9DpRFytgxukweRE8EBEe1Gforn6UhBhlDdXuqk0lUO1TooFozasniYCGe9O5b/lyamFReZUqqG2QfkAAkKBnwHo3/netdzcDjPLhJDphJsfgOKpKMXcJzHh+EgiSYI1ZqwnNs1023Iheqq8+BMSLwVkLkw1JMtoJWMOKtLDTsPF3zzwGeENcdqnL+mY9IUOLZzIj9XckRyVu6pdAr0hmDjlR2VnijrqpXVeG3DR70Zs2w1QS/NwCv/WMhSp4/ZUtEk4WKZ0hmrgNd7I3DxVxQ==
- Cc: linux-kernel@xxxxxxxxxxxxxxx, linux-mm@xxxxxxxxx, xen-devel@xxxxxxxxxxxxxxxxxxxx, linux-fsdevel@xxxxxxxxxxxxxxx, nvdimm@xxxxxxxxxxxxxxx, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>, Dan Williams <dan.j.williams@xxxxxxxxx>, Matthew Wilcox <willy@xxxxxxxxxxxxx>, Jan Kara <jack@xxxxxxx>, Alexander Viro <viro@xxxxxxxxxxxxxxxxxx>, Christian Brauner <brauner@xxxxxxxxxx>, "Liam R. Howlett" <Liam.Howlett@xxxxxxxxxx>, Vlastimil Babka <vbabka@xxxxxxx>, Mike Rapoport <rppt@xxxxxxxxxx>, Suren Baghdasaryan <surenb@xxxxxxxxxx>, Michal Hocko <mhocko@xxxxxxxx>, Zi Yan <ziy@xxxxxxxxxx>, Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>, Nico Pache <npache@xxxxxxxxxx>, Ryan Roberts <ryan.roberts@xxxxxxx>, Dev Jain <dev.jain@xxxxxxx>, Barry Song <baohua@xxxxxxxxxx>, Jann Horn <jannh@xxxxxxxxxx>, Pedro Falcato <pfalcato@xxxxxxx>, Hugh Dickins <hughd@xxxxxxxxxx>, Oscar Salvador <osalvador@xxxxxxx>, Lance Yang <lance.yang@xxxxxxxxx>
- Delivery-date: Thu, 17 Jul 2025 15:48:35 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
On Thu, Jul 17, 2025 at 01:52:06PM +0200, David Hildenbrand wrote:
> Just like we do for vmf_insert_page_mkwrite() -> ... ->
> insert_page_into_pte_locked() with the shared zeropage, support the
> huge zero folio in vmf_insert_folio_pmd().
>
> When (un)mapping the huge zero folio in page tables, we neither
> adjust the refcount nor the mapcount, just like for the shared zeropage.
>
> For now, the huge zero folio is not marked as special yet, although
> vm_normal_page_pmd() really wants to treat it as special. We'll change
> that next.
>
> Reviewed-by: Oscar Salvador <osalvador@xxxxxxx>
> Signed-off-by: David Hildenbrand <david@xxxxxxxxxx>
LGTM, so:
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx>
> ---
> mm/huge_memory.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> index 849feacaf8064..db08c37b87077 100644
> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -1429,9 +1429,11 @@ static vm_fault_t insert_pmd(struct vm_area_struct
> *vma, unsigned long addr,
> if (fop.is_folio) {
> entry = folio_mk_pmd(fop.folio, vma->vm_page_prot);
>
> - folio_get(fop.folio);
> - folio_add_file_rmap_pmd(fop.folio, &fop.folio->page, vma);
> - add_mm_counter(mm, mm_counter_file(fop.folio), HPAGE_PMD_NR);
> + if (!is_huge_zero_folio(fop.folio)) {
> + folio_get(fop.folio);
> + folio_add_file_rmap_pmd(fop.folio, &fop.folio->page,
> vma);
> + add_mm_counter(mm, mm_counter_file(fop.folio),
> HPAGE_PMD_NR);
> + }
> } else {
> entry = pmd_mkhuge(pfn_pmd(fop.pfn, prot));
> entry = pmd_mkspecial(entry);
> --
> 2.50.1
>
|