From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012060.outbound.protection.outlook.com [52.101.66.60]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CF7ED3DDDC6; Wed, 6 May 2026 09:16:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.60 ARC-Seal:i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778058982; cv=fail; b=aSO3DvSF7okYyd1p3SqV8rvPfih4foWTxpq66SRuHuuH3JAmA3O5g3uFZnsluPIcAH+6S+P206WCf+IrL8UXyJFx3xxcA7Ovr19qf9XHk67jOXkbo/CYJZEl0416VfiKK36cJPpze8On/oivDgq5XXXabcdj/VKr+lnN6A98hYY= ARC-Message-Signature:i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778058982; c=relaxed/simple; bh=AXdtlN1qlr+E5B/WjG4agaLbmLQL41rk/TNmem4UWpg=; h=Message-ID:Date:Subject:To:Cc:References:From:In-Reply-To: Content-Type:MIME-Version; b=KNxHNSCKxAiW1YGuHYeLCaoAv03P+rmY66zBdHsBJy1ApdrSCBL/O+RYwXzGbYy9H8pARLGuHhzbietTwUxObOee4+cdiCyr92tIHAeBz7QFWPEdtX1P0sCpsCdaw8j9jK/6gqTacpNLju66pnoDVcb7zerrh8kCGCr9gameyAE= ARC-Authentication-Results:i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=E1yHwZYu; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=E1yHwZYu; arc=fail smtp.client-ip=52.101.66.60 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="E1yHwZYu"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="E1yHwZYu" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=F2eGjXM7gIfKgzGdMtS0ksaE2e4lEz2WsNJOglFESryGj/zCMhY+Yn3PK5ZZ/lMQUvxsCvyXfl0oUwqYcA5wcwSYvXxADHF24Q6lsZwdKgWaIKaINTFZh+LoIype4vJOWz83LsZwzwKNIWekI0Y/H9avlwfJs0YReBRbisdpblCy4F5n8Rr4L9SWWtC4nAB7EO3FRtqc3lMPU6eB+/nO4E3Nf7R16O7hA2mqj/T5L2Wmmat2YnAnHTyneKVfve0cHXCArsEvD5Lc6eMmHE/FGubh5qxRH7VNzoGItBq/Q4bshlh3f2bf7m2K+/OjQJuslqwqunph9UrhMEko2pyMpA== ARC-Message-Signature: i=2; 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=IZcSTCqCSqlO5C+kcwYlOanBClmSRbE8fQRJhP5zoWU=; b=argvM39g86SBvvNAbJhJluLG/9I3ZYoPZa4rEL2/wgyO42/cSxzKKaSQ1cGMTPube4OrhYOnVJHU5DHon5hRTXON0ipGn/2gjSD7KgEWGmhPpkJyhIo4i4cuoVDckHbHSgk4BM1SP0Ah5tMVFA3UhaqX1f6tmExfvZJY1l6RDQuaDq44SYWmSCjs1a4U4C8Zdd1UAorK53qnjvOe5+MFNnlDYMGIKWB5dwyp9h6adQQ0q1TaGE5fHGu/xyrvS3HCDf9WPdqeLtCB4EZGUiulWTzivzvvm9eg9ju4ZchTNRrI+CGzAAJx3b7FaDqk7Pjfpx2nDvOLTarB45t7CEnldw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=kernel.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IZcSTCqCSqlO5C+kcwYlOanBClmSRbE8fQRJhP5zoWU=; b=E1yHwZYuRAAm3WnyKjhAEzAbo2GAyyO3tUK6U7kuOO4NQgzt4eq8bk6Weh42gcviHKhvJmxUdwEYGQJ9G0gxdmdhS5+hbooJG4kPC0OJBvigy5pqC74Sa3Pp6Hoa8/PD02gHo9Lg+PcgPeEwCBbJqN/GdfBh8OEcrddQ2kz++Hs= Received: from AM6P192CA0016.EURP192.PROD.OUTLOOK.COM (2603:10a6:209:83::29) by AMCPR08MB11969.eurprd08.prod.outlook.com (2603:10a6:20b:76d::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.15; Wed, 6 May 2026 09:16:12 +0000 Received: from AM4PEPF00027A5D.eurprd04.prod.outlook.com (2603:10a6:209:83:cafe::3) by AM6P192CA0016.outlook.office365.com (2603:10a6:209:83::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9891.15 via Frontend Transport; Wed, 6 May 2026 09:16:12 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AM4PEPF00027A5D.mail.protection.outlook.com (10.167.16.69) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9891.9 via Frontend Transport; Wed, 6 May 2026 09:16:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SH1ipA+Zzwt8aX1eB/SfLZ0udStdIVgbgZc6eIQXT6soQ5an8C3Sf8K1dd/yDqnTwY5Vb4CdNEzHv9zJtzDNBCheqeusxfTUHaVW+DZtT4ZUJZCdnv7F9vmq0FhiGguI7cvsxTRN7tfZ5DgNqX9UTiRkPvLgh9dWbpe+KmnCiJS/5PWwsR1E6kkPu5rqFaitN//hlGDwlgm33VnokS84x4qHzaXTnz/MRFB4epFdjVgms+hyHgPdmXsabShJFbOkpcc6928ze7osulhQYeZF065k35NXiO7d5BnXOgHkL4pRhOEqHhB7YNFCckGa3hLTvEaDp+VWONva2xwUBrOdDw== 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=IZcSTCqCSqlO5C+kcwYlOanBClmSRbE8fQRJhP5zoWU=; b=vs1FfLHY+nBcLVqxOMSu8askibxvuykUNwLp390wIveksPQCYSzT6l4LYgm+CGs1ZKKFWz6n/j+BBGqJiJD5M3edIPhXgpGWBmSPjbQ2B9Sbc67awVt0gThLOMYj4V1vGv26/QzeMW/e8uBoelVApORqgxYnBnZX1CWChrYysyb9MJlWSQuYIqeJy8DRmw0S5Nc6JHHM4b+GPc/dTR+wiJdWhrbEI1r+oj7BKU+NJ9iCP36kNM0fPMWQPARFo8mOqyHdv2PJma/QBOlABSFjLbCFlD7GXGFxsLQJgX1/s6P/au2LuNqWPDLFSvytg7vVMwkpCfPA/51gtEVoq8+PWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IZcSTCqCSqlO5C+kcwYlOanBClmSRbE8fQRJhP5zoWU=; b=E1yHwZYuRAAm3WnyKjhAEzAbo2GAyyO3tUK6U7kuOO4NQgzt4eq8bk6Weh42gcviHKhvJmxUdwEYGQJ9G0gxdmdhS5+hbooJG4kPC0OJBvigy5pqC74Sa3Pp6Hoa8/PD02gHo9Lg+PcgPeEwCBbJqN/GdfBh8OEcrddQ2kz++Hs= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from DU0PR08MB9203.eurprd08.prod.outlook.com (2603:10a6:10:417::12) by AS2PR08MB10227.eurprd08.prod.outlook.com (2603:10a6:20b:647::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.15; Wed, 6 May 2026 09:15:07 +0000 Received: from DU0PR08MB9203.eurprd08.prod.outlook.com ([fe80::f1e:73f2:57df:4047]) by DU0PR08MB9203.eurprd08.prod.outlook.com ([fe80::f1e:73f2:57df:4047%2]) with mapi id 15.20.9891.008; Wed, 6 May 2026 09:15:07 +0000 Message-ID: <9ecc4348-5d5c-457c-a83c-f7297c3ee5bc@arm.com> Date: Wed, 6 May 2026 14:44:58 +0530 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 23/54] selftests/mm: move HugeTLB helpers to hugepage_settings To: Mike Rapoport , Andrew Morton , David Hildenbrand Cc: Baolin Wang , Barry Song , Dev Jain , Donet Tom , Jason Gunthorpe , John Hubbard , "Liam R. Howlett" , Lance Yang , Leon Romanovsky , Lorenzo Stoakes , Luiz Capitulino , Mark Brown , Michal Hocko , Nico Pache , Peter Xu , Ryan Roberts , Shuah Khan , Suren Baghdasaryan , Vlastimil Babka , Zi Yan , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org References: <20260428204240.1924129-1-rppt@kernel.org> <20260428204240.1924129-24-rppt@kernel.org> From: Sarthak Sharma Content-Language: en-US In-Reply-To: <20260428204240.1924129-24-rppt@kernel.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MA5P287CA0176.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:1af::17) To AS2PR08MB9200.eurprd08.prod.outlook.com (2603:10a6:20b:59f::9) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: DU0PR08MB9203:EE_|AS2PR08MB10227:EE_|AM4PEPF00027A5D:EE_|AMCPR08MB11969:EE_ X-MS-Office365-Filtering-Correlation-Id: 6a42cd9c-d1be-42aa-8337-08deab501e16 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|1800799024|366016|7416014|376014|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info-Original: 0SnOywG74OVu4Cc1asnClhZoIljb6Wu2jPG+VOCGT6wDUqlbq6WXjGZQ79MidW424tbwSDqYrdQwv/1Q3HcGXTqcOnLnkqqJywJH6AeUCfCig1xXcLUmKnu9/rRe4dRdoIVH/4elBXrpl2FNwo7tWn1IYkwZw4L0zxH7hmt4T/jm1G6UHPLUy1FLXt47puNiFjKcALms/oziKWGsLOL1GMyPA7eG2z81B5q+3P0LfoJHJAx+YeOG+gxFuqTapinKdJzbc0UoRiK3ZL4RLVxxbGIq3mzHch2L8zrEWa5YlO+pmEpWY6YMHuLjfeuNBaMgpujaMmSCVY/OiuhNVxCNAu5kuTjeq1jkRoLA4UjgER1XiKkkSTyRqhNYeWQdWTr2BoSi93T0zXzS56/kUJwts2aYXweh+Q29E7vIdrgFxm5uHiD2m1aXkS8SZpTzBWY6Gara8gOXH3plAYzNvuszjtwYZWxcwKJWqMwzlZ0X8fGa+HRTplnc1vmeXuRP1Wtnsv5ALWcOlgNW/LXLR+f03edeoMNwtFHzbRN4mEQZPgObQ6AhlQvPJXEJcUIO8TP9WYzbb+153XzN2ikpEeDqOLNNmLSb2WXj5eQwZHxqL556S5qQCxUaFnZ0UIhGDrgErfe6N0lL2nEmnqTkjp8x/mgDtZtq2ZH3ADuEivMepqv5wUBVcyMip1BYd2TY3mZz X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR08MB9203.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(7416014)(376014)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: scruIK2ToUHonZB7DD9VeXLv9mtSqA3j0y5TeiZvZs8PvqruYLjmHdZ21lUXl5hKssWLym6u0sP1a88QQ2uegBB+EDjyxZ1t9/fqdQoXkdSY3F7SvFayLRoM4fg5d4VOiehjPJy4pCwXidFedWXMkoyUEIlOaTLTPmKPAneX6Enkr7M5F9M0izg5rM+b50y1E+wHI8icVX2k9JnpDl01l751m0y3udEsPtOvpP6H5I9yQZ4muQANbKtLf8/AFbbNqdxVi8kl74XNySuvoE7O3gLxCJPY8ZQuiOWk/EepWl1CPkn3vPYtfY1DI1hbBG711VNJZJtyTXEs6qohXJAMyg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB10227 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM4PEPF00027A5D.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: e0520efb-7f80-444e-36e8-08deab4ff6d0 X-Microsoft-Antispam: BCL:0;ARA:13230040|35042699022|82310400026|7416014|36860700016|376014|1800799024|14060799003|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: +k/IGyhd1STW9RaUM4ShgIAL6OR/2dtpor2MnuZ1caxoP+OT9IRwdTiM8DnYfQOIJ1gpPuusoIuAdAD5k+FjD8E5kwKxSGWbhsMI/0jJVO/PVFFxEXo8oBT0D+Wsj9jD8LlHqC2LWmwi2d8xmU+TvTH+5km6muaPKhSaC/8IbP9zfTtaWTLoNdZNZ5CP2zJ2txBL0X70pTnRx8pLZhmvRY2+euvDqgHMK1fGdMrzwyHcwngxMH95XR6bhVIO/Kyn4dQd05wfXK5J+zq+NVGbQbcpaIyy/85Wi4hzjytyOW2+RkE+7XnEcRQyu2vbcDM6rlFfy39iyWPdRCDfwdBbLLFfVz32SjYF1y93P7U6IeQVLDCKxHfrUPGa34sxpr/DQOmS/LyX+CCn6i0V3B9cNnY7b9kOUA1+bgoYAWGrVcoBNzQoo4NR/oNwvYBBxiimeMFmnklX2klNjozR07Y4smeyMvliyv5osLapKwLZxXkOBKzRZ6O3ilujYIV6mFWo6kOaC+2/nB5hTPlL91HN1wDfuyNOn/vaprqO3oC5CnLv2Bm9g/g3NL8rsXr9YYGCg3CKVwHBDIQRLHZDPZH7ykmJbr+T/AXiDX3WnB+x5I1BpKaDhLdTs+oLR+QuZhXC8cAbokEUkYATY8SJ/yG0YwWnA4E2xZS5LmecA1iqlDESPoYnI7C6rhdDGoF308buW3hLHPsVCJvS9UIRpxsRvrrNg6p6SZ7sGHK05jjEtFU= X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(82310400026)(7416014)(36860700016)(376014)(1800799024)(14060799003)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: X6t4dyl5LuiTizP/QSvFicjSiJMQBT9GIu0Q7c5dKY0RRROoLQyPB/0Ktw+tl9kXT5rO9lIIsi2TRs3UcDOJH2RwKvg+LN0j12NLAVo/fyYbg4J2Tw+mKttyA3u0GjRc86dra3fWecKap4vj8Mh/9mnjMe5JiOlfN1JYs/rF+OB6pAiysJhdlz4RcpRC2ca6mUfaiKJ6OBPw8sHJaY+G1xZ+tXa/kKdcN1LNBRrSITwgOH77caBvbckNVb2uze2Tg/93V6iJNGa6egAUgPrQ7bWUQF+eqMRf77bBZ7f0PPX/9JW65oTIHuOu+FOvsCl6BIMlHaPZPCY2fSWOSrSOCF6XsS0bEwTQLNJKFap+ThRtPI/fcduu+H4VdTNdNRuhf476RMkZdnldyAvJ/pYArcF+aqRujqsqZMkml9QZ9wJwzTgoc1Xnu1ZnyOOBqIvW X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2026 09:16:12.2673 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6a42cd9c-d1be-42aa-8337-08deab501e16 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AM4PEPF00027A5D.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMCPR08MB11969 On 4/29/26 2:12 AM, Mike Rapoport wrote: > From: "Mike Rapoport (Microsoft)" > > Move library functions that abstract HugeTLB /proc and /sysfs access > from vm_util to hugepage_settings. > > This will help creating common helpers that save and restore HugeTLB and > THP settings. > > Signed-off-by: Mike Rapoport (Microsoft) Looks good to me. Reviewed-by: Sarthak Sharma > --- > tools/testing/selftests/mm/gup_longterm.c | 1 + > tools/testing/selftests/mm/hmm-tests.c | 2 +- > .../testing/selftests/mm/hugepage_settings.c | 68 +++++++++++++++++++ > .../testing/selftests/mm/hugepage_settings.h | 8 +++ > tools/testing/selftests/mm/hugetlb-madvise.c | 1 + > tools/testing/selftests/mm/hugetlb-mmap.c | 1 + > tools/testing/selftests/mm/hugetlb-vmemmap.c | 1 + > tools/testing/selftests/mm/hugetlb_dio.c | 1 + > .../selftests/mm/hugetlb_fault_after_madv.c | 1 + > .../selftests/mm/hugetlb_madv_vs_map.c | 1 + > tools/testing/selftests/mm/thuge-gen.c | 1 + > tools/testing/selftests/mm/uffd-common.h | 1 + > .../selftests/mm/va_high_addr_switch.c | 1 + > tools/testing/selftests/mm/vm_util.c | 66 ------------------ > tools/testing/selftests/mm/vm_util.h | 3 - > 15 files changed, 87 insertions(+), 70 deletions(-) > > diff --git a/tools/testing/selftests/mm/gup_longterm.c b/tools/testing/selftests/mm/gup_longterm.c > index f61150d28eb2..ab4eaf4feb7c 100644 > --- a/tools/testing/selftests/mm/gup_longterm.c > +++ b/tools/testing/selftests/mm/gup_longterm.c > @@ -29,6 +29,7 @@ > #include "../../../../mm/gup_test.h" > #include "kselftest.h" > #include "vm_util.h" > +#include "hugepage_settings.h" > > static size_t pagesize; > static int nr_hugetlbsizes; > diff --git a/tools/testing/selftests/mm/hmm-tests.c b/tools/testing/selftests/mm/hmm-tests.c > index 788689497e92..409b11cad4bc 100644 > --- a/tools/testing/selftests/mm/hmm-tests.c > +++ b/tools/testing/selftests/mm/hmm-tests.c > @@ -11,6 +11,7 @@ > */ > > #include "kselftest_harness.h" > +#include "hugepage_settings.h" > > #include > #include > @@ -27,7 +28,6 @@ > #include > #include > > - > /* > * This is a private UAPI to the kernel test module so it isn't exported > * in the usual include/uapi/... directory. > diff --git a/tools/testing/selftests/mm/hugepage_settings.c b/tools/testing/selftests/mm/hugepage_settings.c > index 87ecb309b430..ebaa621c45c6 100644 > --- a/tools/testing/selftests/mm/hugepage_settings.c > +++ b/tools/testing/selftests/mm/hugepage_settings.c > @@ -1,7 +1,9 @@ > // SPDX-License-Identifier: GPL-2.0 > +#include > #include > #include > #include > +#include > #include > #include > #include > @@ -396,3 +398,69 @@ bool thp_is_enabled(void) > /* THP is considered enabled if it's either "always" or "madvise" */ > return mode == 1 || mode == 3; > } > + > +int detect_hugetlb_page_sizes(size_t sizes[], int max) > +{ > + DIR *dir = opendir("/sys/kernel/mm/hugepages/"); > + int count = 0; > + > + if (!dir) > + return 0; > + > + while (count < max) { > + struct dirent *entry = readdir(dir); > + size_t kb; > + > + if (!entry) > + break; > + if (entry->d_type != DT_DIR) > + continue; > + if (sscanf(entry->d_name, "hugepages-%zukB", &kb) != 1) > + continue; > + sizes[count++] = kb * 1024; > + ksft_print_msg("[INFO] detected hugetlb page size: %zu KiB\n", > + kb); > + } > + closedir(dir); > + return count; > +} > + > +unsigned long default_huge_page_size(void) > +{ > + unsigned long hps = 0; > + char *line = NULL; > + size_t linelen = 0; > + FILE *f = fopen("/proc/meminfo", "r"); > + > + if (!f) > + return 0; > + while (getline(&line, &linelen, f) > 0) { > + if (sscanf(line, "Hugepagesize: %lu kB", &hps) == 1) { > + hps <<= 10; > + break; > + } > + } > + > + free(line); > + fclose(f); > + return hps; > +} > + > +unsigned long get_free_hugepages(void) > +{ > + unsigned long fhp = 0; > + char *line = NULL; > + size_t linelen = 0; > + FILE *f = fopen("/proc/meminfo", "r"); > + > + if (!f) > + return fhp; > + while (getline(&line, &linelen, f) > 0) { > + if (sscanf(line, "HugePages_Free: %lu", &fhp) == 1) > + break; > + } > + > + free(line); > + fclose(f); > + return fhp; > +} > diff --git a/tools/testing/selftests/mm/hugepage_settings.h b/tools/testing/selftests/mm/hugepage_settings.h > index 7748a9009191..320b97e768e8 100644 > --- a/tools/testing/selftests/mm/hugepage_settings.h > +++ b/tools/testing/selftests/mm/hugepage_settings.h > @@ -6,6 +6,8 @@ > #include > #include > > +/* Transparent Huge Pages (THP) */ > + > enum thp_enabled { > THP_NEVER, > THP_ALWAYS, > @@ -86,4 +88,10 @@ unsigned long thp_shmem_supported_orders(void); > bool thp_available(void); > bool thp_is_enabled(void); > > +/* HugeTLB */ > + > +int detect_hugetlb_page_sizes(size_t sizes[], int max); > +unsigned long default_huge_page_size(void); > +unsigned long get_free_hugepages(void); > + > #endif /* __THP_SETTINGS_H__ */ > diff --git a/tools/testing/selftests/mm/hugetlb-madvise.c b/tools/testing/selftests/mm/hugetlb-madvise.c > index 4c6c346a3af5..316384d919db 100644 > --- a/tools/testing/selftests/mm/hugetlb-madvise.c > +++ b/tools/testing/selftests/mm/hugetlb-madvise.c > @@ -20,6 +20,7 @@ > #include > #include "vm_util.h" > #include "kselftest.h" > +#include "hugepage_settings.h" > > #define MIN_FREE_PAGES 20 > #define NR_HUGE_PAGES 10 /* common number of pages to map/allocate */ > diff --git a/tools/testing/selftests/mm/hugetlb-mmap.c b/tools/testing/selftests/mm/hugetlb-mmap.c > index 9f5ea8d6d656..031085cb7d17 100644 > --- a/tools/testing/selftests/mm/hugetlb-mmap.c > +++ b/tools/testing/selftests/mm/hugetlb-mmap.c > @@ -18,6 +18,7 @@ > #include > #include "vm_util.h" > #include "kselftest.h" > +#include "hugepage_settings.h" > > #define LENGTH (256UL*1024*1024) > #define PROTECTION (PROT_READ | PROT_WRITE) > diff --git a/tools/testing/selftests/mm/hugetlb-vmemmap.c b/tools/testing/selftests/mm/hugetlb-vmemmap.c > index 485a6978b40f..af5786bebfd1 100644 > --- a/tools/testing/selftests/mm/hugetlb-vmemmap.c > +++ b/tools/testing/selftests/mm/hugetlb-vmemmap.c > @@ -11,6 +11,7 @@ > #include > #include > #include "vm_util.h" > +#include "hugepage_settings.h" > > #define PAGE_COMPOUND_HEAD (1UL << 15) > #define PAGE_COMPOUND_TAIL (1UL << 16) > diff --git a/tools/testing/selftests/mm/hugetlb_dio.c b/tools/testing/selftests/mm/hugetlb_dio.c > index 31a054fa8134..81e3f7bc8e76 100644 > --- a/tools/testing/selftests/mm/hugetlb_dio.c > +++ b/tools/testing/selftests/mm/hugetlb_dio.c > @@ -20,6 +20,7 @@ > #include > #include "vm_util.h" > #include "kselftest.h" > +#include "hugepage_settings.h" > > #ifndef STATX_DIOALIGN > #define STATX_DIOALIGN 0x00002000U > diff --git a/tools/testing/selftests/mm/hugetlb_fault_after_madv.c b/tools/testing/selftests/mm/hugetlb_fault_after_madv.c > index b4b257775b74..abc3904c5268 100644 > --- a/tools/testing/selftests/mm/hugetlb_fault_after_madv.c > +++ b/tools/testing/selftests/mm/hugetlb_fault_after_madv.c > @@ -10,6 +10,7 @@ > > #include "vm_util.h" > #include "kselftest.h" > +#include "hugepage_settings.h" > > #define INLOOP_ITER 100 > > diff --git a/tools/testing/selftests/mm/hugetlb_madv_vs_map.c b/tools/testing/selftests/mm/hugetlb_madv_vs_map.c > index c7105c6d319b..ac60b4f18784 100644 > --- a/tools/testing/selftests/mm/hugetlb_madv_vs_map.c > +++ b/tools/testing/selftests/mm/hugetlb_madv_vs_map.c > @@ -25,6 +25,7 @@ > #include > > #include "vm_util.h" > +#include "hugepage_settings.h" > > #define INLOOP_ITER 100 > > diff --git a/tools/testing/selftests/mm/thuge-gen.c b/tools/testing/selftests/mm/thuge-gen.c > index 77813d34dcc2..1007bc8aa57c 100644 > --- a/tools/testing/selftests/mm/thuge-gen.c > +++ b/tools/testing/selftests/mm/thuge-gen.c > @@ -28,6 +28,7 @@ > #include > #include "vm_util.h" > #include "kselftest.h" > +#include "hugepage_settings.h" > > #if !defined(MAP_HUGETLB) > #define MAP_HUGETLB 0x40000 > diff --git a/tools/testing/selftests/mm/uffd-common.h b/tools/testing/selftests/mm/uffd-common.h > index 844a85ab31eb..6c5aca9cb63e 100644 > --- a/tools/testing/selftests/mm/uffd-common.h > +++ b/tools/testing/selftests/mm/uffd-common.h > @@ -37,6 +37,7 @@ > > #include "kselftest.h" > #include "vm_util.h" > +#include "hugepage_settings.h" > > #define UFFD_FLAGS (O_CLOEXEC | O_NONBLOCK | UFFD_USER_MODE_ONLY) > > diff --git a/tools/testing/selftests/mm/va_high_addr_switch.c b/tools/testing/selftests/mm/va_high_addr_switch.c > index 5d38735ea60e..0b69bd4b901d 100644 > --- a/tools/testing/selftests/mm/va_high_addr_switch.c > +++ b/tools/testing/selftests/mm/va_high_addr_switch.c > @@ -11,6 +11,7 @@ > > #include "vm_util.h" > #include "kselftest.h" > +#include "hugepage_settings.h" > > /* > * The hint addr value is used to allocate addresses > diff --git a/tools/testing/selftests/mm/vm_util.c b/tools/testing/selftests/mm/vm_util.c > index db94564f4431..e62e2a473123 100644 > --- a/tools/testing/selftests/mm/vm_util.c > +++ b/tools/testing/selftests/mm/vm_util.c > @@ -291,53 +291,6 @@ int64_t allocate_transhuge(void *ptr, int pagemap_fd) > return -1; > } > > -unsigned long default_huge_page_size(void) > -{ > - unsigned long hps = 0; > - char *line = NULL; > - size_t linelen = 0; > - FILE *f = fopen("/proc/meminfo", "r"); > - > - if (!f) > - return 0; > - while (getline(&line, &linelen, f) > 0) { > - if (sscanf(line, "Hugepagesize: %lu kB", &hps) == 1) { > - hps <<= 10; > - break; > - } > - } > - > - free(line); > - fclose(f); > - return hps; > -} > - > -int detect_hugetlb_page_sizes(size_t sizes[], int max) > -{ > - DIR *dir = opendir("/sys/kernel/mm/hugepages/"); > - int count = 0; > - > - if (!dir) > - return 0; > - > - while (count < max) { > - struct dirent *entry = readdir(dir); > - size_t kb; > - > - if (!entry) > - break; > - if (entry->d_type != DT_DIR) > - continue; > - if (sscanf(entry->d_name, "hugepages-%zukB", &kb) != 1) > - continue; > - sizes[count++] = kb * 1024; > - ksft_print_msg("[INFO] detected hugetlb page size: %zu KiB\n", > - kb); > - } > - closedir(dir); > - return count; > -} > - > int pageflags_get(unsigned long pfn, int kpageflags_fd, uint64_t *flags) > { > size_t count; > @@ -396,25 +349,6 @@ int uffd_unregister(int uffd, void *addr, uint64_t len) > return ret; > } > > -unsigned long get_free_hugepages(void) > -{ > - unsigned long fhp = 0; > - char *line = NULL; > - size_t linelen = 0; > - FILE *f = fopen("/proc/meminfo", "r"); > - > - if (!f) > - return fhp; > - while (getline(&line, &linelen, f) > 0) { > - if (sscanf(line, "HugePages_Free: %lu", &fhp) == 1) > - break; > - } > - > - free(line); > - fclose(f); > - return fhp; > -} > - > static bool check_vmflag(void *addr, const char *flag) > { > char buffer[MAX_LINE_LENGTH]; > diff --git a/tools/testing/selftests/mm/vm_util.h b/tools/testing/selftests/mm/vm_util.h > index 1a07305ceff4..195bf2e26792 100644 > --- a/tools/testing/selftests/mm/vm_util.h > +++ b/tools/testing/selftests/mm/vm_util.h > @@ -94,8 +94,6 @@ bool check_huge_anon(void *addr, int nr_hpages, uint64_t hpage_size); > bool check_huge_file(void *addr, int nr_hpages, uint64_t hpage_size); > bool check_huge_shmem(void *addr, int nr_hpages, uint64_t hpage_size); > int64_t allocate_transhuge(void *ptr, int pagemap_fd); > -unsigned long default_huge_page_size(void); > -int detect_hugetlb_page_sizes(size_t sizes[], int max); > int pageflags_get(unsigned long pfn, int kpageflags_fd, uint64_t *flags); > > int uffd_register(int uffd, void *addr, uint64_t len, > @@ -103,7 +101,6 @@ int uffd_register(int uffd, void *addr, uint64_t len, > int uffd_unregister(int uffd, void *addr, uint64_t len); > int uffd_register_with_ioctls(int uffd, void *addr, uint64_t len, > bool miss, bool wp, bool minor, uint64_t *ioctls); > -unsigned long get_free_hugepages(void); > bool check_vmflag_io(void *addr); > bool check_vmflag_pfnmap(void *addr); > bool check_vmflag_guard(void *addr);