From patchwork Fri Apr 18 16:57:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fan Ni X-Patchwork-Id: 14057509 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 2D02FC369CF for ; Fri, 18 Apr 2025 17:10:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0E93A28014B; Fri, 18 Apr 2025 13:10:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 05707280147; Fri, 18 Apr 2025 13:09:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D3EA428014B; Fri, 18 Apr 2025 13:09:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id A1C88280147 for ; Fri, 18 Apr 2025 13:09:59 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 430591A09C2 for ; Fri, 18 Apr 2025 17:10:00 +0000 (UTC) X-FDA: 83347802160.22.E1110D8 Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) by imf22.hostedemail.com (Postfix) with ESMTP id 5F789C000B for ; Fri, 18 Apr 2025 17:09:58 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Hpc3+UWO; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf22.hostedemail.com: domain of nifan.cxl@gmail.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=nifan.cxl@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744996198; a=rsa-sha256; cv=none; b=swQoRQ5iFQstbw1mc6pw3x8aACRGq/hbAbdoIm89TcyyIM6vSB3NCweI3cu/Rnw0him1BR rsAtv3WB4lbA3GTanJkzkljluA+eonu/o90b4OBOW9GSdmvdmDOyEYk7nRTCrx0mrPfMgL zpu59CzsomeiA1e0jCG5pHdtygZXi5s= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Hpc3+UWO; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf22.hostedemail.com: domain of nifan.cxl@gmail.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=nifan.cxl@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744996198; 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=tsTdqsYgwhibA932I5tR8o+Lh0DhDirBiJnZYsrDEio=; b=MDklkcjXxzUSns2YCFMP5s3c4yJ28jGmotcnwbq41d9F60DurpmJM1Q/8cOYQQJs588CRv 01CJOsgHPgMJrvve21GZ8y2VXaHQHsLLoHW+6pvbTHIuGTnUhhdlniFFxphWu+WeHMvrUm heZe03Gp1mtCddWv2qeP1knLYq1gl3E= Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-736c062b1f5so1733751b3a.0 for ; Fri, 18 Apr 2025 10:09:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744996197; x=1745600997; 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=tsTdqsYgwhibA932I5tR8o+Lh0DhDirBiJnZYsrDEio=; b=Hpc3+UWOK/PSl8pww8CMrS48fuJ98+A45lLVbkUV2lEjPFqBiPnYazmhPKfqu9IzLD pblsmFt/bARHVgcaxhftYJHLuUns8Tm+FdSOPDuaA/yGBqJWNiWWhwU5EhoT5nYFsuan CE/GghmX0xlvZsaS8VKai+HDxYkxVqc80s1gypdCpsEWAHed86UtNHHcUg8ySUgytqoL eX1P1tOxZIVwRrZog322mPGvQiN8RtmtNGfv64432WyycbKISo+yvoeKO7Uxi1VJaehD witIgrylv03lpP1n7A21EWt5hqlbxMHTZF1J0FAL1CfL2MPwbOTy2Md6CrWR85p8bEDo x76Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744996197; x=1745600997; 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=tsTdqsYgwhibA932I5tR8o+Lh0DhDirBiJnZYsrDEio=; b=ih/TAg5V28qSKjgknwCmF+2rXD9upM6491yls3eQMA7smgXfm+02ICPcopY82y+I0B ggnqbtmyMbDUr1C9jigHLw8DeB9vzSnWhLDPGJ35/Bk0gcN/fNu0+4pVq8bjYaFzsD2V TiI8FpuVpNqHRhfgmRnwlEQ0JC6u1CPiAUGRJKugA7cWv4JfzE9a9+0xAIc/MZhPx/2Q 0zsKY+WJI2wRk13hld5KGKN7O7KKqRIAnmK0X+UGj3ZKbS5404VkxC841F8DXaJhERTq rLdxB0fWmzwXhLqmr+7GgZRM6QaMV6d1rfumOaEWPmV4QJDifZBPOBH6jzs8cviWPKBR pp2g== X-Forwarded-Encrypted: i=1; AJvYcCV9r1p8gNRF9bZaOZlwBFtsz/dbJcXtqLUY8uLb/8KbIiR8Tl+kZpPIzjebqFxGnMBOeW4yXtmE0Q==@kvack.org X-Gm-Message-State: AOJu0YzHoacEDhv4YgLsIBBH2KbXbl2nNJKThs4RXDm+j32mGF3jffO2 flNiisgx2MJjmUHxQr1a38GI78Khowu0mLzBQuttLu6jJESps41h X-Gm-Gg: ASbGncuDHJNqIbbTUlU3OdWIQle7zMt2Y7nqa6p9+AbsmZP4OWCEarTCY8Aa+bUzP6M 3qqGUkN4yEbMmFyatxPiZlban50Tzpkx3kcFpKKCN70X5eHwtBJwA776wuqXKcMB9mo7Fx35INS xNZ59t8SzFDsBCF9lkmsqV0/QvEv7E0Emxf9ZcBerMuHoOxEl/nj8sm7Re21ww9w9zIAIjo3wLK viJb+5pJNt+51qB7O0d2OBz+eJQf3KHesfy2o+lfxgogRd4RQ2oExreAIpfSw/kcfKo87KVo3AJ aU5Vd7XIZkq0iVTOmCfVPLt/0uCLthAZRAnjLpvAzLjElI+H/k795ldh8Q== X-Google-Smtp-Source: AGHT+IHSvLp7xjrutlovDlb6Cd2121SALH2AYdmlJW33uOknBUVUuhOpoIUEZNHkILgFO6AID+VXrQ== X-Received: by 2002:a05:6a00:a91:b0:737:6d4b:f5f8 with SMTP id d2e1a72fcca58-73dc1568775mr4256597b3a.17.1744996197143; Fri, 18 Apr 2025 10:09:57 -0700 (PDT) Received: from localhost.localdomain ([2601:646:8f03:9fee:5e33:e006:dcd5:852d]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73dbfa59176sm1834069b3a.113.2025.04.18.10.09.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Apr 2025 10:09:56 -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 v2 3/4] mm/hugetlb: Refactor __unmap_hugepage_range() to take folio instead of page Date: Fri, 18 Apr 2025 09:57:41 -0700 Message-ID: <20250418170834.248318-4-nifan.cxl@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250418170834.248318-2-nifan.cxl@gmail.com> References: <20250418170834.248318-2-nifan.cxl@gmail.com> MIME-Version: 1.0 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 5F789C000B X-Stat-Signature: 63bue111zqtity6zb1g3b9du37ztiga6 X-Rspam-User: X-HE-Tag: 1744996198-46632 X-HE-Meta: U2FsdGVkX19ehNFQT1dh04eK4Fvcy4h3JpX8xHEp3tiHVWDs8Tya+V60Sme+yKT82gIf1TakE79K5DECzONhhR4pPjshVRFqoBvTRGO88rG4Tu0vt/81wMzMWVqfH16Il+XC6iUQtwGIoDPucd62VnVvL18ifCh94deA30jJzW50ajlMCyoFEw3yFxe/9W9rVT02iOvZvqm/ZZto7rfZZY6H7n8MCTP79C6p7YUI3RKPgjfsDUMa5MP8m2uv1Jb4/v62nmaOWf/+kfJdcDWZ3Zn6s8x+HJGUTMlqftqIo3iM6lOzZK11+qOPUOPQL6IK0dJMvv6Ge7yiPZzUjU/grrIcfDI/g4kPvoUilGjrAG5LhL0jG3U8iOtEILdRLJSbqcNpztqmCfk1L0dFlDnEmgEqkGWAX3o1+dwFNHdELb9WRYyjaRM/vZDJDBhRqGOaSI9jzMdRP/VpfRVsbjwqBOaPf2IrT6RTsArEw+r/NA+zj00naMwZTNU0mEOK2Jb2KPSvRigwhSQti3appUc1vzvakhRMvJCERFoRpAg0gr6ZD2rfQ/4ZciaQc2pXzbVjFjK/IgTOU13/fjybKt4XUng2JQE0WsBWrVwvhMQFCRUZBIomHjhYiy39zKyNoqexjJoBAxPY2HAwt3XqSyBMxDTIaj3AHg6XqVNJv5bKMTJLcuog947qVcGtDkXtRVS/61Kt1lfYfXR+B5SF16CQrodxi3I3pYHioj4El+Q3tH2lyGTvgmBJy4rJCrtik7KY5WUM7IDQYa1A95PFfbnmQy1yU42ivzm/sHlP1ZFU3lwpjLZq4Y5n4ZLbD//MTpwMqxKyJthJdpmvFBTQ1ykoxSCyIPcXr8Yqj+h6IBAefFZcHl6YVdZLW4+0bj7GFoV7cDU0oIDTcziw5S77LVpGJW6ooVY6MboXtClvYxf8GtoNnlrkeDwh4zYoqXR8HYzrtn1UdORAs/qqBRh1Rgv m0qyAgWw 5eCfyghhBqav5p5Mev+ooo3jDViwuobcV1Gksopr9DdvI93hm+igPiuZvIBkM+Qwm4taFqtswgwq53wqCP9CvbA4nTrDlWgmFEhUq75owKgp0uPj3QAR9gn2U517HHMUHCf8Scm82Or16k2F5oim6FA63O8ViN1H2L/eQyvRDZihdgDyp4LkNet4mWtbvzZAb3brKP6tHe2lEvk/Ogz9bHLybOFeYpoFO0g9gSbj404Dsf+q1g8DouBYzT1WSGWbOiV6jrNjrBcKVHULGV0S+1IWp54362Z9BvatsU+bUw4JEQy20+aI+WorAR1pWVkYUOXsIHp3T2CsGjQWN1gAAaD5FJ5D2PjajEyngaP7kMHzYZDat2rUvrwOhskhNLn/uv3LCeLOOqX3azayntsaEIBlqMmklKCgAbD98iHs8TsjR5wtrrEXXMxCvc/x5QoCkuneNBtgC6QbvVv7YirlgYUzX+qSeZR7gNk4DdqAuKfveG2E= 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 The function __unmap_hugepage_range() has two kinds of users: 1) unmap_hugepage_range(), which passes in the head page of a folio. Since unmap_hugepage_range() already takes folio and there are no other uses of the folio struct in the function, it is natural for __unmap_hugepage_range() to take folio also. 2) All other uses, which pass in NULL pointer. In both cases, we can pass in folio. Refactor __unmap_hugepage_range() to take folio. Signed-off-by: Fan Ni --- v2: fixed issue mentioned here: https://lore.kernel.org/linux-mm/aAHUluy7T32ZlYg7@debian/T/#m2b9cc1743e1907e52658815b297b9d249474f387 v1: https://lore.kernel.org/linux-mm/aAHUluy7T32ZlYg7@debian/T/#m738e9e7f7d7fe4aab6b21782b4658dd65abf8fc4 --- include/linux/hugetlb.h | 4 ++-- mm/hugetlb.c | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index b7699f35c87f..ebaf95231934 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -133,7 +133,7 @@ void unmap_hugepage_range(struct vm_area_struct *, void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma, unsigned long start, unsigned long end, - struct page *ref_page, zap_flags_t zap_flags); + struct folio *ref_folio, zap_flags_t zap_flags); void hugetlb_report_meminfo(struct seq_file *); int hugetlb_report_node_meminfo(char *buf, int len, int nid); void hugetlb_show_meminfo_node(int nid); @@ -452,7 +452,7 @@ static inline long hugetlb_change_protection( static inline void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma, unsigned long start, - unsigned long end, struct page *ref_page, + unsigned long end, struct folio *ref_folio, zap_flags_t zap_flags) { BUG(); diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 3181dbe0c4bb..7d280ab23784 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -5833,7 +5833,7 @@ int move_hugetlb_page_tables(struct vm_area_struct *vma, void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma, unsigned long start, unsigned long end, - struct page *ref_page, zap_flags_t zap_flags) + struct folio *ref_folio, zap_flags_t zap_flags) { struct mm_struct *mm = vma->vm_mm; unsigned long address; @@ -5910,8 +5910,8 @@ void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma, * page is being unmapped, not a range. Ensure the page we * are about to unmap is the actual page of interest. */ - if (ref_page) { - if (page != ref_page) { + if (ref_folio) { + if (page != folio_page(ref_folio, 0)) { spin_unlock(ptl); continue; } @@ -5977,7 +5977,7 @@ void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma, /* * Bail out after unmapping reference page if supplied */ - if (ref_page) + if (ref_folio) break; } tlb_end_vma(tlb, vma); @@ -6052,7 +6052,7 @@ void unmap_hugepage_range(struct vm_area_struct *vma, unsigned long start, tlb_gather_mmu(&tlb, vma->vm_mm); __unmap_hugepage_range(&tlb, vma, start, end, - folio_page(ref_folio, 0), zap_flags); + ref_folio, zap_flags); mmu_notifier_invalidate_range_end(&range); tlb_finish_mmu(&tlb);