From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D5251C369DC for ; Mon, 28 Apr 2025 17:18:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E96016B00AE; Mon, 28 Apr 2025 13:18:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E3B5A6B00AD; Mon, 28 Apr 2025 13:18:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C8E426B00AE; Mon, 28 Apr 2025 13:18:29 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id A54566B00AC for ; Mon, 28 Apr 2025 13:18:29 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id CC88CC75B3 for ; Mon, 28 Apr 2025 17:18:29 +0000 (UTC) X-FDA: 83384111538.17.AE66EAA Received: from mail-qv1-f51.google.com (mail-qv1-f51.google.com [209.85.219.51]) by imf05.hostedemail.com (Postfix) with ESMTP id E31A6100015 for ; Mon, 28 Apr 2025 17:18:27 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="nqW/Nkz3"; spf=pass (imf05.hostedemail.com: domain of nifan.cxl@gmail.com designates 209.85.219.51 as permitted sender) smtp.mailfrom=nifan.cxl@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745860707; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=kjtKTj8iYaV5Lk4x0tdvWcE0jO5ltQORsyv2ZseCCwg=; b=WfPQ7RDBkRdskeFJn35xnLNcfChEkGEUk27VkqwIpWjXD0kM6WaD4xQGSldAoFnuU3ic/F cd0c2KqO2fAkyEnPjkcnZbeyvhYpxYZA+MyJUYnRWz7o8ZpNqWn0Gn9Dx0DFqeXkzsycX5 IIf0E1dKhk0Ovad+92gWbX8wWbZ6a0E= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="nqW/Nkz3"; spf=pass (imf05.hostedemail.com: domain of nifan.cxl@gmail.com designates 209.85.219.51 as permitted sender) smtp.mailfrom=nifan.cxl@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745860707; a=rsa-sha256; cv=none; b=tLSaNunSVa2Ij7QJefBJdaXOBFFT9HTOB1zqu3/mcQXBOYx46NEyr/Mw2Iz7MH7Nmf6T/u NF6+mrQ5ooaoAAyTw7BXzXQK8KwwY7YVQOuDXLVVcU2tOgZZKQAwcz6xzF8np9IhvhtPfd +yigDK1qqeR5NyL3c9hjP6AIABIz+as= Received: by mail-qv1-f51.google.com with SMTP id 6a1803df08f44-6e8ffa00555so49905576d6.0 for ; Mon, 28 Apr 2025 10:18:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745860707; x=1746465507; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kjtKTj8iYaV5Lk4x0tdvWcE0jO5ltQORsyv2ZseCCwg=; b=nqW/Nkz3wugttfrualeJ4xAMcJfsuphdOhNDK8vwON2Zu4eAEDzsTIDER98bbUzEGg t/MiQcNYXp0Td3V52NaawhJwZLhyTQB0myQOAbCULD71YlShypOKmbMbpl//KiNz6rk4 LHA+iSPWklUEc0DSm+Kle0QlHsyj6v1kcmocSm+eA0JyFt+g+K3c0clfs177wctLfqRy CFmxtHe4MW3qLCyO7x6iWVXfMvZaVQfGgsmWTrFW2Vsb1Xurh3w1LVlnlWR88bnQtnK6 XxiDdjmiY1xMTJBU9MNGF5EVnzRleocqvNh4oY8Wyc3Erz+h+5PiRIsNbTeYa0rv0+c2 uqpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745860707; x=1746465507; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kjtKTj8iYaV5Lk4x0tdvWcE0jO5ltQORsyv2ZseCCwg=; b=NpkWS4h5O5kUjPqNASjanJ4p1xoJGcZV/yjOjPWYaaFnBj+OwZ1Uxs+rHnMyJ07/zE M4EDLRw3UNIcz1Pog22NyK+Ak5galel6rMcCU3LtzIOW+E1IwDB0h5dVe0VvTvkushP/ u6rSi9Mk0DWhBVQnJsFYszMnX8/Ckp1lRd5h78Lou2HEYiz4Y/1CPCPov8+6PzHTx40z uOL3ccoSIL2lN5WzOyMuzo5wizIjtU+szK9YSzSE3SKo69HmCTRwvA83zyOCLaww1bG1 4BML2P9+zK1vm3J3G69noFs/b0I4fa76X9+HFVK4qZ6jWmqE6fZAEjbdZtw3ndPJCOYn +yvg== X-Forwarded-Encrypted: i=1; AJvYcCUwjeovpCzKHQWmdjlu6XhRQdl0oY4EqGj1Z7WL9PDBYTOQKjbfXFVQcCvGjQxAyc2bvQtuHXbDcw==@kvack.org X-Gm-Message-State: AOJu0Yxk1s7ntfVT0KUGEpUxU1OWVbrfOPgY/eRltvI1p8FoCBsCNb6u FUZZkWkVT4CZmzzVzHgnMZG77482TcXkJyzdIfbeFosGINVsWOld X-Gm-Gg: ASbGncs6wBINqSTUYd9wLJgoSc5Iyj0ZlGTFRrP4mlIqYRf+Ls0O5c+MePkGCuRB4hs ID3t8QOANYrnMdzi4zwrHzTnNLW7BJh7c4RCSZLctSpokdTsnvF/3+qTsxYMFWXwaR3M1y45/Ui rUbibAdy0SC6q/6jHveEkYLsXQTIu0nlmdat5EM9ByofVDWs+YsX2gvUByMXCvsakoE7xjYzlsc X3X3NTVCe9eDqxcXUuourZQEU9msw8KCqcbkPANfw/BgqMMfnR+ALfUTAQWBA6J7WCFOS4WHeB/ 74qHY9sPDGIxemTIegHbKrwamIYktM3dsL6gA015DQm5gY6nhHUMXcrj0n1azja5P+mS X-Google-Smtp-Source: AGHT+IEA7TYfHtaKvQ9mdaP5c5C6mbPEctCz601dDDlmmSTyKrk7y2ueKhroNRxv24n5SyIkTp4r/g== X-Received: by 2002:a05:6214:768:b0:6ea:d393:962f with SMTP id 6a1803df08f44-6f4d1efe83cmr186471176d6.16.1745860707052; Mon, 28 Apr 2025 10:18:27 -0700 (PDT) Received: from localhost.localdomain ([2607:fb90:8ee2:8c9a:73d0:fe8a:86bb:e664]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6f4c08ef3e7sm63443436d6.6.2025.04.28.10.18.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Apr 2025 10:18:26 -0700 (PDT) From: nifan.cxl@gmail.com To: muchun.song@linux.dev, willy@infradead.org Cc: mcgrof@kernel.org, a.manzanares@samsung.com, dave@stgolabs.net, akpm@linux-foundation.org, david@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Fan Ni Subject: [PATCH v3 4/4] mm/hugetlb: Convert use of struct page to folio in __unmap_hugepage_range() Date: Mon, 28 Apr 2025 10:11:47 -0700 Message-ID: <20250428171608.21111-7-nifan.cxl@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250428171608.21111-3-nifan.cxl@gmail.com> References: <20250428171608.21111-3-nifan.cxl@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: i7y37ycgzqgexy5mf3sgfah936jsrsby X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: E31A6100015 X-Rspam-User: X-HE-Tag: 1745860707-118225 X-HE-Meta: U2FsdGVkX1+chvuscPARArRp25Hqj0u9dPR30xQ7m1YJFK0FNSMH6FScBWPZtFx0Fjp+rTLRG6H4CSEDe5a3BxozjFonD+S0Yx5WzEwOoCed8NbSINzr4VMfTNl6eQn2JQyTmdOdZFnBoISYZCLj4ixODRAfYuwu6CWMjOr5IbXon593pvTkwy4jmze23pL38gUqBNAuNDPpoUvkCpvzclACbsoMNlNWpjtlExqZoNnxLVKwj7zHfQenjoT7z8t2y8zIvz02gOBCFh0hISDq5GfRm2VacdbX577QBiDwl7YwOZaYRXzGU9mwMRoGu1uZELGmeYGrruJ9j/NOecI4al9MvcQAstcrx3Y6bem7oUALtVrBeIxBJcPVXefST7gTx+YAoEKYstyXPvzKVbSfNSWxfD1O0nHeuzSke4WUCipi3dqmDywa7Rx7D9uQ4CufZ4WMsB4SCDYM3esc2XEVj61ZqHuUWFCfdwVc5k+R3+vDh6rXAZRi7bTPxzk9z99O8XMO+6PIDYQ6i/ewSIIWZ/Zz6OOwjFpX/gtsyDK77VCMGpTmMHrM9dRog8eWDmyBTz7R7HcO2ww89UwJqIFZtS2Ga6BjjZuwUcoCD5DVEB0CbuSQA399harWyjCfR5FOjN3LitnLOqmxuq9LLKfvzQg4av7h3Em445t5x46wcc3PTVvMXA5L5YbVFQ0QIRYbMRjRyHk9oXwqzyUSmap88oTLz88bsLBJe+MkYXBi4SOr2lc9s6cs/jk4ZAGWu83ocrkFfTE+rEzmEnDTTso3BqJK2AL+QlY8oKt6R+IMhCp8rFCDP8V0RIVl6T4N2MZgu3j30II+K3T+34Cl6ROk2LW9lg9nMYSfrJsNkpk9yhPCcg6EE05ja0zSt9R94vQvgVhHIJSJR+m5wOa5qNHtu0HcQTbwzFsqM9oYSobSr0gq0dMbC2eQNUwLCGPoyUBidRgHFPKDC2lAnEsYqeM u8H/j0Sv suqpcB4rFP73Az1C4/NR/J3gWmaQX8mnEMo4HnD300uX+9hLRmRvytoktCiNOtyxFIAG40V2J730XdnYSoMmteA/KWHT4Oo8ZWScZVQLI6geaJoa6CuAGifwiHiGyDX1eEhln9ncT8pKAHoQCQ2UDDyJBsnuxy6DAt1CGzgoaJ2ioZdq/v2hAOT2D0qofbIk5sog9OM0ATaKDHhBVvGLQVsI0nAv5zt8DlU7emaFuntcyDO8L2LN9YN+cdd5+Hs1BdCO4+55NOji/nAM1bjfm4Y6L8dgEchtgFt/oprdVfF+uI47PqQfkEFQscvgfGGfo0fb+Qun3yMCEoinAZc4jldvCIO9ES9Et+2k0ocSQPwYiuJ2CpRjk9rZDkgaQTDinRfOK7lzqmLw5I38sOqWI5odqz901oRMK4Ut6vZMO2u3EGJF2/NTmsXI9moURxyI3g+/Bvmquu+PhpEHJs+nqPoVZ6N3dT8Dlg0JcuRbcSf4ErTC5bl4cpSwGQg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Fan Ni In __unmap_hugepage_range(), the "page" pointer always points to the first page of a huge page, which guarantees there is a folio associating with it. Convert the "page" pointer to use folio. Signed-off-by: Fan Ni --- mm/hugetlb.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 6696206d556e..293c2afa724b 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -5815,12 +5815,12 @@ void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma, pte_t *ptep; pte_t pte; spinlock_t *ptl; - struct page *page; struct hstate *h = hstate_vma(vma); unsigned long sz = huge_page_size(h); bool adjust_reservation = false; unsigned long last_addr_mask; bool force_flush = false; + const bool folio_provided = !!folio; WARN_ON(!is_vm_hugetlb_page(vma)); BUG_ON(start & ~huge_page_mask(h)); @@ -5879,14 +5879,13 @@ void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma, continue; } - page = pte_page(pte); /* * If a reference page is supplied, it is because a specific * page is being unmapped, not a range. Ensure the page we * are about to unmap is the actual page of interest. */ - if (folio) { - if (page_folio(page) != folio) { + if (folio_provided) { + if (folio != page_folio(pte_page(pte))) { spin_unlock(ptl); continue; } @@ -5896,12 +5895,14 @@ void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma, * looking like data was lost */ set_vma_resv_flags(vma, HPAGE_RESV_UNMAPPED); + } else { + folio = page_folio(pte_page(pte)); } pte = huge_ptep_get_and_clear(mm, address, ptep, sz); tlb_remove_huge_tlb_entry(h, tlb, ptep, address); if (huge_pte_dirty(pte)) - set_page_dirty(page); + folio_mark_dirty(folio); /* Leave a uffd-wp pte marker if needed */ if (huge_pte_uffd_wp(pte) && !(zap_flags & ZAP_FLAG_DROP_MARKER)) @@ -5909,7 +5910,7 @@ void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma, make_pte_marker(PTE_MARKER_UFFD_WP), sz); hugetlb_count_sub(pages_per_huge_page(h), mm); - hugetlb_remove_rmap(page_folio(page)); + hugetlb_remove_rmap(folio); /* * Restore the reservation for anonymous page, otherwise the @@ -5918,8 +5919,8 @@ void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma, * reservation bit. */ if (!h->surplus_huge_pages && __vma_private_lock(vma) && - folio_test_anon(page_folio(page))) { - folio_set_hugetlb_restore_reserve(page_folio(page)); + folio_test_anon(folio)) { + folio_set_hugetlb_restore_reserve(folio); /* Reservation to be adjusted after the spin lock */ adjust_reservation = true; } @@ -5943,16 +5944,17 @@ void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma, * count will not be incremented by free_huge_folio. * Act as if we consumed the reservation. */ - folio_clear_hugetlb_restore_reserve(page_folio(page)); + folio_clear_hugetlb_restore_reserve(folio); else if (rc) vma_add_reservation(h, vma, address); } - tlb_remove_page_size(tlb, page, huge_page_size(h)); + tlb_remove_page_size(tlb, folio_page(folio, 0), + folio_size(folio)); /* * Bail out after unmapping reference page if supplied */ - if (folio) + if (folio_provided) break; } tlb_end_vma(tlb, vma); -- 2.47.2