From nobody Sat Oct 4 14:35:17 2025 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2041.outbound.protection.outlook.com [40.107.92.41]) (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 15D0F274FD5; Fri, 15 Aug 2025 02:39:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755225585; cv=fail; b=W6NjZ0pq4U/BLN5/yeedaQSoeWyjA8HtrR+Cmi1L9QCurm3JQPR9mHyDJh7jZigs1juZ+79tQPa6qp66c9dmcPNjI8wGt0UGNdoGlsuV7aibVvguEtsqyp9f2pNVuhV1mfcR4MTPprJqSE+c7zx6ydBoMLHgdzwAa3vfYU4lXaI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755225585; c=relaxed/simple; bh=D9lEPvUyPEbk/t4LlB+eNO7oWDXeAZikj+RS96JcxjU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=oRZAzvf9OX7AU4URDX4g79Ds0aa19GptT6ZCx1MIRQHgp+YxqTs2eTffVgjC67FvpHmHhPz5UnTyrz8vya6UGvkkiYaAkBaQRwyn7lYwp4yC0CXRv6vYR6uUsXCE0uBrnhZk8IE0+DQ5JEkQ4zocQl4hZ2ezbIf4VRA3UtwdnG4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=A56OLIvu; arc=fail smtp.client-ip=40.107.92.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="A56OLIvu" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ejI5YGvE/Kn2QBXveWk+mCWuxeJ/R98HvhNl2k9X72/HbwFembd3ry+maPT3k4iMF2Sh0rqckPFOq/qFYMJLGcyqtDM1oOvFeQQqpzUaeqlXUg9vX7wSIeBuzF5k4Wea8FyDtKqG4JRq82wu9auACeLWcsJ+xXqM0oaZLFtGKrlcuIxMjH2UT9RgrQNNhq/8ND/zPCVeyblzCcThnyZxUx9C8PUCyjiKzbH8ZHvKFtAUHhS18mk3PefC9U2oT8rAI7/tRIM7hUxohXnUM38yL+YKKhBbjfOFn7LOV07L8mwqodFif+BODlzn3Au1pFNqe/yCr/Z96pCWfTK9EEE32Q== 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=E3Nv6QYq3hEmgjLaysO9MKN4vx+xGxG4ASEVQbXzzI8=; b=EY50rh4XmblYojsW94TQm4D1c1FLrHsBa6gEcmEko6oIFH4SFmqLSbXdYdvrsnnSArFcdpidn+Sxxs45DEwumbtc6OR3SgXZfwwqYSHQuceXvLYefBRvSqq0qyL4dYYiu/sdPWAZtpLonpOPsB65xhgSYHKJhAJgqvBy/+Id0J1iIIiVpUMxfFRxMUPe65Fy29vNqX+wQtiWwxOIno3zTu34VZnQXkOi9Q2Yk0PIOJgyHMlSB8n0adCWDH5qYZ/cYBodAfj2WP5hiwnvTFNV3RKovbYfPKtx8COb+wLvsBAn2+UcoWx4juHprfNB1q8+DyEToeJmmhY9Sl13IlEs3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=E3Nv6QYq3hEmgjLaysO9MKN4vx+xGxG4ASEVQbXzzI8=; b=A56OLIvu+rC0OHTsqhPHDod87zabCwRUDp6a2ZHPb8yGrvcTdoqPoXe5SVcliF5dswTQsAZD+k+THS7TRKAM6St+ZcFtRHiG90hZUgTp3ERBPE+Ll7DB33igtXnjzt58R2twcTV8ILT9x9W6VFUcMxTlXahkHdMC32OzV0X6Q1vRdJf0OAnWnbvoa1Jtjch2IrJzPAq1+VeDC3tbag6zyP9qVF1u5TAdPCs+ebyQtbPSp3C464wB48nK0GvTBy9wczmkNuZfaKnCdRl19q7rHD3h1YqmI7AImHskfLiqOlJWsX5U9mmrai0qDJt1LOZga8CL2OCiqBEp30OG0BQvWA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by SN7PR12MB7226.namprd12.prod.outlook.com (2603:10b6:806:2a9::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.14; Fri, 15 Aug 2025 02:39:37 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%6]) with mapi id 15.20.9031.014; Fri, 15 Aug 2025 02:39:37 +0000 From: Zi Yan To: Wei Yang , wang lian , Baolin Wang , David Hildenbrand , linux-mm@kvack.org Cc: Andrew Morton , Lorenzo Stoakes , Zi Yan , "Liam R. Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Shuah Khan , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Donet Tom Subject: [PATCH v4 1/5] mm/huge_memory: add new_order and offset to split_huge_pages*() pr_debug. Date: Thu, 14 Aug 2025 22:39:10 -0400 Message-ID: <20250815023915.1394655-2-ziy@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250815023915.1394655-1-ziy@nvidia.com> References: <20250815023915.1394655-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9P223CA0019.NAMP223.PROD.OUTLOOK.COM (2603:10b6:408:10b::24) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|SN7PR12MB7226:EE_ X-MS-Office365-Filtering-Correlation-Id: d934b360-d5a2-41d4-75ae-08dddba4fa05 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|1800799024|376014|366016|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?stZTXiB7gwEEl+tSA0MagkAA827/GgGNATZiB7YpYCXcKcwd/Sn9cxlhEEV6?= =?us-ascii?Q?9bxM93N7PwcrB69WvJ03ZnK9RCtXVPd6WYV3D46jPn3qEaKLqUiSKidKxq6P?= =?us-ascii?Q?yURLhCoLwqPLCAxK4vBryAxMF/0owfVuK7SMMpmgBz+guYGCX1MKHq0v7kLC?= =?us-ascii?Q?m2InJDxCFkj66+hAFGNaKgehnzhvGjJf6weD+YsaQ6ylOZDjDHt0kPiIOTYo?= =?us-ascii?Q?amI3L9uxjKi6DjwZi9rVHhsGP9CsM3Ov8xS7pl6tPCFpzkkTQqvlGg5igATd?= =?us-ascii?Q?uHuF0gSMUd/g86XxDxpHQJDufiOfnlnWgFFlSZq5aeedSTJH3Y/JMxNUZfSA?= =?us-ascii?Q?LFgIfDlzmvfFzQB5lv0esitsNCg1Zjf5vVPqiadFtglmhH6cvtjFp2+eR3nF?= =?us-ascii?Q?MgsgUKJFd5V/F4RaMsp3hwqUYcvFoGy8jLPa1lE3aFSWvZnxBrOkS38Wzxws?= =?us-ascii?Q?Q4u0utxsh4x2dBlll90MO9mbAvbOVVsfHSzELOdsSySE920RmpMMlU0xq7lL?= =?us-ascii?Q?LDSTgVhM2959sOfxoE4ujzk0UJcF6YWAD7OV7jvxTsGTPMIlMUBKFVk6g5so?= =?us-ascii?Q?8kxwIzEZRMcP6wP1qb9vHW1N8ed9br3QgYVoWUMav4mXpZWTwuAv7q4yrPEb?= =?us-ascii?Q?M129HsJ5nOl20Auw4wJUR82uf+j6O2Vl0Qwlm2URUxfF0vjtUwf9sKdMzA3m?= =?us-ascii?Q?BwVULUdLb+GqhbIBqYBs7tpFoSiLPELqfWmZcRxxHiZMRyfAb6Djipiql/6X?= =?us-ascii?Q?1NJyU5Br4OOLqqLaFjgZ6PjdE57MbpvSJ4A4rc1GuRWSwgqcp4+tzHpB2hXR?= =?us-ascii?Q?ymor2HEW4GB8EWe8dCN1qdfPlq8Jl9zJxst2EMVzlQaD6LL41rLYvJrwu2CZ?= =?us-ascii?Q?j96UQMetRzsWtndKJ9c3y4zLCrSeDgvLtEP1FmgqDuUS3AJqnixCFBxyWsYT?= =?us-ascii?Q?PJX82njM2pzn4rYgJl84NfBkWkMedjQ6iiXlxqSK3XdhBOHw7gvFk6R2F2Xx?= =?us-ascii?Q?Wd8irSjXzSFS+VhFTToYuvX+SlijgprM50cfnaxqXD6XPR+iosTQE8DSoutW?= =?us-ascii?Q?0CJx7wUmSCqPy/mZ6GNJwRya02vxsxL7tQZ/Ht7EkLqHBbCRwGI8irHnG50e?= =?us-ascii?Q?3bDaoXmClAaBYsmUNfJ0Wm2plNPiwv2QcxtTPT8DcgMUiLYMnhcwCwGq/fnT?= =?us-ascii?Q?vMN4CffhcqdtN9HPhHz7kJHPvvAAHKu8KWTMl6eRUOLcZ3WnBGHaAQX6WDut?= =?us-ascii?Q?HqhdH0tWP/nT1Ke24FCnPc4XpKpRE4RVsNzU4gruzUsasKEasZwuD08KhjOz?= =?us-ascii?Q?xq7UwwSKYUHDBiY8gnOv4txESCEEf9K0h1DeMksPiD5QEhlRBIrzW1zj9uzW?= =?us-ascii?Q?mDTMb0H0E/DsxPlCOT4xNtgYaQcHlO9aY+F9oLgKcpc7uHwKL/tHIZIfsVa5?= =?us-ascii?Q?Nuh5SFvLV/0=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB9473.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(1800799024)(376014)(366016)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hFgfGmnfWuRl4IOq12sCevXnjw1flkvwhdNPFS1Jc1Fup6fnKnGQON/X+shv?= =?us-ascii?Q?WYUeFtZYkpytTN36wK/EBMtjbO4n/ASec9W23PpkWjDDMPTENrwjU6XIbaNv?= =?us-ascii?Q?6bc0LDjcpPjjIuZ4aRBgY/DvAsTGudD1vWcn9NHx4eoiz4mcKWB56qNJp1vG?= =?us-ascii?Q?ml7KZr+9H72GpARejnmdl8C9mekOpfjeUtvRmgHLdZACzvyn/sBfmlps48WN?= =?us-ascii?Q?btPRPrKAKCeRP3UUek/UEmdKJf7mbEaseVL62ZdSRbpKkbqXevOPsiyS0mSR?= =?us-ascii?Q?Heh0Y10O6hTesxHno1LmRmvJuTZc9EvKWDQED80lDTVhOLgrUVA2z+W13Rcu?= =?us-ascii?Q?J5WztFhRyAZoteBw56ugPqs93fXJjh/SKTQR4wUj+/I5un4NiRmvlNKojTVC?= =?us-ascii?Q?uQKslIOdBQx9MF1lhnuJMz2GKaBlibxzceV8PgcjUXoiWvDupxr4G9po/fqq?= =?us-ascii?Q?cPruEkPQsw85XPQY1UTlkxrT9eOjwXRi6DLc4V8CdzA1KF7mC7MOWP8BMpBi?= =?us-ascii?Q?GGIoY1aZ1G6i+L9vDQcxWi/Ii8j22b1SC6ofDx7FTbOYGbbMbMQa2vUJuOB7?= =?us-ascii?Q?cEJrJlH8cXsoESjbJdSHpccKMIf6HiIJC6EHcOjz8px9+inTCRwYKWlJTW08?= =?us-ascii?Q?xHQVgnUL3SdtynH+yXNc8N+e+CdIGbEk47Ez0f1LR56Iz4TYFAOjMo88isIZ?= =?us-ascii?Q?+koPQpjNI4Q/luNRTZEuej0bw+nCjd5hYKCF74lxnwfO5l79b3ShsSQ68U1R?= =?us-ascii?Q?5LA8PyBaqTZJpYSHXkdxjD7d9D/BgZKS+Y8zNzy6KpkBTO5yEPqAY/njs8Sk?= =?us-ascii?Q?OEuFtFmkBaeOl7ulCdXZc+y8Sl1xk19zllFZbXZq8kjDixtyHBodrjKUMzh/?= =?us-ascii?Q?UHbfheza4fcQt2cAWo514h+nZmAK1vqO0YdvX4hX+2yA2TlqhQ9zHypqUxjH?= =?us-ascii?Q?k+gd3hT4VyUfvn1vBZ7XK0ZKUvodPAF6QfagzKWjcFMvrIVcHhVY4M60HWpo?= =?us-ascii?Q?HacB004PRX75ujV7RrzSuTQYcB7oV0DTnWVJbS2vweIOPvCMHgtKSoZY/N0e?= =?us-ascii?Q?XCeuHmXqbXHGacp+YN36SJCFpS1d1WfAy6b11oxk1qX7XinyLg1evK8ECbf0?= =?us-ascii?Q?ysk+hKpBa1b4HxTJdj2Glr4JKfBW41kxlO7Hr2TA3xkUF9m+9NKHXr95/6xJ?= =?us-ascii?Q?Ckd2fRLL3QDfDwohIUZtE3He6mJlo9AlWBv2Rp3ejRmfg06V9DrohvopUbQs?= =?us-ascii?Q?i73uLCVljKhaAaPI2iLK0mWv5PhVk/zs6f8tsgmptN7aZ+FbT/rSgdk14+fb?= =?us-ascii?Q?doHWnGExvLaUlN+32UsUjPbn+iSEsSRWQcE2JrKyVvKFknB6nE6yyuaTaSRC?= =?us-ascii?Q?6i86OsdcI8mdcKc9f31g8mzc7nrwO9f7nZUguY8uSf2huK3ZwbBpAkWehRrq?= =?us-ascii?Q?/QGM6BK7fJAe9FDVoUD88d3z/hY2GXRtB81WYv/80HV/oADqgX1l9AhwRSjR?= =?us-ascii?Q?f/oeI/yLPRk/7bF3RX7hL+09WZX33HmYbp1NIj4M/nfAwtfa/h71flf8gF/C?= =?us-ascii?Q?5U4S/j83vIkK+LwebhkMEZlPMQhxQq/PRBa7pHta?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: d934b360-d5a2-41d4-75ae-08dddba4fa05 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2025 02:39:37.3406 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: nSTmaCNGAzvNnNicr7ejsCo5OuWznIjvItORs/ZtA9SQNNVki/8SN0+Ko+8boSOa X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7226 Content-Type: text/plain; charset="utf-8" They are useful information for debugging split huge page tests. Signed-off-by: Zi Yan Reviewed-by: Wei Yang Reviewed-by: Donet Tom Reviewed-by: wang lian Reviewed-by: Baolin Wang Reviewed-by: Barry Song Acked-by: David Hildenbrand --- mm/huge_memory.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index a2f476e7419a..6df1ed0cef5c 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -4319,8 +4319,8 @@ static int split_huge_pages_pid(int pid, unsigned lon= g vaddr_start, goto out; } =20 - pr_debug("Split huge pages in pid: %d, vaddr: [0x%lx - 0x%lx]\n", - pid, vaddr_start, vaddr_end); + pr_debug("Split huge pages in pid: %d, vaddr: [0x%lx - 0x%lx], new_order:= %u, in_folio_offset: %ld\n", + pid, vaddr_start, vaddr_end, new_order, in_folio_offset); =20 mmap_read_lock(mm); /* @@ -4430,8 +4430,8 @@ static int split_huge_pages_in_file(const char *file_= path, pgoff_t off_start, if (IS_ERR(candidate)) goto out; =20 - pr_debug("split file-backed THPs in file: %s, page offset: [0x%lx - 0x%lx= ]\n", - file_path, off_start, off_end); + pr_debug("split file-backed THPs in file: %s, page offset: [0x%lx - 0x%lx= ], new_order: %u, in_folio_offset: %ld\n", + file_path, off_start, off_end, new_order, in_folio_offset); =20 mapping =3D candidate->f_mapping; min_order =3D mapping_min_folio_order(mapping); --=20 2.50.1 From nobody Sat Oct 4 14:35:17 2025 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2041.outbound.protection.outlook.com [40.107.92.41]) (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 6DF1529ACD1; Fri, 15 Aug 2025 02:39:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755225587; cv=fail; b=YRHdKYRmk/ac+zAqH1KOXLhY1Tx5tDz84RHM4hEibjFxv7CHH6+2a+k6Jb5K3J1rjLYEHnpaGJ79YaNshPByIb1kc82tVaoLFYINjdCh4w4IdSh7OrRR7u1UQhIfh+qBcADLvTIhuv2/mYnDcYgWcvErbnIenAKQzLQsnzawtIU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755225587; c=relaxed/simple; bh=6URjEHrpX75Njw8etNowJHXuJZew1wxM/Bt4aDfwjxo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=XjEg8klAvqrl6x2/7KPNePq5KvOX8XKMZXZsisk2HhTy4y5m8QA+w7Zz1r6FKZWar7GGm9V00oxlDUdOAN3KYtO+Oh4QPLLRnP2hQ5YLzLKg2mBWz+D+HqmSM08XUnMxMHyMOQ6+LlbSDuaXXEwqvQzzXLbFn0ZC4emGv3PLPFE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=VWllmqc7; arc=fail smtp.client-ip=40.107.92.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="VWllmqc7" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pWSrmyMExqP78rimjf4P/I5ZNQno7xA0ZcvTQUX5ZDHw3yU/dS0win7uQNu/0jtcJ27T46o9eVF2b1xFu6ASIxikqeCanr3pAP/r9q1MuKrzhB6KcxjLD/6G/uEq87fSTxX6mWSI1dc1TjN8zGPbEIDYuNCzWusZ9nLV6W6jNF9iDolQZTwCQpFmaNLPaybLNbwPQUxO6couU5XWa9otY8hLCdi5929JQtJU44RjI3Oz2b6cBJRY7bp5QH7+qAJTnImdPZbfJl63+/swhnAk2MBs+YeAilyXoKivdh2JSpniLSiTg/GNbgzYxlytcw7g7cdpN4pQgQWiljCV14GDkQ== 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=6oLoKALZi5FJ3e7+nSqCSuBGxctELFoiLzRV5Lx5d+s=; b=scVSVUkYx3t98XYZewX/hyh8/+/cFfnv4soHifY4r7vTLqsCMmsyKJMIPtmN2N/v+kI+3caFGVG2WdANh5FV6mW0fDIYXq4J/sq7SO1SkwV+UuZOaPHbDe7C49KUweVxqFerJGzd8YmVC76ka3+AejcdzAlId4gbiQmmRfx9qsqtfvYFw0Izs5ioFtD9z56t2CtzaDpthwb1cVPMJp5PQ1IoXS+poU/MsJmb9rtnbi1A6R1yuATxIyYYcNU1pE3K0dlKfFjJXxR1v4EMnBPiv/O5JUv7lfmuF6Jh8YfVEW4zA13sH2+Y5gBm3ngJuHcVdapshHBmFEt75XIexAhf1A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6oLoKALZi5FJ3e7+nSqCSuBGxctELFoiLzRV5Lx5d+s=; b=VWllmqc7zCvie38Kn/gZ7pkz+dQAIb7r9wEWKQtMMg7Pj1EjJiH9y/zxBOp1NemMCqEJUx+7WUcg3W6FONku8J/sDuUjjB4iGLuuYc/6EtAd6c/qcLy+XGfh06x6grDeSMRRKuhtbzoG33J5OGRyeZwjzWwkMWI1tuEvWtPoi1j/TG/RhXz7RRibzxy06eZ1VdxFnFHLjfpLCPytJDX8lJXQyEKGRPEjiSHVUwvOUv/J23gUoUqYBMm7vD+gBY9xEez7GAxNxqXxjd/kQDPqbdlIkYc5EHcwV71YSpKD35Yraj9BDnTofwf/d/O/3HB9gFM8oNYOoDkB20nKNRLAgg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by SN7PR12MB7226.namprd12.prod.outlook.com (2603:10b6:806:2a9::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.14; Fri, 15 Aug 2025 02:39:38 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%6]) with mapi id 15.20.9031.014; Fri, 15 Aug 2025 02:39:38 +0000 From: Zi Yan To: Wei Yang , wang lian , Baolin Wang , David Hildenbrand , linux-mm@kvack.org Cc: Andrew Morton , Lorenzo Stoakes , Zi Yan , "Liam R. Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Shuah Khan , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v4 2/5] selftests/mm: mark all functions static in split_huge_page_test.c Date: Thu, 14 Aug 2025 22:39:11 -0400 Message-ID: <20250815023915.1394655-3-ziy@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250815023915.1394655-1-ziy@nvidia.com> References: <20250815023915.1394655-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9P223CA0024.NAMP223.PROD.OUTLOOK.COM (2603:10b6:408:10b::29) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|SN7PR12MB7226:EE_ X-MS-Office365-Filtering-Correlation-Id: c19b5d4d-ca31-4c1d-9292-08dddba4fadb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?a5Cmg9eUh4hlXTwQTB9r6Bkn5qSz+N5orKlHRQduXoPffJdcfA1Q+rS+bOoz?= =?us-ascii?Q?zGFKNHbcUrwh7CZ1EYHSnHD3bcOH3ZAWxFtSDnaZHH7ZZj3nuTiQseftkwl0?= =?us-ascii?Q?rl4snZDCj8v6Vu85B/Jv+z7bkVQLv0afXPWCcx34yaj4UkmKSSFrIOAq3Ptv?= =?us-ascii?Q?G+vb+6ImZzS3u9p9rovDycat6wwSAAqF8ih1JO9poiUqV4Y/PdWRnR/IY/d9?= =?us-ascii?Q?T3mSllRBccszrtCFEjv/k6sDvdTL5z6DBFkvbQrYg84ZRSrvaBKJ8b3/GhfT?= =?us-ascii?Q?L+HzTZSahH2ALCX2NyHq7uMScmT2kIFD/G5yWO7gAo2WLq1oqMBAerFWtUty?= =?us-ascii?Q?QlDjZqq5epZEdsnRhfq8GfaaXYvIuMb0qH+/tHVvbbjYsbAQiOHh8grXZqdo?= =?us-ascii?Q?D6R/KLv5D6jSYQqkRDpix2kkAkzIx/ZVxTl+U8a3TVObrNo05C8mUL4asRMf?= =?us-ascii?Q?lHb7ZCWoiWppEcTNXTPlE1bU5ocdEnL2G+uMqRncf09GKKSxKdVfFQp6BRP8?= =?us-ascii?Q?EgcGQS1ZprARuAlBVPNky2pxUf6SNyPE7vOMFz68JHQ7/uodcqbnW8/DfhL/?= =?us-ascii?Q?0gS0OjLMCZSsqC8Rgf0YSC3MeCGUIJEBvvxWt11gWYZTIUqFecDgxLDR2XfW?= =?us-ascii?Q?i3HuBV19PeppwQj1LG3T95+PSpZaLfivXRF9jKLDVWyF06EjlyzWRUfFbqMj?= =?us-ascii?Q?qfRK1Yf5ym/rNcTh1i9K74sWAaCINZ0lQPwpFL/eRLnhvMsesY0lR499wtow?= =?us-ascii?Q?7Flov/IS8FZ4+cRAkbb9v7mXeOq13LFMuWm0nMbM0VVkZrRyxK3D6rPIX5a/?= =?us-ascii?Q?Gp5o7EAm91509fH84evYSx3tizAginMJ9zsfq+dfCfaKjU3vxHPyrPssiC7H?= =?us-ascii?Q?CTIgqMJS6wgLeYuu4b0d542lKBpqIDWVtVtnsE0As2GwPQZbqOATzpYy5Epy?= =?us-ascii?Q?wtHrD+xc0fvfwKdUKLf2elXy/H/MbKCsTBMMS0MOm8jKzb470hKu4j4s/gYe?= =?us-ascii?Q?LPL8NgWN9ybN9oP90ny6PHERO9QBeuB4nFdqa7Wtx50u+3P1z5GdAFRzh1pv?= =?us-ascii?Q?BjIa1vVjbrE1xDVyFWRYKIws2VTb+f09DU2fmjrHF3scIt78Yy4mEMUJjqLK?= =?us-ascii?Q?y7yZMTcmHTuoo0c4XaUrJ/bmGWNggujfrahP5RnN7QKtAMile8NhKOoFzjRV?= =?us-ascii?Q?kGQ8NQpqdZbHGBcYk0l1qUWD83S5FI7hENRHMxrh1I6z9Hf7WEdsUb6jvnqC?= =?us-ascii?Q?0zFgCnJEXlGIPJl81fRwHGDWphEhKga6pqQwvs774NFhDjiE9HLvrAp4U2vk?= =?us-ascii?Q?V2Dor1XWxPn1PxcyDmhp+KXtLYrPeo4STJkaj3MC9alpc2uzD4BUSSvPeF+y?= =?us-ascii?Q?6Lo+/mui6EUQQGf0DCoYW1eW7wdsLcnRjNrnYTo2zbW5ulJjWUop31Yd5A2Z?= =?us-ascii?Q?4ROpno600k0=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB9473.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ZDJDaz/Xa5SAJnWryORMSWbFQrbvH5uCQ+MvXe/e3f5KrNgJPe/G/Vxvl713?= =?us-ascii?Q?C3OxJ1u8+WbuUoIIgLA5ZXfTCmWHFjCjruXhkSuAZBokdzOz2+Ae9uLENTLt?= =?us-ascii?Q?eHO49ahHOmhMO/rZCUKewmM0DycCEBcIwoc9z0OAinrlu1/NG0ipOiqYDNqm?= =?us-ascii?Q?R+57vN6YhqCgbyAORDi/YgCiBc20YRSRkkKuuddDgIGZxTKXTLGhPXYE/rt0?= =?us-ascii?Q?rZFCvFqGFj3HV18C0gS1PoVX/ch3FudM+VCBvxxjR1rJy3g47vVU+53ReKNf?= =?us-ascii?Q?EX0wNqHmRWTUK4zznJe56Ab4x0jBsUWuwqs6ntQJcHLU0/ZyNqsuayPDIMSj?= =?us-ascii?Q?NClLA4UTEZhKHqQwPGN27hmlt8aRAurdYPYakMrDlxwLOa37DM1Jpn+I25jU?= =?us-ascii?Q?X6r915pggDaztEWgARP3bL1QfSrlgbu6pNIDqES0hBkA7msWSp2eB7jS4UCP?= =?us-ascii?Q?waz5WKM3f2EiEBHw9zYKQ69l9ms7n7aAwPlWDMY85bs1XFo568cSw0eXLT8R?= =?us-ascii?Q?7u/waACZPr66hrjg+WqqkAXb6l4vHZ9uMImnj3re4c5f73wCY1W3eG+jSffs?= =?us-ascii?Q?M3OsSxY5QiGait5LCHt0i1Usd4h2zm6FG+rccj9byAjefpXb45cWs++jeOUk?= =?us-ascii?Q?lICPTUqrVXBATygHlCbDYWCHfqwaagbcSfC8U/ytWrqYdjePYyGp1qpMpE9b?= =?us-ascii?Q?rZJczFXFk2uDwHZTQDQbmfPyqJr3susQY4XNyYsB5L1+pZvg7OtSj+qqfhV2?= =?us-ascii?Q?68Pu9My5wx8f3wD7dld065+EI26LZoqKtaliR+r1vYqd9HQtNxWzZxZqLegU?= =?us-ascii?Q?ysnzjqKLR4g/voHNVpB6KDv4sPlIL4+ikCCZZ6Zzbr+QdggKd2hLh/FuIok0?= =?us-ascii?Q?VNXxQJxlzKEeQGsKTawNOXJ05muWikBGAygQ44lqwY0SUA0NPQNZqQ5ZyGeV?= =?us-ascii?Q?Y/lKdWknZMt/DAsUHnx1uvtTjwBg6TjFzriStNpnrpYcIlSo2DDG9HjmzgMH?= =?us-ascii?Q?3As2FwdF24bchA2qRecdcAi1LocWNneHeXzOSsxdRJU5dY779Bd8NY3tU36b?= =?us-ascii?Q?1OFtNZ2lzl/YbrEGhnMcCFgw+5uPaAa96zhTfk8uC2+YX8cec00nFr/vrooZ?= =?us-ascii?Q?uUsleGwla8WDk4ZrH/DOiocODhYe/0iapqpRlpG/ofwS7jRy9NLT6y/5fA9b?= =?us-ascii?Q?iMkdtBi1/uBSk8d9dXhqAzNOI5u38Aaz7oKmf8gwLhXg5f5F8JJLt3uOC2FN?= =?us-ascii?Q?lDzmK4mm7hnIdpUZI/wE5G9NHxmNyl+5XI2LQj/Fu+hMXMBN+u+mCXy+sSdy?= =?us-ascii?Q?FrAi78OmpqcMQTVB0ydF32UPNRFo+JEkXZWxYqXtUw3ch6Q9jSo/l/v4VQA5?= =?us-ascii?Q?VRFNOJk+a5z7rKFxzPhM0uVy+dWdZLsKZ+CHYqgF75EfAPJuCH5W670LPYyL?= =?us-ascii?Q?VgCaoLbS5Wm9RVw0xQRo0HtZcOR6Ik65rMyyhSYImdbvk86LZaHC2XbB+shi?= =?us-ascii?Q?NHjqV+N2v/l8QsX+TD4gI2sMozeVUJmyEUVi8bkLQJk7UBKiJT8o9bp/f5v3?= =?us-ascii?Q?1ZFcvVVIvaVRSRa+cr8hCgzIzTTe2Ay5iy1tMmp8?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: c19b5d4d-ca31-4c1d-9292-08dddba4fadb X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2025 02:39:38.7597 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: zL1a0IGAN0dGwjuJTlyzxvswAK4keFI2CtbKAmOKdb7OIDEZFb7RmT+skCoD+aja X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7226 Content-Type: text/plain; charset="utf-8" All functions are only used within the file. Signed-off-by: Zi Yan Acked-by: David Hildenbrand Reviewed-by: Wei Yang Reviewed-by: wang lian --- .../selftests/mm/split_huge_page_test.c | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tools/testing/selftests/mm/split_huge_page_test.c b/tools/test= ing/selftests/mm/split_huge_page_test.c index 5d07b0b89226..89d3dc08fe4c 100644 --- a/tools/testing/selftests/mm/split_huge_page_test.c +++ b/tools/testing/selftests/mm/split_huge_page_test.c @@ -38,7 +38,7 @@ uint64_t pmd_pagesize; #define KPF_THP (1UL<<22) #define GET_ORDER(nr_pages) (31 - __builtin_clz(nr_pages)) =20 -int is_backed_by_thp(char *vaddr, int pagemap_file, int kpageflags_file) +static int is_backed_by_thp(char *vaddr, int pagemap_file, int kpageflags_= file) { uint64_t paddr; uint64_t page_flags; @@ -136,7 +136,7 @@ static void verify_rss_anon_split_huge_page_all_zeroes(= char *one_page, int nr_hp rss_anon_before, rss_anon_after); } =20 -void split_pmd_zero_pages(void) +static void split_pmd_zero_pages(void) { char *one_page; int nr_hpages =3D 4; @@ -148,7 +148,7 @@ void split_pmd_zero_pages(void) free(one_page); } =20 -void split_pmd_thp_to_order(int order) +static void split_pmd_thp_to_order(int order) { char *one_page; size_t len =3D 4 * pmd_pagesize; @@ -182,7 +182,7 @@ void split_pmd_thp_to_order(int order) free(one_page); } =20 -void split_pte_mapped_thp(void) +static void split_pte_mapped_thp(void) { char *one_page, *pte_mapped, *pte_mapped2; size_t len =3D 4 * pmd_pagesize; @@ -265,7 +265,7 @@ void split_pte_mapped_thp(void) close(kpageflags_fd); } =20 -void split_file_backed_thp(int order) +static void split_file_backed_thp(int order) { int status; int fd; @@ -365,7 +365,7 @@ void split_file_backed_thp(int order) ksft_exit_fail_msg("Error occurred\n"); } =20 -bool prepare_thp_fs(const char *xfs_path, char *thp_fs_template, +static bool prepare_thp_fs(const char *xfs_path, char *thp_fs_template, const char **thp_fs_loc) { if (xfs_path) { @@ -381,7 +381,7 @@ bool prepare_thp_fs(const char *xfs_path, char *thp_fs_= template, return true; } =20 -void cleanup_thp_fs(const char *thp_fs_loc, bool created_tmp) +static void cleanup_thp_fs(const char *thp_fs_loc, bool created_tmp) { int status; =20 @@ -394,8 +394,8 @@ void cleanup_thp_fs(const char *thp_fs_loc, bool create= d_tmp) strerror(errno)); } =20 -int create_pagecache_thp_and_fd(const char *testfile, size_t fd_size, int = *fd, - char **addr) +static int create_pagecache_thp_and_fd(const char *testfile, size_t fd_siz= e, + int *fd, char **addr) { size_t i; unsigned char buf[1024]; @@ -461,8 +461,8 @@ int create_pagecache_thp_and_fd(const char *testfile, s= ize_t fd_size, int *fd, return -1; } =20 -void split_thp_in_pagecache_to_order_at(size_t fd_size, const char *fs_loc, - int order, int offset) +static void split_thp_in_pagecache_to_order_at(size_t fd_size, + const char *fs_loc, int order, int offset) { int fd; char *addr; --=20 2.50.1 From nobody Sat Oct 4 14:35:17 2025 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2041.outbound.protection.outlook.com [40.107.92.41]) (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 8B279220F30; Fri, 15 Aug 2025 02:39:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755225589; cv=fail; b=bji4DoFYuWf8wqSSOyaIRMAPWxBn0oz78SBukOk6liEkphg3PIDStXEdamowZzXAEPamcqWBGx0eAKyISjuYG/0Ik10XZnbCz851MBkCz9+Z++TviioWR4PFM4DRYmJVHZFnTYv7i/Yw5u1eonUHV/ppplVZGqeppvLOqzh9xe4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755225589; c=relaxed/simple; bh=rKs2EsyIeg6qMWJyJaZPKLjZHLKdceYf48lUdOkvvks=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=n/UaXNFF8rkECqAiMyXJcBmGkwOQr27CZvLtcOq7yr+88e2JzKt24+bCT4Pv9TuG/o7B82cgXZlJx4tfzB5R3KG+tC+IypLkxb/MI8BYFJqxCoAh3gtIdRmHYK767sbmeEXjn29LJpdY7QKhhSWBSQ4lkYED2PKrp4IwlotVB3E= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=jXFGH2X6; arc=fail smtp.client-ip=40.107.92.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="jXFGH2X6" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zD3w+0ZMaseQHvqH+DrCTdS7gB5mpkP4rKevj/cDbneWksLCCQwTVmg7v9a4ljVeGOzFFCII8t3M09sWypGXgpqPCdtWryxAXRs1NIxo921vJXi4QI/ISo6TkfsIFtp59DMYV76ZhAmhO9cVeFrx+SZcRfO6PQWgsb8NzNyz6IgjFoIxhYRHPXz9Yfe4o4XRuiP7JxhG4Ft0iCWNrBgqs5eBiiMwcIiV+6CCsZk13xQ1a6O+6vnDz93zRFR5iFzoCNxNnuzur95HxZKP5WDCydc1LrGeaIsTAtlzUKO2D0rD5XZckuq7bW/QbD6chUwHGriFQvRHxrJaLGV4+o3OvA== 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=ZOFucGLbAtIDgoQmxbAMel8LUFNABmzph7RuE2bUnPI=; b=EwV8VsTHC6DnF2q9ztaIa7G5YV+MBaVlMDZmW7q5YUlo2BLOK3DVEZf2M1EaWVBUJ4Pv5s+LRjEDTF5XlU6orK1qa4+0nyrqYjTha2vYZGSuY3qkwryepzskiTXV2ToI10iMo6VWmlHnZZWK80MaNT+GSyF5zxhkwF87mFP4s4yW1ezr4++w+86g4UN6/rDNcZKmx+dFy/tyRCEOe18jgkWxwrzcFQ+X34u87npR7nHatYfKG9bqy/DA3WFwfJwcIe8mO0zSDQQM6loN4Isuri5U7rnO6DlWUdkwvCS5p8z7KROdHQwzx9wBwjoqhm1BemP9UtOB/gmUosyuzEXGVg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZOFucGLbAtIDgoQmxbAMel8LUFNABmzph7RuE2bUnPI=; b=jXFGH2X6D43ua7Zwh5r6Ow/FCHBtc2nyCGhza0igY0iA7zy4W0h7cY034g84xxbrMOLH/UVMxHy+FZSYbQm50CzqBCna7Gx3sb4AaVUMefjw7cKRAxWQs3gQeU6OWSu1xK52jIpe7PKBoH5FTBzf2PCQNE34uPzqanZdG6pygzzqBjq9NYqlphUqq39TzI4Uq1Pp7tvQrMxlgyV2ZcoqDmJRrkdDBMDb3wH9KZ6iiWM/q+Vn3eJvh+ESqtAJKv+j/kHN4iX/xYAKnNt5wWFOhI7Q5mr0uVjHHlrWLF719ldjBTU9G0wYFqklXla/2lebY6nMhZ99+7/AqMmd7uvseQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by SN7PR12MB7226.namprd12.prod.outlook.com (2603:10b6:806:2a9::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.14; Fri, 15 Aug 2025 02:39:40 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%6]) with mapi id 15.20.9031.014; Fri, 15 Aug 2025 02:39:40 +0000 From: Zi Yan To: Wei Yang , wang lian , Baolin Wang , David Hildenbrand , linux-mm@kvack.org Cc: Andrew Morton , Lorenzo Stoakes , Zi Yan , "Liam R. Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Shuah Khan , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v4 3/5] selftests/mm: reimplement is_backed_by_thp() with more precise check Date: Thu, 14 Aug 2025 22:39:12 -0400 Message-ID: <20250815023915.1394655-4-ziy@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250815023915.1394655-1-ziy@nvidia.com> References: <20250815023915.1394655-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9P223CA0028.NAMP223.PROD.OUTLOOK.COM (2603:10b6:408:10b::33) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|SN7PR12MB7226:EE_ X-MS-Office365-Filtering-Correlation-Id: 95e60f47-aa00-4ead-126d-08dddba4fbf6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?h1fUKQGN9xGe1cZ3vYnML2P9k2NOVFYQGkO12WH3eYxaNyyCzyIARPTpMlaP?= =?us-ascii?Q?hPu+5nlME0TPQpauF2Qj58ps7SlzTKg/gcnP6Wj87hdQohVr7tKFTXR8G/qj?= =?us-ascii?Q?aHAqf+IDYjAZ9boefD83q8pwuiXnPlG0EgvfTpV6BEXCQzKtyWLSZ9KQ2pWV?= =?us-ascii?Q?/iLWYYkmizkPSz7ypcZ78wskw8f72zu2PU5pq7NwROECx+5DVMEXOaoRbcDp?= =?us-ascii?Q?30Lh36NrHRRROvMxjFryeQedmKTFVaG9QDIhTmxRO1vzfBiFOL8skO04f/wh?= =?us-ascii?Q?H3qQeBOYOL/DvGq2t+GNexmj2N4f5dYmr/rldxKXP2OsjS+MYaPqfcluazt4?= =?us-ascii?Q?TYIQL2W67ah/CC9cUFVQsrgz+OehgSWawMs+RTyIlbkY6NIZpVm8rlHdhi64?= =?us-ascii?Q?alH2qpoGWf/A7TaaIRu6ngJHt7/x6VF/d1+KqxVhdHSwtUx8I0Km5mWM7jT2?= =?us-ascii?Q?PTRH73VTlWrfOKZo4l4H5s6Dv17Vs2ln/n1ODVaDmFzwIdmIuOA2rzQMpHOf?= =?us-ascii?Q?RANtk0NLk/QYj9Da01D1i9xwY17PKAQx+tcF2bf3nsd54eB5TWptijmpRZ6v?= =?us-ascii?Q?mc++NEGaojFLxdDugHfIhQ1x9bPKh7Yy+/kJldOT+hMx76ueJozajK4F7Aib?= =?us-ascii?Q?tcQtGsGnKnbmnXtImGrOlSuGWepfg8WR0BOlnudaaStd1pkyDDiVFcaAZKfo?= =?us-ascii?Q?GEcGikqOPtAYRojBxItSq5vAKnr3VEH4tpcXMbu7PzAUYUz9LtzjXKjtiFHw?= =?us-ascii?Q?klOJRncADYhtoJBtzRsjdSgmRPITg3LSbXIJJf/8Y4AONJFKu8ljYlg7wCJX?= =?us-ascii?Q?EZJ2k009zNzbUNlrcV0eL01wa/t3uakCAj+GRY9iKP26i5lDIVpx1i30Eq97?= =?us-ascii?Q?8rgD451P6jmOpP2vwLOaC5ml8zn+FfXrd2HubmmpPMBQ+HHCnOad7QedFmqr?= =?us-ascii?Q?1HCHt/hN50uisfWILWF2wTBoyqNK0kXoB0q7mGanoBcgBtvuRvSOr9VUlXG8?= =?us-ascii?Q?eg7okPVTgc4lsSLY6+/m4Bym0OABI6OPEs54WpwI4ihmmLNCQvx6NidNO15V?= =?us-ascii?Q?ApEhwHif9AwLEeNf+1d4VdipDIyRzKI1m1BjTRhNU/E1x46SCN+O9PE1sOR9?= =?us-ascii?Q?NXjxD/Viy9yrDzt/+ESz8o5nvyBzCUT+0n9g9dkKAH26dkzJe2FhavCEQv5F?= =?us-ascii?Q?nbfNZlQyFHdw6ShX11/0ps6Rw0qlstWZw811fcrZWhRYCBDOXn6goBlHwLAA?= =?us-ascii?Q?CfT9Vik85dZDZ3zT9/0XzcmbPC2Hx+rtUeCvDZrh5ldxUKm7lDHg66Gy88/H?= =?us-ascii?Q?fTZcahEcYlySfFC735X8KZ19u+gl6mJfml/8amNaZfLbC55yIH0BjV3Ek7Oq?= =?us-ascii?Q?hMaNqsArlMnqDqdpehgw20g6689IV2fo/G67wOFpVhzbyeTzUydR53XcKFLm?= =?us-ascii?Q?xgCrlcSZPOU=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB9473.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vPKdVt0EF3OAmJDDSZxa8ir969/pLJjox12Ey9Cdx793rIF4q4KO50UEvZMi?= =?us-ascii?Q?8JHbN/sPKBcEDwf0aAYlf8kxxskP+cJG9ui/FqpDKBAHe4puG9l6IvJhm13z?= =?us-ascii?Q?nse023TRl2VLMC+iE9hnoy/DqD3NIQS3gF9Na0dnvuTaYBWS/rycsAJBuzaw?= =?us-ascii?Q?SUpsDoLnqCf+1fPiuHw14yaCscqk6f+4Gk/JmjFK9yl/zZEk4GUP0D1JugP+?= =?us-ascii?Q?puIUbgp8l7Jfzjozv3xfjI94840cqJ44g+VuSRTyrd0qF/2IZcfolEeS/WA/?= =?us-ascii?Q?W+OOVoEtY4rvzhZgXNCufzddeBNjwfUu2wQqD+whNphyMZFMnDzQxwaWcyM+?= =?us-ascii?Q?sRn7dBH3gKisPKdlCZocfg559YvzpWS9huT8uxW7hRWce2Civ9dJrFrzL3my?= =?us-ascii?Q?PnVSISSr9UctE4FCsGCXq1ONA7n/4359AQtGg4crVBPGnT/MBXnu/pGImLu5?= =?us-ascii?Q?ohg5NI8NvJJ35cYE2bO6AclQ9De8FDHDPVhmrc++jJm/gOuaqRBQ+nXYjfeu?= =?us-ascii?Q?BZrflrPINQKEbqK/xbGPA/uU0Ur77DXpv5iX9BK8WQKeE+83pfebVtCB9KNr?= =?us-ascii?Q?sJYTUd6z99F1tuup/bYr+vlZFgnz8XRvGE7U2JKm34GBrwsjqfMxa8dLqnzB?= =?us-ascii?Q?P1vELcGaiDT2qAAwqVr2UjP3misRB7jezdPXYd3mVlaUpVHrXt01x4ghsqXh?= =?us-ascii?Q?l4hRKfrrDqYVS7KSghvxJAG2XrxRYZu6baZ0DgJvoS0gu3Vr/7fAiz24x0Ii?= =?us-ascii?Q?RwKLh9LKWprGMKz4tE76DrgsdHgX+P5+Cgva9cjJ4flQwYonjg6Au8YYvg10?= =?us-ascii?Q?nLDOfLTJDwlcld4TxHCOCrpNtYYibjkF16MmnbcRHkXjhA968o9JKoWxGDl+?= =?us-ascii?Q?Mnb+WhJSDfUMPBOFh9/Z107XabeKC30xbOdp0J3Cr5lu8iQAbJjglIealphB?= =?us-ascii?Q?2jKvLpv+RvbPuYWiHhoqdT/EJ2J/yKQhphIO6cllcAqYmuBhKkt+4K9inj8L?= =?us-ascii?Q?LBzRlgHMX8QiQyBAvtZWL/2d806Qe1SmJKWZ6HYFWi3pPYtUzmdDyufbExSK?= =?us-ascii?Q?mgU82QL0L6DFsq6QJT5UMXmluEQpSB2HLUQe5oAl7aCQENuP6u991Nepgw/m?= =?us-ascii?Q?JE7SNC4KgvIu2PwZMmBHo+aEIN77xzyP676hqC3TQEn/OzD+W1OOCqy4CYxH?= =?us-ascii?Q?X+3ENW7jq5tV5TJOZ7PhG7rMVHD2nr6ww+f5HRgn1oe4rwf7LUbx1JJOloVL?= =?us-ascii?Q?LrUHQt7GYKRvmkpUoqy5eox1ROoryhAvorzxTKcL70nfyXAChUeNnukHB3NL?= =?us-ascii?Q?x3ZW6G+9zurwNKiXHvM2Fa81NKrE+5iZw2Nb22nMLOOXCxSZlSl4A1PLyTFh?= =?us-ascii?Q?i0HAgfvoz8K9EjM22gl5mlc35cua8sJL1YI5Jhy48kzXcNVXLZRJz0ZRZmMr?= =?us-ascii?Q?2tuPszX8qwrjrDsvuOfTkbvbiOa7GcYLqpvyzpiMfYXOPw9Kxl87P4ConChp?= =?us-ascii?Q?DrnIjSPM9wuoZhWaIi0Z7hxpN0B7JlNwFfK5uGAgt8Z0KuPK2+Cq/KVwr+Rk?= =?us-ascii?Q?OyBLezP20ihKBiYMu766AzM2QF28CYajzWXyR8my?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 95e60f47-aa00-4ead-126d-08dddba4fbf6 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2025 02:39:40.5784 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6WxREiRA7nB4rmHAqk3+5q/d0/FtIfd7mfL6euXL+ZEdQRNEV6eOCVEsCBFmaY/3 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7226 Content-Type: text/plain; charset="utf-8" and rename it to is_backed_by_folio(). is_backed_by_folio() checks if the given vaddr is backed a folio with a given order. It does so by: 1. getting the pfn of the vaddr; 2. checking kpageflags of the pfn; if order is greater than 0: 3. checking kpageflags of the head pfn; 4. checking kpageflags of all tail pfns. pmd_order is added to split_huge_page_test.c and replaces max_order. Signed-off-by: Zi Yan Reviewed-by: Wei Yang Reviewed-by: wang lian --- .../selftests/mm/split_huge_page_test.c | 90 ++++++++++++++----- tools/testing/selftests/mm/vm_util.c | 13 +++ tools/testing/selftests/mm/vm_util.h | 4 + 3 files changed, 84 insertions(+), 23 deletions(-) diff --git a/tools/testing/selftests/mm/split_huge_page_test.c b/tools/test= ing/selftests/mm/split_huge_page_test.c index 89d3dc08fe4c..80f718ca21c7 100644 --- a/tools/testing/selftests/mm/split_huge_page_test.c +++ b/tools/testing/selftests/mm/split_huge_page_test.c @@ -25,6 +25,7 @@ uint64_t pagesize; unsigned int pageshift; uint64_t pmd_pagesize; +unsigned int pmd_order; =20 #define SPLIT_DEBUGFS "/sys/kernel/debug/split_huge_pages" #define SMAP_PATH "/proc/self/smaps" @@ -34,27 +35,71 @@ uint64_t pmd_pagesize; #define PID_FMT_OFFSET "%d,0x%lx,0x%lx,%d,%d" #define PATH_FMT "%s,0x%lx,0x%lx,%d" =20 -#define PFN_MASK ((1UL<<55)-1) -#define KPF_THP (1UL<<22) #define GET_ORDER(nr_pages) (31 - __builtin_clz(nr_pages)) =20 -static int is_backed_by_thp(char *vaddr, int pagemap_file, int kpageflags_= file) +static int is_backed_by_folio(char *vaddr, int order, int pagemap_fd, + int kpageflags_fd) { - uint64_t paddr; - uint64_t page_flags; + unsigned long pfn_head; + uint64_t pfn_flags; + unsigned long pfn; + unsigned long i; =20 - if (pagemap_file) { - pread(pagemap_file, &paddr, sizeof(paddr), - ((long)vaddr >> pageshift) * sizeof(paddr)); + if (pagemap_fd =3D=3D -1 || kpageflags_fd =3D=3D -1) + goto fail; =20 - if (kpageflags_file) { - pread(kpageflags_file, &page_flags, sizeof(page_flags), - (paddr & PFN_MASK) * sizeof(page_flags)); + pfn =3D pagemap_get_pfn(pagemap_fd, vaddr); =20 - return !!(page_flags & KPF_THP); - } + /* non present page */ + if (pfn =3D=3D -1UL) + return 0; + + if (get_pfn_flags(pfn, kpageflags_fd, &pfn_flags)) + goto fail; + + /* check for order-0 pages */ + if (!order) { + if (pfn_flags & (KPF_THP | KPF_COMPOUND_HEAD | KPF_COMPOUND_TAIL)) + return 0; + return 1; } - return 0; + + /* non THP folio */ + if (!(pfn_flags & KPF_THP)) + return 0; + + pfn_head =3D pfn & ~((1 << order) - 1); + + if (get_pfn_flags(pfn_head, kpageflags_fd, &pfn_flags)) + goto fail; + + /* head PFN has no compound_head flag set */ + if (!(pfn_flags & (KPF_THP | KPF_COMPOUND_HEAD))) + return 0; + + /* check all tail PFN flags */ + for (i =3D 1; i < 1UL << order; i++) { + if (get_pfn_flags(pfn_head + i, kpageflags_fd, &pfn_flags)) + goto fail; + if (!(pfn_flags & (KPF_THP | KPF_COMPOUND_TAIL))) + return 0; + } + + /* + * check the PFN after this folio, but if its flags cannot be obtained, + * assume this folio has the expected order + */ + if (get_pfn_flags(pfn_head + (1UL << order), kpageflags_fd, &pfn_flags)) + return 1; + + /* this folio is bigger than the given order */ + if (pfn_flags & (KPF_THP | KPF_COMPOUND_TAIL)) + return 0; + + return 1; +fail: + ksft_exit_fail_msg("Failed to get folio info\n"); + return -1; } =20 static void write_file(const char *path, const char *buf, size_t buflen) @@ -235,7 +280,7 @@ static void split_pte_mapped_thp(void) thp_size =3D 0; for (i =3D 0; i < pagesize * 4; i++) if (i % pagesize =3D=3D 0 && - is_backed_by_thp(&pte_mapped[i], pagemap_fd, kpageflags_fd)) + is_backed_by_folio(&pte_mapped[i], pmd_order, pagemap_fd, kpageflags= _fd) =3D=3D 1) thp_size++; =20 if (thp_size !=3D 4) @@ -252,7 +297,7 @@ static void split_pte_mapped_thp(void) ksft_exit_fail_msg("%ld byte corrupted\n", i); =20 if (i % pagesize =3D=3D 0 && - is_backed_by_thp(&pte_mapped[i], pagemap_fd, kpageflags_fd)) + is_backed_by_folio(&pte_mapped[i], 0, pagemap_fd, kpageflags_fd) =3D= =3D 0) thp_size++; } =20 @@ -524,7 +569,6 @@ int main(int argc, char **argv) const char *fs_loc; bool created_tmp; int offset; - unsigned int max_order; unsigned int nr_pages; unsigned int tests; =20 @@ -545,28 +589,28 @@ int main(int argc, char **argv) ksft_exit_fail_msg("Reading PMD pagesize failed\n"); =20 nr_pages =3D pmd_pagesize / pagesize; - max_order =3D GET_ORDER(nr_pages); - tests =3D 2 + (max_order - 1) + (2 * max_order) + (max_order - 1) * 4 + 2; + pmd_order =3D GET_ORDER(nr_pages); + tests =3D 2 + (pmd_order - 1) + (2 * pmd_order) + (pmd_order - 1) * 4 + 2; ksft_set_plan(tests); =20 fd_size =3D 2 * pmd_pagesize; =20 split_pmd_zero_pages(); =20 - for (i =3D 0; i < max_order; i++) + for (i =3D 0; i < pmd_order; i++) if (i !=3D 1) split_pmd_thp_to_order(i); =20 split_pte_mapped_thp(); - for (i =3D 0; i < max_order; i++) + for (i =3D 0; i < pmd_order; i++) split_file_backed_thp(i); =20 created_tmp =3D prepare_thp_fs(optional_xfs_path, fs_loc_template, &fs_loc); - for (i =3D max_order - 1; i >=3D 0; i--) + for (i =3D pmd_order - 1; i >=3D 0; i--) split_thp_in_pagecache_to_order_at(fd_size, fs_loc, i, -1); =20 - for (i =3D 0; i < max_order; i++) + for (i =3D 0; i < pmd_order; i++) for (offset =3D 0; offset < nr_pages; offset +=3D MAX(nr_pages / 4, 1 << i)) diff --git a/tools/testing/selftests/mm/vm_util.c b/tools/testing/selftests= /mm/vm_util.c index 6a239aa413e2..18b7cb51fc56 100644 --- a/tools/testing/selftests/mm/vm_util.c +++ b/tools/testing/selftests/mm/vm_util.c @@ -338,6 +338,19 @@ int detect_hugetlb_page_sizes(size_t sizes[], int max) return count; } =20 +int get_pfn_flags(unsigned long pfn, int kpageflags_fd, uint64_t *flags) +{ + size_t count; + + count =3D pread(kpageflags_fd, flags, sizeof(*flags), + pfn * sizeof(*flags)); + + if (count !=3D sizeof(*flags)) + return -1; + + return 0; +} + /* If `ioctls' non-NULL, the allowed ioctls will be returned into the var = */ int uffd_register_with_ioctls(int uffd, void *addr, uint64_t len, bool miss, bool wp, bool minor, uint64_t *ioctls) diff --git a/tools/testing/selftests/mm/vm_util.h b/tools/testing/selftests= /mm/vm_util.h index 1843ad48d32b..03481ca0a1b4 100644 --- a/tools/testing/selftests/mm/vm_util.h +++ b/tools/testing/selftests/mm/vm_util.h @@ -18,6 +18,9 @@ #define PM_SWAP BIT_ULL(62) #define PM_PRESENT BIT_ULL(63) =20 +#define KPF_COMPOUND_HEAD BIT_ULL(15) +#define KPF_COMPOUND_TAIL BIT_ULL(16) +#define KPF_THP BIT_ULL(22) /* * Ignore the checkpatch warning, we must read from x but don't want to do * anything with it in order to trigger a read page fault. We therefore mu= st use @@ -85,6 +88,7 @@ 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 get_pfn_flags(unsigned long pfn, int kpageflags_fd, uint64_t *flags); =20 int uffd_register(int uffd, void *addr, uint64_t len, bool miss, bool wp, bool minor); --=20 2.50.1 From nobody Sat Oct 4 14:35:17 2025 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2041.outbound.protection.outlook.com [40.107.92.41]) (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 0B5F229B776; Fri, 15 Aug 2025 02:39:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755225592; cv=fail; b=hsOqgoc4d84omgmoEK7y9iQIA3+Vbls0mtXZb5pEJ5WA9Ttep2mhVIlOlbr8IHjymtFjrrR4a+jWcu7U062+5ReMqcURpdFUHJxfpgFsILySo7tDdoPZADvtmsWxrERWrBKv5FfPWzQLbeydHV1hi6TVCDpEgur7RcbhWJki+3E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755225592; c=relaxed/simple; bh=7F3A9eXV/RNeYnDM8XE+lMnqmlU261GXJltKW59KixQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=UECKlA3IDlIIqcv/aECDBaRq8JMgogAEbqMmjAKlbItrQBIMbkirVaIqoFqHGGDom/AFvPJQyEnp0fW06ILhoxtKlBJiWYoxADyz6X0V1TjGj9Pe58z2B+VAZYL/UPq18SjMFFi8lzNLfRdZyq3vilqRErMEyQtBxlt+hFUGtBk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=teH40Boi; arc=fail smtp.client-ip=40.107.92.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="teH40Boi" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YcysQ7M9WH+n05Pd2uq4F1bKBPW0jcCb6QLksltW5+hOyCY+x82A954eN0sc+W6AgDSgp5jJqrYtULqYvOIePAL5kXEEMmwkEolASNfZbbF04KK7dkxz9OtGshcsjjtm9nTZn6sRVjV48uQjVhugmmogwSXPjHT+MUr6XhPLl6kQjkIIvs2w6eA1mwiDjZiifQfUL7kQgNVI4fpM6G/n86dRZrOW2xFNEPnJTFvl/Hdit7QeCJUbsK6t6XhQ2OtheuoX1anrtoHQboPesLH9Ft+MLYYXkV+cYXJjeDCXeNfSiNPwfWMw0/CCBwAhPfXdHAxeyAu4hmhy0OuUWSgkNA== 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=nOrMBoqBO0sEo1cRgG3waLlra/epJIeXy4v/9JmSdpI=; b=t+4jWoe+jDwqIFM1f6EV6JK6FqatGi2tvS/+zHjw8tZL5h5gMXRxvu4k+PSMsSLmMJeVd9qEOnlVJFTTX35xMIw3JeflZq1Cu+OONxDRyg2QEJrllezSjxzBvyeXM3/Lj/8EelRkU0FibDLDB+xNOIAHQI3Qo9K3fAdJLQunZJPl3vZUU8UXBTPP74NJIPD1ZoKVjjBKMy8u7E5mlttGs3fdTb+jE/kkHTkFEOObWwcCh4Wj0DCeAEmcZglww8H/7/yTgChZdQMmX9if+ETPRgCJ0b20apgT9mvg75VOJw5+ef9LRw1GStAtrkPfVrnuTZ9qPPIjblHlxrIp1u6x4A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nOrMBoqBO0sEo1cRgG3waLlra/epJIeXy4v/9JmSdpI=; b=teH40BoiVYV/5dMGdfdiZEGMX5dOHRXXjNitQhYL42jlTKSDp8t6OMvJu/eVBPepHpv2urtOr0kbqKgDMWP4meK2krpBcw/0jM5GnxIi61Lll30X668o8cqpNFU75KnX0lqUupsvkgAoHIr1Pv05krDhurmK5eoCCCO0BCfR+ccontvhyUQEPcMI29stbStQ3e+n5dFKV4qcUBiVgHLxCUjQWWcGhz5g2GNmfMF6ltf8OEqCli7mXm6ngx4X0RS1CzaLLnH6PXoDF2q9z8MjGrA8/uh9Sn8UxPfybGD1NC61J5lMzW27oWrGfJSORZ6AZFs0ucKbTQ6ycKyvRMxZXQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by SN7PR12MB7226.namprd12.prod.outlook.com (2603:10b6:806:2a9::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.14; Fri, 15 Aug 2025 02:39:42 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%6]) with mapi id 15.20.9031.014; Fri, 15 Aug 2025 02:39:42 +0000 From: Zi Yan To: Wei Yang , wang lian , Baolin Wang , David Hildenbrand , linux-mm@kvack.org Cc: Andrew Morton , Lorenzo Stoakes , Zi Yan , "Liam R. Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Shuah Khan , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v4 4/5] selftests/mm: add check_after_split_folio_orders() helper. Date: Thu, 14 Aug 2025 22:39:13 -0400 Message-ID: <20250815023915.1394655-5-ziy@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250815023915.1394655-1-ziy@nvidia.com> References: <20250815023915.1394655-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9P223CA0010.NAMP223.PROD.OUTLOOK.COM (2603:10b6:408:10b::15) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|SN7PR12MB7226:EE_ X-MS-Office365-Filtering-Correlation-Id: 1412d48e-07ce-453c-bae9-08dddba4fd1b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?yAd8M+/SeSlgHUQrKQmPjsV8delMnx9sTOgCQhlLZCZ8sY2gScciM/tOuBe3?= =?us-ascii?Q?6QhmCYA+9fxS42eTA9WPxr8MEb5OXla7PMBaVkyqpRvU9Ds7WLQ+qLY9rnJL?= =?us-ascii?Q?06uZ++HBKxWymdpnvxEg4krSkt40iQ7XdPUuYrCdZcro/1nGam74+l86UttR?= =?us-ascii?Q?9p3PD4vaURLSiq+T47ief00KzbMSxdoMApH1IZtMCGtuD/SzqDa5Ge3nmyG3?= =?us-ascii?Q?4fx8QeBr5GIl3DB9rW/16yvxkZxVCFYh9Ae0waALR/rM5Uh6w15gvAvf86pD?= =?us-ascii?Q?Zym2Y9YAWAQgxnZIv29q7A4FxxApi/l9YtyIWCFcZs6GAUKr+h3MqAZWHTGv?= =?us-ascii?Q?IRKUqLG/EwR84Fk8U+ZY/SdJ680CT6ldy2rdNEOH3YVBdw7M5StUJeVaY2KV?= =?us-ascii?Q?oKxxn9RhrsirmnGNJTzIlEY/+anramk4AG/xFY0fXClHEw84O7veK29BS05H?= =?us-ascii?Q?+x5Jf5nvc1NH/S50c74Ny7gDxkYW2kRUzQkfytFNigzXR98HH2AUaiUni6dt?= =?us-ascii?Q?3o5YmSr6Yp+C3bZNp1EyYVcxmXNlUZrjo7pYWJhcuFUaX6PmH6I60Ohc7CrH?= =?us-ascii?Q?7sO9IbiqwaifOMUy9WfbWn8icDo+B+9bFl4XQcbzvtogARUSgnwpFQpaUImR?= =?us-ascii?Q?pXpQawzGl+MIljCnGxofqTDuoAHi2GF8NJt4c3PfCXKinDFjYp5vw749dEgF?= =?us-ascii?Q?n0q8kPLHQWtAwplSPOy0OWz1Vsa0t70Ze3KjvLr2NzYqDGX6xPNAhWP6hW0w?= =?us-ascii?Q?1pepbF6QWT8SUWvaq6jXnRu+rZLIXqeVoOaopHsKPQl9ddoEOguZvehaVAe1?= =?us-ascii?Q?WrHbAtUD7jB/vQIGo406VzaFD26Z0h/egNpffxU+z3NvN31Lv/EphmujM3z1?= =?us-ascii?Q?3dlokAswAhFS+3tFRFLQRA73WWDbHDddI7q6uIzztZ/Gj6tCsSQCbk3TH6fK?= =?us-ascii?Q?cRRVZksdCCDu34jFExgSmF+IWPciDgX0hTApBK7LhqA/nXMtAF3A1royPyDH?= =?us-ascii?Q?YDlbceC3NRUDJaAoVicusuvopj5F6upZt+ELssGmEnpHIfc1ojNGj9YQBTaP?= =?us-ascii?Q?+HNmeoh94SAw4lUsdheWLpnPPazBM7IPqvyBde5RqC7AkkLwteVxbfakuJpM?= =?us-ascii?Q?x2pcqpW+fCEV6QdyxwwEbENSk2iKm6UJYZ9n4eMaB+m6sQhJ9uXP1M3lgIDX?= =?us-ascii?Q?6r1zHDUo8DWFlSSuP1uSXp+S56E5Kd8cPwE74ExoaDLpo0n2YCVbzAo92qFg?= =?us-ascii?Q?RGMzo7hbDccbW+TLzWWM1DdXtXA3aJYHr7ltVkz5+AQMLkddK2UqOQxgUCEY?= =?us-ascii?Q?ka2KnhHBM+fIuUk3nsBrMXO8e298F1UOOgBxE4nXV2ScbAF6WtnKHsPV9h+n?= =?us-ascii?Q?dfCznNj7O70Bc/nkLsw/2gI6dFkPzAnHarpDGq/aMq/SIEtHPr/Q+Aj7e/Qs?= =?us-ascii?Q?NTOBvkeR2yM=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB9473.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?81g0uL8RyB8Kwrh/un8d4WEmFusuHnLjUUbk317hgbY6OSbwK/jKZKsU9RdZ?= =?us-ascii?Q?uBOSmSEO5XKYk28Rn0XTWMSXO+S1JS4H+/W3LlSs9sGODkvCGU5AeFg3+zwu?= =?us-ascii?Q?CXnMlalIjyIfZvEJx1pgkJ/6TvYB0u5ZCI+vTRnnjRB5TvF3XImC0vr02+cG?= =?us-ascii?Q?8WxPMWg/PLPkmX5lR6vjoW3yPQrXNVFB3GYZYjsvRi3mlJdZYnCFq54bLltW?= =?us-ascii?Q?JBvt7DFFtMknn4Ea/eTTy0/XXNjiNVE0xMyQ+Hd/A/vBatQWEm0xd/YvR3e9?= =?us-ascii?Q?Uc1V/5dVK3oJ4ZLQvitnDBBvrODyXHM3cyzNGbbJxcK0eA1AzW8Lw4FBq195?= =?us-ascii?Q?aZsxFOOMF6Ck9Qik5Yl1dsJtt8MDgeiChJc486dSkxxM+zfJAutKnBmlUkm+?= =?us-ascii?Q?40c359k41tqFRXtxDcBIgmz5X3xpezm8jlTsvXv02YTLtY8gmb2w/SkbVy5v?= =?us-ascii?Q?f2hQRC3PZAbg8gtjx/1YFwLKfuEo0aE4RFCzcI5osfcBrHb8CyN5763HDMUM?= =?us-ascii?Q?LHVN6NdD/+pCo83zGF4Cd74WF1C1H6ncdTTs9OZtIioScJTURvlF+X0XhiVL?= =?us-ascii?Q?mE+OP8OuFJN73Shq3vzUSQdC8yFQ/4bqBu8rJ6ORpX25YKRJha72GH9Q/hHh?= =?us-ascii?Q?kVxgfg+3qbK8qhbv33krSlvQ98ZUaaCu1+qHLyLpr6FLJMXOcXOHqHtM2ugw?= =?us-ascii?Q?0rt6i+aJJe6p7pCyRkriZHWz832zPqrJPsH1L56w4WifXH63Ew4LpkDsvBlg?= =?us-ascii?Q?NEBami1lfE2ESgXBFutAeQLB02JpEGp0k7FKG1W/K2QLSdbQP2iUITVolPKv?= =?us-ascii?Q?kmQoAH5u+O90gg6oViC1H+oYOm8iori6T2Ev6yl3jMzq/NQR+La/IRCXnFuX?= =?us-ascii?Q?CNGwXtow4db5A0cTSOi2a69xO8aPwSMDie+qqs+p/m5zQrdxcfz0EZnr0ee3?= =?us-ascii?Q?yQIddUibyYkhF/5pR+4QOuKUn268LRXLf/tV2KkLDfr1/AJEtdqpGVgXjbsc?= =?us-ascii?Q?VPFdjyaRdOfMkyLxZdXSbFlB65xRLscBiYjVU+fPTxNddWXoPd09+/RIMKVE?= =?us-ascii?Q?zvDoKGedecyWguKUjAAE3+pMY1Uh9mtOAFRq6uhvApuq9WvP39a+H6wRqlOW?= =?us-ascii?Q?OA80NWE1dYIyU0I52u3olC4Qztl/r3wHAV6Ii4vsv/4DPMmqI64DPEUs1Och?= =?us-ascii?Q?fVidh1lvWJPnz82eP9HaEGt/0oY2oSNKj8zaNfxjSq9nQVNK0aoYm7jnqraI?= =?us-ascii?Q?3pF5W+rjxMhLqSO0Gy7DN//6Cfx9fQMdeBdX0yWoGfHtIdbuE7oP1Uo6HkwA?= =?us-ascii?Q?sE21wzaaStsKiYvz3TjDPj+ujMCd9410P2DuHtfpmWrv+ZtgRVuZZ8+PLJX9?= =?us-ascii?Q?0iT2MzN6xc1cHbpnSsugUV+NL7qXsr4jttnHlKtaDMFAF9uZj+IiXm7hxeZd?= =?us-ascii?Q?VKPnJUgeJF3GyPcwc523XZFvqrZIws3MODT1TSHV69Dx3kIKwW7OxwIY98qH?= =?us-ascii?Q?CbVvWLzcZXHT6Rcx4j5IZCk2WNbUJNjk1jJ+UiRfKsaHR8x9Z8TDwx/HsXET?= =?us-ascii?Q?CuseTzUhaKvLxCtSEPQDDRVdedaOKiVFsFqramHL?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1412d48e-07ce-453c-bae9-08dddba4fd1b X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2025 02:39:42.4971 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lCL6uWo7sFvC+b6XGKdNwOfhrsuJoWFbwHeElb/zV2Jv6QzMMJcDwQ3icZwYncoj X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7226 Content-Type: text/plain; charset="utf-8" The helper gathers a folio order statistics of folios within a virtual address range and checks it against a given order list. It aims to provide a more precise folio order check instead of just checking the existence of PMD folios. The helper will be used the upcoming commit. Signed-off-by: Zi Yan --- .../selftests/mm/split_huge_page_test.c | 150 ++++++++++++++++++ 1 file changed, 150 insertions(+) diff --git a/tools/testing/selftests/mm/split_huge_page_test.c b/tools/test= ing/selftests/mm/split_huge_page_test.c index 80f718ca21c7..d2467072e752 100644 --- a/tools/testing/selftests/mm/split_huge_page_test.c +++ b/tools/testing/selftests/mm/split_huge_page_test.c @@ -102,6 +102,156 @@ static int is_backed_by_folio(char *vaddr, int order,= int pagemap_fd, return -1; } =20 +static int get_page_flags(char *vaddr, int pagemap_fd, int kpageflags_fd, + uint64_t *flags) +{ + unsigned long pfn; + + pfn =3D pagemap_get_pfn(pagemap_fd, vaddr); + + /* non-present PFN */ + if (pfn =3D=3D -1UL) + return 1; + + if (get_pfn_flags(pfn, kpageflags_fd, flags)) + return -1; + + return 0; +} + +/* + * gather_after_split_folio_orders - scan through [vaddr_start, len) and r= ecord + * folio orders + * + * @vaddr_start: start vaddr + * @len: range length + * @pagemap_fd: file descriptor to /proc//pagemap + * @kpageflags_fd: file descriptor to /proc/kpageflags + * @orders: output folio order array + * @nr_orders: folio order array size + * + * gather_after_split_folio_orders() scan through [vaddr_start, len) and c= heck + * all folios within the range and record their orders. All order-0 pages = will + * be recorded. Non-present vaddr is skipped. + * + * NOTE: the function is used to check folio orders after a split is perfo= rmed, + * so it assumes [vaddr_start, len) fully maps to folios within that range. + * + * Return: 0 - no error, -1 - unhandled cases + */ +static int gather_after_split_folio_orders(char *vaddr_start, size_t len, + int pagemap_fd, int kpageflags_fd, int orders[], int nr_orders) +{ + uint64_t page_flags =3D 0; + int cur_order =3D -1; + char *vaddr; + + if (pagemap_fd =3D=3D -1 || kpageflags_fd =3D=3D -1) + return -1; + if (!orders) + return -1; + if (nr_orders <=3D 0) + return -1; + + for (vaddr =3D vaddr_start; vaddr < vaddr_start + len;) { + char *next_folio_vaddr; + int status; + + status =3D get_page_flags(vaddr, pagemap_fd, kpageflags_fd, + &page_flags); + if (status < 0) + return -1; + + /* skip non present vaddr */ + if (status =3D=3D 1) { + vaddr +=3D psize(); + continue; + } + + /* all order-0 pages with possible false postive (non folio) */ + if (!(page_flags & (KPF_COMPOUND_HEAD | KPF_COMPOUND_TAIL))) { + orders[0]++; + vaddr +=3D psize(); + continue; + } + + /* skip non thp compound pages */ + if (!(page_flags & KPF_THP)) { + vaddr +=3D psize(); + continue; + } + + /* vpn points to part of a THP at this point */ + if (page_flags & KPF_COMPOUND_HEAD) + cur_order =3D 1; + else { + vaddr +=3D psize(); + continue; + } + + next_folio_vaddr =3D vaddr + (1UL << (cur_order + pshift())); + + if (next_folio_vaddr >=3D vaddr_start + len) + break; + + while ((status =3D get_page_flags(next_folio_vaddr, pagemap_fd, + kpageflags_fd, &page_flags)) >=3D 0) { + /* + * non present vaddr, next compound head page, or + * order-0 page + */ + if (status =3D=3D 1 || + (page_flags & KPF_COMPOUND_HEAD) || + !(page_flags & (KPF_COMPOUND_HEAD | KPF_COMPOUND_TAIL))) { + if (cur_order < nr_orders) { + orders[cur_order]++; + cur_order =3D -1; + vaddr =3D next_folio_vaddr; + } + break; + } + + cur_order++; + next_folio_vaddr =3D vaddr + (1UL << (cur_order + pshift())); + } + + if (status < 0) + return status; + } + if (cur_order > 0 && cur_order < nr_orders) + orders[cur_order]++; + return 0; +} + +static int check_after_split_folio_orders(char *vaddr_start, size_t len, + int pagemap_fd, int kpageflags_fd, int orders[], int nr_orders) +{ + int *vaddr_orders; + int status; + int i; + + vaddr_orders =3D (int *)malloc(sizeof(int) * nr_orders); + + if (!vaddr_orders) + ksft_exit_fail_msg("Cannot allocate memory for vaddr_orders"); + + memset(vaddr_orders, 0, sizeof(int) * nr_orders); + status =3D gather_after_split_folio_orders(vaddr_start, len, pagemap_fd, + kpageflags_fd, vaddr_orders, nr_orders); + if (status) + ksft_exit_fail_msg("gather folio info failed\n"); + + for (i =3D 0; i < nr_orders; i++) + if (vaddr_orders[i] !=3D orders[i]) { + ksft_print_msg("order %d: expected: %d got %d\n", i, + orders[i], vaddr_orders[i]); + status =3D -1; + } + + free(vaddr_orders); + return status; +} + static void write_file(const char *path, const char *buf, size_t buflen) { int fd; --=20 2.50.1 From nobody Sat Oct 4 14:35:17 2025 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2041.outbound.protection.outlook.com [40.107.92.41]) (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 2359C29BD86; Fri, 15 Aug 2025 02:39:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755225595; cv=fail; b=PWcBr7ExeSBqhLFl46e03tRqdJ5fJL8LW9ioCIoD/htE21UwYkq/M6V8vjW9zLEJuUPEB1hGMyX6S+FOFWf9lhzK34VRs6iKdynNyB4f6T0GZdEu5LMOQgcqW0Mkh8tL4jPT5HnqYx6e2l+/9+8nyrl5lirNt6e3ujEQ8n/fwpc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755225595; c=relaxed/simple; bh=0Sm+na+81B2SZW2hgX9H8syVpey9eq0SjoSmrKAr+t4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=DvJrjMUZHEjnayvu88uujFWGwOi98YetBigWHYT1+K56MoCTs4zZaVOs/GozMByg8goV7Lur3/ngA+B7q/DOJHp2WomuyPxHciR9a8yGP7fSZn6/vmdNUVibC25VY9vhCo1fQnP6zmcuNRPjA4+1R2kjHxOcCTcEn2nD1Ogayks= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=MDMb6KtI; arc=fail smtp.client-ip=40.107.92.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="MDMb6KtI" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XBtdxzw1keLHvynXhyGR72Ug5t+g7wPHjyGJtrqng/RkvE+mqsm1gh0wGiXD8KVa7w2G6PLuLhSqysp3pEs/xUTxAb1krBVC9XqiISEoiu0dZZeX3VQfI8C24lH0iIe3Hf+U8tNA4LJhzbkUvKElwS/Km3H/fPaqzO+v4CLUIBdPiTvClJM0wIikaMfDLor600s/gPt8LLdtOgUpi6UxAlC8+zb9Qf6ARyjw5W2YqTRJLc7c2iXk/kGU3xIROOQ9MtutKlHNwqNVr6xC/FeFSVFf4AWUcsxTwICqyt8CknGwdw1UatyBCFjiJToewBCdL0rf1lmAUczClMRnMkYb9g== 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=Am7ynLVrEdt31KTPTjLqB+fGbDrLrgXycJa3axcLh/Y=; b=Qh8u02fz7Sh8BqHT7qF1ecC/ErPTPSRLzVYCRWBKi3koK4xqODMFswESMV4O1i70WwD0VuLW2vfYKA+N4A6bMxYJR0yOmYtx6ROofsYLPYcpNoeqr6j66KePXC7QGHRBZ+8v24Vv7B6V8itAh/vYiTv0JRhhbbPvvRT+E8Eg70Z2rYKQzYGvG29MITipInICWk6Y2VEYLYgzsCtXtad+cN3/mRMNGXWvPzcmV1fQY0e3/F8mXg8FB3tl/gAcSBgjiSiWnREubDQ13DRK63eckots5no/or2miHgPJvjMf7f6Weka+nMu7IEmM3LHvwqvxQ7p1BwgvAoYBWWv0z2sEw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Am7ynLVrEdt31KTPTjLqB+fGbDrLrgXycJa3axcLh/Y=; b=MDMb6KtIf+61fHc5cnCHVnicOIs/h+q2NQBCyi815JCj6sO6SkMyZoRAsnw7TL46PBJknlhSDCPqDv8IUVDXy66j6KATWsKFwkO9Cs8Qrnyyk7gVYnOSa35axZm+QB4pG1XaTv/GIP7AEe2mHvMppsWZxJSwjUI8MnshqO8Ysyd/Rq8+jxQ53crDeAmpljwfjs7Zp/RvHwKErHu1iidhsluq61d/unAVgIdiD46eaiTc9cZuoSxUHOH57gtQgef7f/4rXufzh1TrdffHRqp3EUFLofDV6OsST/XXh7SrxOeOMnmF4og147RAqJR8CrGicdOAYcJPHQU+nP47jaCF0Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by SN7PR12MB7226.namprd12.prod.outlook.com (2603:10b6:806:2a9::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.14; Fri, 15 Aug 2025 02:39:44 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%6]) with mapi id 15.20.9031.014; Fri, 15 Aug 2025 02:39:44 +0000 From: Zi Yan To: Wei Yang , wang lian , Baolin Wang , David Hildenbrand , linux-mm@kvack.org Cc: Andrew Morton , Lorenzo Stoakes , Zi Yan , "Liam R. Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Shuah Khan , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v4 5/5] selftests/mm: check after-split folio orders in split_huge_page_test. Date: Thu, 14 Aug 2025 22:39:14 -0400 Message-ID: <20250815023915.1394655-6-ziy@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250815023915.1394655-1-ziy@nvidia.com> References: <20250815023915.1394655-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN2PR15CA0064.namprd15.prod.outlook.com (2603:10b6:208:237::33) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|SN7PR12MB7226:EE_ X-MS-Office365-Filtering-Correlation-Id: d126d399-9a89-4b1e-32fc-08dddba4fe34 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?CxuuwqoG7uSKJNrh11hdBe00mwbecPlNQVmnab2ArPmlP/4/cLIeLOTRzKTx?= =?us-ascii?Q?oiXOlzSpGIYxzFwxImkyXK+WqYGnQjzE+QVz6BLHvtYM/L3kUHRKug7zb6AA?= =?us-ascii?Q?AloA1kM7UuPkmCuU5fyW88J2poLO5mzNEpo1eaGBeA1mWWXCoR5FbB/JuRf5?= =?us-ascii?Q?XS+M6gKZkk30Y3W8oIFBEkvYwPOMEXgl+QptFDfNWlag6EGvkO08W3tP9dZ2?= =?us-ascii?Q?upVpvTVlW6XbXldkdV+qfLvTNuZqu82zJE6e43yXwLHIiGxquf1Xx5VE67zK?= =?us-ascii?Q?U6pjgRoua9j5O8j5QA7ZxLAno4qDv0Ty2XC1zElpFROXhPTAUuwcqwmhS5su?= =?us-ascii?Q?xdQM0eBahik7Mwc6+uX76MPdtDV1EcuHhLZIJfSbuaVOsvC2AxgAWziIhmsm?= =?us-ascii?Q?ltu8WlI8RvlkCb3PmM4h3GLgDwmRsoG4PX2UaCCcWDsRVMjy92YV6liNPsdF?= =?us-ascii?Q?zcqc+D2s2cwxRn2IxohIPN86gKn77RJcXVHf5vuI4IUXDwpVJRwExagDk2z5?= =?us-ascii?Q?O9K9EKccOnbO819skrf1SXQ3Gsv2HtDrI6mN67fh8w/7dPKZm1VoOIIspBCu?= =?us-ascii?Q?YxC0+/74kGhX5TubgQGJC9JlFXUESI2+FPnN0xJH1Av2Oarr0dkBZzZagu2M?= =?us-ascii?Q?qbKfgLw3MC+/iZr27z6GJcOADkCP09GCNdZaJH+EQOsUXyXlXw9J6IXnXNTl?= =?us-ascii?Q?VQG+0EOVWcUctR/DSVbP/mU4SLnI+81LoOJlj8UCOa33ct9IdyW2cGpwclqH?= =?us-ascii?Q?2+rBi3dSCJdYljqv4sZTqRHaQL1jEf1w8u8nW78ocGrZMSLdOUYvyNmkREm+?= =?us-ascii?Q?QfhjJSUUIpu4sSLJ4fLLHxnJaIddK3LGlq7I9Ed74Wwr42CTtMXz1X92t66f?= =?us-ascii?Q?7cteIYyTNkYImnOK/TFFXMqK7YbObXH9QX0wv/+YfDHlNY1dVg6ar/xKShzZ?= =?us-ascii?Q?SCuxpmxc0asF+xm8RJfKT9BRLo/fDvEn8lCONsubUc0HABkkep0duphCD5+m?= =?us-ascii?Q?YOTGsaJ8FgDApXcDYe58CKBmnMzl7yfOCsag37sTQQi3nBy5X3T/QQ9enEwf?= =?us-ascii?Q?K+5411aho1dihBVwEZzoZcpT/0btMZVDXoD9VVk5bcQMd0GMJcA/5Ebnu0AH?= =?us-ascii?Q?iCqhWgfnPB/jXAn1Q0cWD82toYOgLm1X1Cba6s7lfEfUf7/Z6NL8N/5VnyNP?= =?us-ascii?Q?mLMtUh2Lilk7dlPP7fEcg11e6l0sa1bMkoUnhhsntjzabRo38T5PuqaM8pVT?= =?us-ascii?Q?bMz5Se9uPJyZW9prLoz/f0xXsaUFpFpLkzEjmy4P+jnaP7+S2BCNHSm+PUH7?= =?us-ascii?Q?T+tyTQL5mEAb8i2idpAm7z3tzOG/vHeZeGhPeExsjHwS33K/EfBxSSDB+zCw?= =?us-ascii?Q?VH2aV48sfQ/KaHCOj6gVqm3G7L3SX+PJmq+UyZzZFYqHOdDkpkBwKNFi/iCn?= =?us-ascii?Q?kkjpu9x9wE0=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB9473.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?pwjB5N85P19GBQI6QfswVBkP77rdwKF7XohDJZ3Uo8Myrpfa8HIsgeLhrvgn?= =?us-ascii?Q?ERVTJE6TY5bNZL3YUwgKUECRF8QqiG/Ow9Jo+ucBj310xq8wPqcd2VgQAWnD?= =?us-ascii?Q?geGmJa/+AHny2OWSj7AVcZ9H/qQKVXX4QtA/+firJuEHmw7PewpoFLWoV/lK?= =?us-ascii?Q?aIsrYeLhM3SjU1o6bQgp+B30wT5eEfnWHq+Rd2xIEWBVKbBk/q/1D6uFD2cs?= =?us-ascii?Q?8oMXBVf10+muYYzb/mR4jCQs8MOkGma1JkQe10ccIlut6nsDGhurv49lkbC3?= =?us-ascii?Q?9vbC0W85r8Sa/3tn5DQm21NBFYcZFdEyLDWa3WddmVPTXGOUUo85xU11e/zk?= =?us-ascii?Q?TC3XvNX0yABgHSZjmortYV2TkIt720UMT8op50wwZU7YF/vL50A2UIp5VP2b?= =?us-ascii?Q?YGZjIWlVHF4XwAMMQk8l/8p4CdLeEc5jIm2LcrXGjlJCkPKaI1DTjwrjEbYS?= =?us-ascii?Q?IgOnzXZWng60iVXGff7QHR6p9YMYK7whzxoDkUMGlIkUPrkKJwQuiypjFW0u?= =?us-ascii?Q?hmvawJotoAHwxwgYi/rOUXCgurSqrTr1LwasJnDTEVxTx+8Vj9K6m9LpCoM+?= =?us-ascii?Q?PqbuOO6ViKpMqODYP9vp2tY2DaP3jgSuyuLbptEJIpFR1Uosp+ApHlhDgMLw?= =?us-ascii?Q?JL6KKRIuUjyGWfoffGB1nnqDJQsX0LzRfJDshJqaKT9PiyjWU735F2lHZLDy?= =?us-ascii?Q?lThpBXbZlBM45Bx3ku1Kjjc4znx/Wz9sziRFRTNwIzVR3Vxe2I5G5XK4K4Ay?= =?us-ascii?Q?n7CMboNtgfbU1f6Q3qRdaU/ec7vE9pg4BJ3jnoM55GWIeWX0HSDGOhats50F?= =?us-ascii?Q?apn5wSJWJte4cW9qDKQFkKw4OWXZQOOP+qd1fAeUkDqgWsgDBj6aKTDF9wn2?= =?us-ascii?Q?ygMS+G3gke20h/Lfo91SDtNbOrrvNZFnyW3sHAahkDhIyaRtNRT4R/EPMRxO?= =?us-ascii?Q?cXeXgogbEsq5BK++fIa6lTOmj4WhgtAIB8F7VZ4wLqWrhwFBrxHVTC1J/V5U?= =?us-ascii?Q?R55JHToPzLV8865+21npAujeZWQEPfd0XnmRhCu1rQNkjZ/V7O9VFvXPc0by?= =?us-ascii?Q?Ih/cBH6Piz3voFujC5jXFBQLeCuw+brKE2V0zOmesuUx42flOiJvvr0fgm05?= =?us-ascii?Q?fm91Q5fhSUD6AwOLfDxLrGCVmRSfoeCg0Us6l8ts7HXyRF73PpjeQIIh7jsg?= =?us-ascii?Q?5oIFVYuGjNNPIcLwJ1duTaiqSozV8xfpKKLAQ8vRVU47g/NLa40m33Ne9Yuz?= =?us-ascii?Q?P/sCJ18D8krqy1SgdfZfGvXx98QoPrXOx9DtajPqvaBoBo83C5P4h5uG6/tI?= =?us-ascii?Q?i207tMPHkFEblV6rWDrHp7qmNiiQiNbHigMwyDMJKHenvYNFexvRHBsLxoAB?= =?us-ascii?Q?PEYYKELkmIy6oPcyKucFhdl4KBFd0GdonXxKgoI6f5OTlLZp8jGi2FKDLFGB?= =?us-ascii?Q?UVYrr5BTI3XJPmbiF2kwUCHldjdoyNzNd87Ey5JMje5LkE0t4OGwRl+oRBtr?= =?us-ascii?Q?UVRgagTqu3Kun/d6speF8IXTi2xI/xs61/0IKBCZlG7T4dpicD3Jl5GtNxkD?= =?us-ascii?Q?5a3MveURLAeX45vY9C5QmeHuWUafSJJGEBhaAbt9?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: d126d399-9a89-4b1e-32fc-08dddba4fe34 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2025 02:39:44.3352 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lTeDb91uYlwh7y8Pu1OnphOAwyuPK4zfjY156m0VWn6VrZjtPvv+a3tnWn+B3IWb X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7226 Content-Type: text/plain; charset="utf-8" Instead of just checking the existence of PMD folios before and after folio split tests, use check_folio_orders() to check after-split folio orders. The split ranges in split_thp_in_pagecache_to_order_at() are changed to [addr, addr + pagesize) for every pmd_pagesize. It prevents folios within the range being split multiple times due to debugfs split function always perform splits with a pagesize step for a given range. The following tests are not changed: 1. split_pte_mapped_thp: the test already uses kpageflags to check; 2. split_file_backed_thp: no vaddr available. Signed-off-by: Zi Yan --- .../selftests/mm/split_huge_page_test.c | 91 ++++++++++++++----- 1 file changed, 66 insertions(+), 25 deletions(-) diff --git a/tools/testing/selftests/mm/split_huge_page_test.c b/tools/test= ing/selftests/mm/split_huge_page_test.c index d2467072e752..7d898c380236 100644 --- a/tools/testing/selftests/mm/split_huge_page_test.c +++ b/tools/testing/selftests/mm/split_huge_page_test.c @@ -26,6 +26,7 @@ uint64_t pagesize; unsigned int pageshift; uint64_t pmd_pagesize; unsigned int pmd_order; +int *expected_orders; =20 #define SPLIT_DEBUGFS "/sys/kernel/debug/split_huge_pages" #define SMAP_PATH "/proc/self/smaps" @@ -37,6 +38,11 @@ unsigned int pmd_order; =20 #define GET_ORDER(nr_pages) (31 - __builtin_clz(nr_pages)) =20 +const char *pagemap_proc =3D "/proc/self/pagemap"; +const char *kpageflags_proc =3D "/proc/kpageflags"; +int pagemap_fd; +int kpageflags_fd; + static int is_backed_by_folio(char *vaddr, int order, int pagemap_fd, int kpageflags_fd) { @@ -135,7 +141,8 @@ static int get_page_flags(char *vaddr, int pagemap_fd, = int kpageflags_fd, * be recorded. Non-present vaddr is skipped. * * NOTE: the function is used to check folio orders after a split is perfo= rmed, - * so it assumes [vaddr_start, len) fully maps to folios within that range. + * so it assumes [vaddr_start, len) fully maps to after-split folios withi= n that + * range. * * Return: 0 - no error, -1 - unhandled cases */ @@ -369,6 +376,13 @@ static void split_pmd_thp_to_order(int order) if (one_page[i] !=3D (char)i) ksft_exit_fail_msg("%ld byte corrupted\n", i); =20 + memset(expected_orders, 0, sizeof(int) * (pmd_order + 1)); + expected_orders[order] =3D 4 << (pmd_order - order); + + if (check_after_split_folio_orders(one_page, len, pagemap_fd, + kpageflags_fd, expected_orders, + (pmd_order + 1))) + ksft_exit_fail_msg("Unexpected THP split\n"); =20 if (!check_huge_anon(one_page, 0, pmd_pagesize)) ksft_exit_fail_msg("Still AnonHugePages not split\n"); @@ -383,22 +397,6 @@ static void split_pte_mapped_thp(void) size_t len =3D 4 * pmd_pagesize; uint64_t thp_size; size_t i; - const char *pagemap_template =3D "/proc/%d/pagemap"; - const char *kpageflags_proc =3D "/proc/kpageflags"; - char pagemap_proc[255]; - int pagemap_fd; - int kpageflags_fd; - - if (snprintf(pagemap_proc, 255, pagemap_template, getpid()) < 0) - ksft_exit_fail_msg("get pagemap proc error: %s\n", strerror(errno)); - - pagemap_fd =3D open(pagemap_proc, O_RDONLY); - if (pagemap_fd =3D=3D -1) - ksft_exit_fail_msg("read pagemap: %s\n", strerror(errno)); - - kpageflags_fd =3D open(kpageflags_proc, O_RDONLY); - if (kpageflags_fd =3D=3D -1) - ksft_exit_fail_msg("read kpageflags: %s\n", strerror(errno)); =20 one_page =3D mmap((void *)(1UL << 30), len, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); @@ -456,8 +454,6 @@ static void split_pte_mapped_thp(void) =20 ksft_test_result_pass("Split PTE-mapped huge pages successful\n"); munmap(one_page, len); - close(pagemap_fd); - close(kpageflags_fd); } =20 static void split_file_backed_thp(int order) @@ -660,6 +656,7 @@ static void split_thp_in_pagecache_to_order_at(size_t f= d_size, const char *fs_loc, int order, int offset) { int fd; + char *split_addr; char *addr; size_t i; char testfile[INPUT_MAX]; @@ -673,14 +670,33 @@ static void split_thp_in_pagecache_to_order_at(size_t= fd_size, err =3D create_pagecache_thp_and_fd(testfile, fd_size, &fd, &addr); if (err) return; + err =3D 0; =20 - if (offset =3D=3D -1) - write_debugfs(PID_FMT, getpid(), (uint64_t)addr, - (uint64_t)addr + fd_size, order); - else - write_debugfs(PID_FMT_OFFSET, getpid(), (uint64_t)addr, - (uint64_t)addr + fd_size, order, offset); + memset(expected_orders, 0, sizeof(int) * (pmd_order + 1)); + /* + * use [split_addr, split_addr + pagesize) range to split THPs, since + * the debugfs function always split a range with pagesize step and + * providing a full [addr, addr + fd_size) range can trigger multiple + * splits, complicating after-split result checking. + */ + if (offset =3D=3D -1) { + for (split_addr =3D addr; split_addr < addr + fd_size; split_addr +=3D p= md_pagesize) + write_debugfs(PID_FMT, getpid(), (uint64_t)split_addr, + (uint64_t)split_addr + pagesize, order); + + expected_orders[order] =3D fd_size / (pagesize << order); + } else { + int times =3D fd_size / pmd_pagesize; + + for (split_addr =3D addr; split_addr < addr + fd_size; split_addr +=3D p= md_pagesize) + write_debugfs(PID_FMT_OFFSET, getpid(), (uint64_t)split_addr, + (uint64_t)split_addr + pagesize, order, offset); + + for (i =3D order + 1; i < pmd_order; i++) + expected_orders[i] =3D times; + expected_orders[order] =3D 2 * times; + } =20 for (i =3D 0; i < fd_size; i++) if (*(addr + i) !=3D (char)i) { @@ -689,6 +705,14 @@ static void split_thp_in_pagecache_to_order_at(size_t = fd_size, goto out; } =20 + if (check_after_split_folio_orders(addr, fd_size, pagemap_fd, + kpageflags_fd, expected_orders, + (pmd_order + 1))) { + ksft_print_msg("Unexpected THP split\n"); + err =3D 1; + goto out; + } + if (!check_huge_file(addr, 0, pmd_pagesize)) { ksft_print_msg("Still FilePmdMapped not split\n"); err =3D EXIT_FAILURE; @@ -740,9 +764,22 @@ int main(int argc, char **argv) =20 nr_pages =3D pmd_pagesize / pagesize; pmd_order =3D GET_ORDER(nr_pages); + + expected_orders =3D (int *)malloc(sizeof(int) * (pmd_order + 1)); + if (!expected_orders) + ksft_exit_fail_msg("Fail to allocate memory: %s\n", strerror(errno)); + tests =3D 2 + (pmd_order - 1) + (2 * pmd_order) + (pmd_order - 1) * 4 + 2; ksft_set_plan(tests); =20 + pagemap_fd =3D open(pagemap_proc, O_RDONLY); + if (pagemap_fd =3D=3D -1) + ksft_exit_fail_msg("read pagemap: %s\n", strerror(errno)); + + kpageflags_fd =3D open(kpageflags_proc, O_RDONLY); + if (kpageflags_fd =3D=3D -1) + ksft_exit_fail_msg("read kpageflags: %s\n", strerror(errno)); + fd_size =3D 2 * pmd_pagesize; =20 split_pmd_zero_pages(); @@ -767,6 +804,10 @@ int main(int argc, char **argv) split_thp_in_pagecache_to_order_at(fd_size, fs_loc, i, offset); cleanup_thp_fs(fs_loc, created_tmp); =20 + close(pagemap_fd); + close(kpageflags_fd); + free(expected_orders); + ksft_finished(); =20 return 0; --=20 2.50.1