From nobody Sat Oct 4 08:05:15 2025 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2045.outbound.protection.outlook.com [40.107.244.45]) (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 F204424BD04; Mon, 18 Aug 2025 18:46:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.244.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755542792; cv=fail; b=MWOdcoVcDyL6pUHmnwGNtSfKeNcDzbpQOmdqE2AsbEaI/3p/f/Xb/KzSxvMWuOUDyiAgDPftRjgBYd6HGKz3scH5k8kHsgD7DTmI37a7YWMOHjvtTOI8zhfnsJQYYwSdk6mxlj2e5U5FYHesUTFTLBw6lfh8HPyVRnlE4Gx4wlw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755542792; c=relaxed/simple; bh=JdEjoaW74bAEHMxxvZN6YEaSxMfNoZZOU40/dgKRO7E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=QxTg5moYl2uHEZprCRXcLcan4Ph3fkAA/qzotXyscKlE1T5EsPDWA0nrmFU2+YcWcpWO4yHdAlB4bXE1Vcmsq2FqYQ6KsrqmPTifT3XSrftECEy4RXSZaMPfbTQTX5ePYpKzXHu/sn4xjBUmsRDUmNgTA9/gZ7gIepury3RaH2Q= 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=aTcypXch; arc=fail smtp.client-ip=40.107.244.45 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="aTcypXch" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=T7UjuiZ1/xZhYXCpNTzV3Hi3j/iiS3f3iEpLnfHHt4FyvRArsSS1hlBoTTk1Q6CD7EgWYXKcTtaKXN1H8FTxdvQmpBPt0SlaLl/I6WaGRBnOnPDjFIJDBhQp27KBfAJOMGScAvkY/O053QHlJoKr5a+jLi0ib3lSEZEuULrt8SHPho15j3dDjv2O14avyw40pMseDx1zFLqpTyoPo7GZgP9IFhXguUvc1/W+rF/dPRQFI6I9osd5gZSzZJjH92HqXpXeB8AM4UfG/CbnM03ddYDdh0YY454ugPFdr3K5iOMwb7RMmbEp+v8KVZeQhAhowi2ppkDN2XnVR9i/Pe1DgQ== 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=m20OjFZYeOwycuVn8HX293tF3ivcm3fsGIruEV+rQ9U=; b=Nn4k/qo5t1pyOJ/H5A/QUWHzGsjCOwrB8yvMT+EY7yD9pCYzoZc5yJEXfN3j/odMU+q8kMuKiuuYflCZNzTM5oG02cuv3Uh3x+BHgzO8PF2GkfZiz3g1mS5S4bgx1Q4ucoO4O2X47h8rk0hphaCbs10/GGX7SM7Ha8CF12eZMiQ7Pf+v5CDJcGswmwmqJB+1cBXED5kdTofm1OftedTWO8H16StmD06zrmYSGuPBgQTpdYmaYEOX+s3br1odq6RPuN0bpqHpZLjCMRkimsbLgaY84/PHRB5MArXgsTqzzlo4dzEtfJBl7GN8ccUkQCRpgWz8c6OHG6QoWphImzAiPg== 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=m20OjFZYeOwycuVn8HX293tF3ivcm3fsGIruEV+rQ9U=; b=aTcypXchXMPCZiNHmDAaVP4A44PTF+fwcgli0qZH1J/J7d8JuLDYl9FmLkLQ1/o4pwr0e2EXBlCASzFCIVa2gc7w3vrFs1WubVgQMaHm+0EXWIBhtUt5F51Auka9qhzTSZDUZLsX5EQMe5jsBg08EubHdn/Ccn8NWSuSX5hm31og68u72Y+jxGrb5VdwYR8MuNB38098I7Z0owh1PYLnHJQr3SPII1bFKinZX0ONqLpigDUWAfaEcjylwXpdrZeIhtoL6rYFgafIV1V6+QFH3FKaURyAtsXLIk5II8sIrrMWQatpDDvAp2KjSCCuP5x6KdTV2Nl4mUNAPP6UtOixxQ== 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 CH3PR12MB9342.namprd12.prod.outlook.com (2603:10b6:610:1cb::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.24; Mon, 18 Aug 2025 18:46:28 +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; Mon, 18 Aug 2025 18:46:28 +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 v5 1/5] mm/huge_memory: add new_order and offset to split_huge_pages*() pr_debug. Date: Mon, 18 Aug 2025 14:46:18 -0400 Message-ID: <20250818184622.1521620-2-ziy@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250818184622.1521620-1-ziy@nvidia.com> References: <20250818184622.1521620-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN0PR04CA0048.namprd04.prod.outlook.com (2603:10b6:408:e8::23) 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_|CH3PR12MB9342:EE_ X-MS-Office365-Filtering-Correlation-Id: e0b310a5-05f7-4eea-a9c6-08ddde878a77 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?oYRQB31UH7y4lqz5K1EF3Y7B/FZauX1lZAcTMNWtuHgTMGh2UhHzcvf10HWs?= =?us-ascii?Q?au/WRun12K5b98izWN4fW8SF32tSACixG1yZhT8o00M2RiSU2BrexWoTSOn6?= =?us-ascii?Q?B0CqgNAA2sV5jko7mGWvJhpA9FjzlnJ5dpcq7imUtd8IwleDMGwK/XmUpP3+?= =?us-ascii?Q?J3WzMLAZePutCFTkC+1eV3ImY6N+PhIE/CRvnD3F35Jq/rayoQFAkyjIIerZ?= =?us-ascii?Q?sD+3VRwT93T5nesMfOUEQXgRZrIZsthvhkPurR0YZKmkwgWLpPVDCJoKmYgQ?= =?us-ascii?Q?s1JscINp+nZFnvoJUKlH+IB9EZIo0MEYtP/RyLGMcvvkixXtia15iKLmnmfG?= =?us-ascii?Q?wR3KkYFPBYYkIR7v/tAKSmXEUybIEnyhluZabbwEhGft10hQVwleVYq/tJZB?= =?us-ascii?Q?LE1k9caYzxMTdtvEpBc7XLWcRE2Y3EWKuRaGtzxEwMCjL6nXYpHOjBQaxrbt?= =?us-ascii?Q?2g2oD0XiQw+YtNsKr0iHkI+IXA+cduj835kXFhsHyC/EXohTw1VLZm6FoYud?= =?us-ascii?Q?13eyTpCPMBXcovLqxa4ejZVN9/QlpzfJZBawQCPDJ48sMDGSP34XwZXk/cDw?= =?us-ascii?Q?nJRUqou8h1PY5SqcyPTy8hDLmapGGvExBUjLKIRHlf3EweQa5cfZXVZXiPrW?= =?us-ascii?Q?LVoWGAUegEn+3HUusJNGKe6a0ERC+hBtVrW0vbNkIWLnt9gI2AsdMUBwOhaq?= =?us-ascii?Q?0FIbZ4Fy9jT/Y37OBPDDZn+ofK+4aHLGABsqsCSv88PkWUFHidQCc6wgP7sX?= =?us-ascii?Q?7tHQNlyCGa9m5kHCqzqgnTmg02DEpEVehaGYqLnvHNd91aVYyrH7eeKaucBQ?= =?us-ascii?Q?mgmxJQVi1CeUqnGxE3wywv5+hbSW0ajngRrOGuXowlqk1+5bukyrFfs+SA45?= =?us-ascii?Q?9zIhY1z6GLCb5ROaBisBlZZqKGr3feHb3jCWRZUW6b1VMwuQLCaGHmjimOj4?= =?us-ascii?Q?quF8HLnch+gJtrhgxvJ4npscIBVPv9GqbpGgEmQe8jA0YOldf/+z+GDXR0ml?= =?us-ascii?Q?mFfLEQI3/ekGH5DV6skoXf29DepU9xCAP2F5IDk4FzpvdtjNK+dw8vpNJo2a?= =?us-ascii?Q?n74KoYKATMoxN3E21l9U87AKbrMk+x3aahgkGkzfkrGbJGzCVpU0t7fYhfVX?= =?us-ascii?Q?3uE7UAkT6yeYzq/Kv/o/cjzEKTiA/t7jwNxeGRNBuN0el6geCZjmHPBD3okz?= =?us-ascii?Q?3DbBLuFWQr3wOtMTg57TNttIqG89XtgpAxeuwOOzeohLs3IFYXCIIgmxc9rw?= =?us-ascii?Q?fkh8JADkQ7ugrq4QjhFliniKc+/cJwNoMbCpxBT/GulcRrtcLmCiM3w3PsAK?= =?us-ascii?Q?Yfy02yhhz7oYlY7ko9xapBVGqVPdVOPSRsSaCW9RxYqKjhoNuL7n6tpat4h7?= =?us-ascii?Q?nFX9VMCaHykWmj37XLdeHcfTKZTmP3B4HgLt1TkqexLrrin+nw2v9lalotZK?= =?us-ascii?Q?y3UeOQYxbuQ=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)(366016)(1800799024)(376014)(7416014)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?758pSkuQrBhzeaGfLivuoPaix/DPP0pnJ9PEdPtZrqdiFrJknjsdIgem/TSh?= =?us-ascii?Q?0Wif19mqU50gUsfJ297Ec/kySC/J3KNXgzJI0eUodk65kQlNivHAux/brGAX?= =?us-ascii?Q?q5NfKRCX5j33v1tIFB9goICgj1DDu+MdfU2khYKfNxZFjyv/VCJcO3IT3B/J?= =?us-ascii?Q?PfwF1cKO1ZWys+AutlM0kRG1p+CbK/E1+unMYHHyTBe74a9FWpTvGlnqh3F4?= =?us-ascii?Q?o5xKgF/R34by810MyH1xatmk4EpjTgSC8ueLURxVEifzg2OQ64FG5Awo8JkA?= =?us-ascii?Q?TJMIR5JtEMUTWeY4yD140D7GSYkEQsOypZqk/BiAxvayyUIk0yQOiLScLGaS?= =?us-ascii?Q?6HCk31lAoCVMDQmWXEGavoS7VgLvFl2FfHEweyB2ziJyyA8upRrJaFrAxupa?= =?us-ascii?Q?jBqbVl1MgLTRahnW2edFboNSkMwYkaj/VGqm/zPUXpydubEQOkFEMLcoyGTy?= =?us-ascii?Q?1R2mFyBRd10m3EfPHK6r304rQzZ3x6q1DrdGqGupsxVcA+FSX4cwqvlblyNx?= =?us-ascii?Q?gxKzC7PZdZuDRM1MaRCMx5ztKiy9suCvTciiqKIHlHwCf77HZB88BASR/+IM?= =?us-ascii?Q?692RrI+ADka7285zJ8xhm0GXNb55YGQ8fMkrsa/YzR/9IiCKulE6ufxMe8J0?= =?us-ascii?Q?NR6G4WRuxWXzzoOHJVWiZl64ArLwXfidOFz45lQTXXLnN8ezo6m/j2FEQ9Tp?= =?us-ascii?Q?Kdfbu90xa5fgOZXftF4CNSzjd9U9PhyVmLizGzrEq+GlN+iBzGjS7JCaMCCu?= =?us-ascii?Q?Eb/R2oDWQapvdQGPMW0iBirYUCwhxxQk4EhWRbKAD7VXVrZK8uPwnNhnvJgH?= =?us-ascii?Q?ubga7aCq8+z2viaopkMb5v56E0gUDj/Ubm6nj2ikYN4qJ0x1cXZsj46YwENH?= =?us-ascii?Q?oby7dvrN8aRaq/nTaTcgghTq8ZR4bNI4Py1DQeZc5qnOmFQFLlTN3Ym5sNpD?= =?us-ascii?Q?psN2bGTYMwK8aPdJe/uWiDz0Ml1yuWaIkhtfYi5SeFxbHqgYMdpwg/PEVU3Z?= =?us-ascii?Q?u0gu/VNsJ3046OWER5aPf2xWUFKw6ruBzSpHzIWkq/JSJzvDR2wnYTg4orD5?= =?us-ascii?Q?oIjTw9u3P2Uk3D2WCr4cNSd7S/XkcotFa3uOJJ0+ailo9ReS0JVPqj5S+oia?= =?us-ascii?Q?aMS8npNocoWG7dsw4lO+4lgFkg0LhRi4WUgGXMviTVotHcZV05BtkTtiJsYh?= =?us-ascii?Q?jQB2LVati3/rIZZg0QjW/YNCOXNdCwSBVPP56ivgPvNOtyWyUjbdBRIkRXKB?= =?us-ascii?Q?lqXY7sTsWIJCsKuGo843748tpPNumDkA/3ghcqCYpjEea9YXloBsyHsjfQMI?= =?us-ascii?Q?4Nwt03wNAvDHbhru3lgYkUXs36luE0osnwZpvE5Is0Td6y+cBMoiT20PMUUR?= =?us-ascii?Q?BngWjb/bosIpeqxPy30cHNwH3v/xRWrfFWVchuUoPu0jRTJOFgAu7tlBwEqa?= =?us-ascii?Q?z9qEBm62GLf70FD1AeraOvb0xdbk4AZ14az99uxpK3OJNqTD4h6rrOr7mgDP?= =?us-ascii?Q?0sUBAac0UnnrfewbR3wFMnnuo1pB/QSoj6AF1ALxAVaUBIC4h9X7SAnrnQDu?= =?us-ascii?Q?HQ6HKjx0gchVXdtF5n1S6tWAlA3X6aHLSctIPI3I?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: e0b310a5-05f7-4eea-a9c6-08ddde878a77 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2025 18:46:28.2658 (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: 1wcYbTlQjFaMT1BWjJaw/NSNF9cqpDMOzgcG/bfl0lFyvLHI52nR2uxpkda3UEVq X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9342 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 aac5f0a2cb54..2a47cd3bb649 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -4320,8 +4320,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); /* @@ -4431,8 +4431,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 08:05:15 2025 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2045.outbound.protection.outlook.com [40.107.244.45]) (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 93A00272807; Mon, 18 Aug 2025 18:46:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.244.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755542794; cv=fail; b=n6UIYy4HlVNujomtNzJzZl71XVgzKPWBdjPaZp7Vj+GGhZTiLO+qdjyVxifw4QKFDi54J0hGdmURbYOVN8Gl1RDKMhf8PX6Z99zazLABoZkh8mfcnqvOp1sXQHMhy8xZKN8133PVCDDgjbaECDEguCJzb3dOgjtAn/c/EHwJbZc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755542794; c=relaxed/simple; bh=XOrqLwuYw91yVUHerKyJqk50xbrrymncRW/EnU0Fh4c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=FiOwJ0WN5mGCSU8uGm3z4INeSk9E0ecpl7zGKzBjRazMXUFXSN8cK47BWY+Vy5onDOlyfbmWu6UCLoOBtVCWjHJI6gE+aE6EOedEK6QCUNN+94GEQBXFejl6PiMvGQ2y0qfWTgNMzcZaa7T0LK4879e6Cp0MnbXs1aKSqxZrAqk= 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=j9MTRevi; arc=fail smtp.client-ip=40.107.244.45 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="j9MTRevi" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ap+qXSXabOpsed38dqHN0CgYgK2eDCdXdKd0pC7pA3+hWa3it2/sWJfbv18EcUdjU31Ch2XOtmUZ/mRCiKMKzDm2R3erIxfwTp+iAGbUrK7Ey0hRKdADptWC1AL4pqmjPNn2yYu9GkhYxa1rSabXJfOSU3A5hq9RhVEVGCS5Gc7tGkKpEuxWgH1iMcIkywP9yUnqDhPqQVHTALXOCLW1rO7vpezg/OAKH4ih1pT8UDNunJc47x52Fd7IYctvN93ViCME/92SBis2U4Uk9mpX7btizDeokjWVbOO4EQbeHEa2afIn3NgMDe6YdAMIdD+G8WQ0qhzVCE5HmVjQ7LDQyw== 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=EqZFUVlUJtjZma8SBMUpZfEMrFLcnaGTpgbH34xCYoQ=; b=WTnCYkxAmH5hYWfAYU8qDoO3Isb3Bc4mHIUlk/nsWkL+u36OZIdlPbAFijO3FgJHQk9bPBahuEr3jKZmTHwCzpjPF3oPRupxbNVTSiEbp8XJSjtjB72j+yNTncMkbiQs4YrtPYpEZWCejRzJw2EM4GOVKC8Jzknmm6dPd6QUHQ2AUngmHq9gCLnCKnqGzqyLb7dkERR+mCGqqHo//tbF/S2wr77Qj5DecclpE8ZwFjTKms6l7+SgeFS2n4jE2ywa0xu35NWnz1usgLteClg49OEb4BxlIIZiGusteosPurcQEznHdN82erFUFqwI3XCiHUZ9y7LWQEletEHEF/QmIw== 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=EqZFUVlUJtjZma8SBMUpZfEMrFLcnaGTpgbH34xCYoQ=; b=j9MTRevids7tK8f8giSrCKuMJkMyDOdA6/nBj2h6efeVv4K/oIWuCjucQ8iY5RNK9TGe8PYKNZ8N2D1j7tqfVwQBunNtheTky2KZRchnaWemAtAzi8ETZQPeefy5bjD1dIkTnV9vEOjHIxNrvQiTmMDnT1JeOfVT+8q3A5cDLJmqZ/r5zTrBJhHoNXB3YiGle7Z50bmUc8VHHSvKuslPM7zTtB5ORKSINJeJQ6iSOoRf8ht1TU937gKDS5H1dhLahkAGOcyc6DUsHbwcjjV44y48Fiqn68PdoM1QSVn5HKpxGtQ8DrYOuesbatlobLfJqS9jDeVmBWaCansJQAw+VQ== 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 CH3PR12MB9342.namprd12.prod.outlook.com (2603:10b6:610:1cb::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.24; Mon, 18 Aug 2025 18:46:30 +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; Mon, 18 Aug 2025 18:46:30 +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 v5 2/5] selftests/mm: mark all functions static in split_huge_page_test.c Date: Mon, 18 Aug 2025 14:46:19 -0400 Message-ID: <20250818184622.1521620-3-ziy@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250818184622.1521620-1-ziy@nvidia.com> References: <20250818184622.1521620-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN0PR04CA0045.namprd04.prod.outlook.com (2603:10b6:408:e8::20) 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_|CH3PR12MB9342:EE_ X-MS-Office365-Filtering-Correlation-Id: d6924d2a-1a70-48d1-d8a2-08ddde878b98 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?FGOl+pp4W3lIsfNCW5A8YNyHIcgDVeWdCpdbfrax+H/Xz+aV+UnOmdSsVREi?= =?us-ascii?Q?wy2sU73DV6PmtPdX4/4UAE3VOgdIPInHuLU8WuiOfhcNML4iP+UDt9bS9/1r?= =?us-ascii?Q?1TnGRS3Wq20LjXaX0G9PJ79VWOf+RRs6qMDtwIRnJ5q+beWZ0XkPlfs6Pau6?= =?us-ascii?Q?a10t7R5d+NcGqqibCU3yuwUrdwVTOcpGno03b/D5IN2q/XTWfvNyWVkn/r6v?= =?us-ascii?Q?iX7Ld/OA+5D/PCyLf5fgyjVR9YGykRnNaltwXe1u4rK45+6bcDT3w+tfSyLd?= =?us-ascii?Q?VNsAfxwdz605nnHpwA9birCbcM03wW7fxCtR/wnNwXxDOuMNSFPJLDBqk+c5?= =?us-ascii?Q?2zog6SW4yE9X+CvYugYYMOGHz+YMW9v6NPTdeC+8XgDhaPT2bstDPjJD9bNd?= =?us-ascii?Q?x5mbnRmvP+tLWGLW9OAEp61EG3Jq3efxgxKYKbsaFA2J+vKVOGiGW0VS3qGG?= =?us-ascii?Q?ekr1ebhuFSVgtsKDMd7ikglJ3zGNBo3KEDIGGMxs18iInvWOtGYtNkmVOHcV?= =?us-ascii?Q?oeRCAZPcMF413JNADJOXGPI4CSMuxBPf2zTWprYmENdDptixWhL25V1lin05?= =?us-ascii?Q?crKj4voaeoX3NBshwflIh0ryoaOITGh2PDOpWv58XbPfIDGet1DLmW8O/XHS?= =?us-ascii?Q?Vn5eV9i6XQfUXtEUkOz5R9uCDwUldHuXjwLksZchbLGKqEe9mc+3KPTd+Spk?= =?us-ascii?Q?dLWU1LoQbNKSEHWRfxHl7uCOd5QTdpLBPXTmun3g0jnvpOyA3itlqfaCydkE?= =?us-ascii?Q?ArAK5OSBPiK6wT8v712fejJVqHeantCVgXdqhGvzS+aPtYEHWNNZtCgoHXXt?= =?us-ascii?Q?Og7XALxPiXAdkCuW4JWU7wft/bHlGwrHKhTKaNMOlRzOgJfmgnnpHGtkNRxB?= =?us-ascii?Q?E+nUsJUvabbRSlvcA7DfTTV++X9oMxp3THcTKmL2JDtMZTyIPWFiqKwwNdDX?= =?us-ascii?Q?Vv6Q/Jb3GcvAo8n1LsUjUbWRghNRLuAHNxbKqc+hFJwKKUJ7rQCYgFjNHGSs?= =?us-ascii?Q?Treg7V+wzgV0+lM0e9LNSmy+4ErlFzZvSNn0QC+433x3BYksxrTQdtk6e4G+?= =?us-ascii?Q?3mQDPgP67Y5FG97mahkxy/ybhSkteKsYrG5nT7EIsuGphRi80OhsIAnPMBaN?= =?us-ascii?Q?ZuJ1iHQ/hzJrO09ejIYUnpCMsfUwdq6O/g3JyutRdHJQ9QWJfM5AUINGFxgD?= =?us-ascii?Q?ltO6uR7CHFkdkSZNS4ohvW/+vOkx5VqioIoOsXwpXewAmszKNTYu9a9JC2rc?= =?us-ascii?Q?TcsYoWtgVco6/hSCCPqSjhZGxdGSwm7grHMYqlbPQ7d5StyocCcn9wN2yqga?= =?us-ascii?Q?f3ReEyAsPRrJVb0O0N2sXQfvRiis48AFyVBuksGSWBvLz67hC0E3rs4iPd1g?= =?us-ascii?Q?H2UZO6m4MORaLg/QsC9udW1cKY9CjOq4on0g8u8wfpkMVyffsywnDq1XLN43?= =?us-ascii?Q?LpMb8Vfzp7g=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)(366016)(1800799024)(376014)(7416014)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?oL/8cYuhjS5NduO5eLolVo6ak0/5z7+g0iDL6M6S1Sys7OmhBxENBCYwefD1?= =?us-ascii?Q?DwseEwxQ6ZQBaY8VR4s9cTXaadr18jSYNSWEbp00ucz0vcO1E4w4tiMmmarn?= =?us-ascii?Q?BG3ZlGQnYFwSywn45+7zqR3X6WmEAJQCEad+l5TYb21xYvsOhJb8Mg05TcPk?= =?us-ascii?Q?bKy1eKAbGF+d41jR/YN7yPEUveY0c41hHeiGtXVpegThRlwCMilknjmqKGvO?= =?us-ascii?Q?Yu0Y5l8/S/osCaLTu8YNAH6Gy/vqlIcI8c8zssvpUaV1Ye8KAhXeIj1o5+5y?= =?us-ascii?Q?PrUssPV1JIEc1hhTnr9ZKFYL8BO9jIADCBcz2bc4WMuVOXvN7idV60oSbRJU?= =?us-ascii?Q?N1AL4sqoP/oVUsX+PRJM3+mKr6CV5M4upPuElhZllvFzKa5DyXWo9X9Dwadq?= =?us-ascii?Q?9tSE8GLpP6NRxMfsnMJfDV3vM+JB+Mj91U8tT8hmhZ60OTE+LH+EjkEuK5vZ?= =?us-ascii?Q?QOmFe+wgWj7foLgvTwzwzdycEIlTlIii0RXcI1SJtZZPvWaE8Zo+YripsqCq?= =?us-ascii?Q?MoaQvvDdFZSxhrvSA4pIRWRDC1yKPVM6Ca1+QKDHuOh8wevZoEh+eqTQKbRQ?= =?us-ascii?Q?Phxfw0HJCDT9rhwleBB1g0eKedBX18Zgj+czYIm5GfjnzF+OZPLcAjWC6xXa?= =?us-ascii?Q?kpF+A7AbN5B8SrAybhoG/pazTe50XjHZJyFkYZJP/PhdHhoQ2jNBKq4SqPs0?= =?us-ascii?Q?btzURybsEPp7OH2ZODpoqmKSTc00WB2ZUeG/5nAUSMlhJxLE8Jpue7JiswDR?= =?us-ascii?Q?ik/4H0GUefG5guzRKBn1uywfU//H693ic5LQI7le8jf3mYWdgINvAMGoyCr0?= =?us-ascii?Q?T70YS0UrWzBKjOisPDY5g/Em7qLb2t+/g3JyzlN6u3jbiH9N0kSnvVtkhfuc?= =?us-ascii?Q?eGAMDF02lMULO0L46s0CcGIgB09CyCENvbH7w/yYmDI22046krbMHKLCvBTL?= =?us-ascii?Q?hxriJ1moxBFNnJcXh+F8xVLc0N6Ps85zPrTBKT3eKy1CeIJwH7522Y9ukv34?= =?us-ascii?Q?wBA2joRlZP7q/e/q7IlLuQSYKEEh5mGPF6N/iTQ3iQN/xNUE1ZHpWPwcuaIq?= =?us-ascii?Q?4grPhrU2oNDr8KPMy2WrZ8jyK/TgvKJ1lnHrjB1xZZ/ll97KhHYFuiChFx0E?= =?us-ascii?Q?jx0Tizz6rDk9FQ7c95nJCpHBUULVvDeSWJmlWvCo1l0AV14TULIN2678UqIV?= =?us-ascii?Q?m73aw7idbqaLDcDQQj9NPukqHx4izBjbezYbDLci5/F9FMNyCk86eRJ/M646?= =?us-ascii?Q?pUQnbt6NlwSrvjqvPTtI4QnxDQ8aykHDgmJvZuHkL8lShGaPatZ1c65S7iMM?= =?us-ascii?Q?Van13wwamdc3IzKcDT/53nPp9ytDqtE6uiOi28neq41c3JrsujxzDb7D9hZb?= =?us-ascii?Q?T08ANC86+lq06LZAN3OV313d0/viIPRG/MrcrKmL0Ne3o+Dvp+DqipV2a9Ip?= =?us-ascii?Q?JxzYZr8wv+/kx7hfI/b4BsNKRlfOR0Mk1uuV43xxn+49EbR/C674SUj0wUvu?= =?us-ascii?Q?BMW8c/UfRvOZ4KKZr1a57TMj2ka+L83XNRdjau0kFGwz5MQXGmPLhpJDCwoR?= =?us-ascii?Q?XpNAHL0xJtjWmP7/4o4xLM0ZyCvx7FHWS+1aPdqs?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: d6924d2a-1a70-48d1-d8a2-08ddde878b98 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2025 18:46:30.1968 (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: N1aFf3xQvA8VqHUDAd+nXf6UzsEj1hcObQqB+hjzWy1XD7uCtEjLtnaIQp2Hb8Mk X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9342 Content-Type: text/plain; charset="utf-8" All functions are only used within the file. Signed-off-by: Zi Yan Reviewed-by: Wei Yang Reviewed-by: wang lian Acked-by: David Hildenbrand --- .../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 54e86f00aabc..089e146efeab 100644 --- a/tools/testing/selftests/mm/split_huge_page_test.c +++ b/tools/testing/selftests/mm/split_huge_page_test.c @@ -37,7 +37,7 @@ uint64_t pmd_pagesize; #define PFN_MASK ((1UL<<55)-1) #define KPF_THP (1UL<<22) =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; @@ -135,7 +135,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; @@ -147,7 +147,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; @@ -181,7 +181,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; @@ -264,7 +264,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; @@ -364,7 +364,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) { @@ -380,7 +380,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 @@ -393,8 +393,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]; @@ -460,8 +460,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 08:05:15 2025 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2045.outbound.protection.outlook.com [40.107.244.45]) (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 717F8270559; Mon, 18 Aug 2025 18:46:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.244.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755542796; cv=fail; b=N9HGGi0O/JSzTIqymEJshZS6tyakfdSdLs0LwNYPIrgjdi/73M6Nojotf+BUheRL1v+kHOnxZxrlEgk6Xz4sSqGfXRbdX1YuVAxZqyUWCUccxaCCsBbp/Yk1ufxYKiMqo1FLS7yZqaU+XqdTkUemRv38TpE0Buu2yUnzKX5tBLk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755542796; c=relaxed/simple; bh=Mn8QMyc/Os1S/1K7+m7SRRZ+M+oJx1F7C4EH/pqSJG4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=dqt/EI+e/52QO66M1lpYn7IFSo1YaIwMHCvqUEWoBCwNuQClYwPKwxRsAFKgGjP/SQCxKI+Jk4aJMCt9JuNY0sjbSnH6hAKBGq3zx3HSVKZU1bvXgrD2lHTDPmKzjTlepus4pacjBaCck13onORObK/d49pVHvQw5b7V43xEwDg= 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=jj6NfDKm; arc=fail smtp.client-ip=40.107.244.45 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="jj6NfDKm" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Q6zuzc+XVYs9LrQCLxpIkIm00OEwYBUly7zaS4nvSn6/A3rnGxECc02y+cu9zn8sj5asubu+EsEPFfo8Zn+FthC2AvZflrbSVofJyaP2DQM25JlgqJbvc9mPhlHFcOPH2XZdHNAD28mzaGJ9h+1qhbtUAp8/5lle8jOSPUREygI1NgMYCkk3Gy15QbejNPs5NiHdGFOUYCMGnHlZhhQ4qnj3lEEeQYYMwmDJ6I03REV6L7Xbwa6uDBXwNVksQeWWLFX9bP6wDU6INVTbK1Lx1o/99kC1Al1lEmbZLiWghyWiBcAjwQcOJIZMHZUNlWH6H6It77MLb1Q1A5cKGUSN5w== 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=eFy8btX1ZlLICpW7kbqM3wbGIHxxU5yal6pqrfuFe5M=; b=R++f662SetXti6OjEZgu/yHEscgBh8Ztjs1Px170h8DFuxV5uzVaJXLWotxnGJWAwOKS4VPTdadpxGvRCtwfRAXv7DkT2bunqd9stVIZi4zEjN+YPNnKro1i/I4HnoKFBZFeW8eg1A0XQoly34BvWjmG9DZGCZsbj8HPYoxGpwXr5vsxkGzjQvlgI/7j2GszDF2KDjmJXZZoezg5R2HJ5/+Iiorr3xCrO/Y6AkXLfx3cGq5aKONN66Hwz/hX5DLneWejZp53VuXZPcfvr3R7HNPWMaJT8w4cP5qVNNwkavSI1GZvLGS58/rruTCkS1q10ewekbM09ifYeyl9rDJEsQ== 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=eFy8btX1ZlLICpW7kbqM3wbGIHxxU5yal6pqrfuFe5M=; b=jj6NfDKm5KopZzrNKcNx5hfORjBXXN8vFvw4uviEsaUeqmQpFL7n+xzoKbixAqWxPPmgloC0as7rVgRsfFUifpHhYSgIy9w1mEYIf+eScCEBSNzBYENZNZ4s3LT6X4HUENVrQ5WGdAhB8wG/G1NCqICK2P+Q2A7lEA/kv2Mh5aSjaXTTuqWLE01CImexXnsYOsmXl9brwT4p7emfWNzykLnnybsLwZymzvzcWaHQ+F0/LoK9lYFJXtRkg9CL4p9UNEsla1aaG9GGDF6Cc7MpFdxAPNG3JGDgrUETPG+7KCYIqsRAx3Sjh6ZVEnQIG5n+4lcTajWYZ5Yo2BVWOA+pqg== 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 CH3PR12MB9342.namprd12.prod.outlook.com (2603:10b6:610:1cb::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.24; Mon, 18 Aug 2025 18:46:32 +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; Mon, 18 Aug 2025 18:46:32 +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 v5 3/5] selftests/mm: reimplement is_backed_by_thp() with more precise check Date: Mon, 18 Aug 2025 14:46:20 -0400 Message-ID: <20250818184622.1521620-4-ziy@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250818184622.1521620-1-ziy@nvidia.com> References: <20250818184622.1521620-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN0PR04CA0045.namprd04.prod.outlook.com (2603:10b6:408:e8::20) 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_|CH3PR12MB9342:EE_ X-MS-Office365-Filtering-Correlation-Id: 77856ba1-b85f-4651-935a-08ddde878c99 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?o+GHhEYyZ4WU7yQul0jl1C6SSdjzhgioV9d2TYaujULV7HoGQiILwqUFPXvf?= =?us-ascii?Q?zquVVGMDNBntdqP+3sKbfwgO4Z5LZ3nDVVBPbk3KmETU2rDe4nohQ1uynwYz?= =?us-ascii?Q?3BKipvz+MRowPQBY77aIUm+TM+Se/gyIXhL3A444Mcexn/QJWe3STUUehY8l?= =?us-ascii?Q?UBJuGrFPYEDTlz72XGTlzHBsAZ85R4uF40sTK5kVQAQW4S681GV8X5RssLxT?= =?us-ascii?Q?DiQR2TgqtBvBs02h99wRZzStM57rXfQdO05P9Q2ygnNH2KSLCw8s/Ve74qqq?= =?us-ascii?Q?L04sYCdx5IpHPz1HnYvTkwe1zuLV/ek5rGugNfSivNWnmKvFClDwWRam/PPm?= =?us-ascii?Q?8LE1/UEWX97GRWgHtm3KiaJfYb0Wun02U1ZEdffUsQE783MxB/sMdSKC0ykP?= =?us-ascii?Q?3F3M6tiDwjpwbFF/xmhQg5j0jFNlgKeiVZdn3fuAwlECF0kCcPVWp7P5t+n1?= =?us-ascii?Q?nJy1mfh46ZAKtsk8qD7ON4CQMNxEoPbMZE3ATUFRW+INgB4REz+zg32mfbgW?= =?us-ascii?Q?3fo1iJBcyeK/vbmqetzh4T1W793QXkVa7qDiTypoTq3VJeK0sRT6MJfMvwGq?= =?us-ascii?Q?T5474UMPfjrJ1UQiBZJ8RCmYCR2n4ciAwOk3Tth/8VcMfL3T6C9pyC0pfZxt?= =?us-ascii?Q?QxtpiJfR3bNZEKy4wWyK50A/r2UZ9OjGqm3I5AeY5j68wChoDZd1QHOOfE8H?= =?us-ascii?Q?e9pUI1BUWytYICKEhAtoxbEtqS4IoDpi8NgD4T+OlCE3hjtaPp3NVUClCijC?= =?us-ascii?Q?atjDGzLk/Ts06a2CBCfQqchr8x+cz8on67IxlorenvvqSSg2bec924cTe2lC?= =?us-ascii?Q?BjROVr+qOFd1BnFM+r22B3/7uSYd2bMIQrM9moGd5hSy6LognjH5d96m1KBb?= =?us-ascii?Q?HMW6bdnWefrTdxYarVkU868sbZtoQwkJLK+NNnhvTuVsiNBVAaUbYTbxtFvC?= =?us-ascii?Q?YUhTPFqvkgWNUg6lnZ6kGClGgjeemCGKZo2Fhf7FB/l4mt1YvMnowGkYayju?= =?us-ascii?Q?4VRMfUqp3E3zt9Q0Ch9fPVNQKNYeBfiJ8fIKZAGcQMYc4UAYEaL9BVBELWfc?= =?us-ascii?Q?oQbUXy/TMi452sbV8T8vAAICI3Xnsf5zOpmMcmZHLsfZCGNLfbwBwN0OBsqf?= =?us-ascii?Q?7ZNWrw3iNikXo+GXqAQhitE55Torb72DCBsaxEcqPrwNfjV3GlhSi3epQ/ju?= =?us-ascii?Q?j253KP9sE4dW4RburjLZ/OzI7LWzZpaqpYN/3CAIu/+hC1ANo0DRUbroTUHu?= =?us-ascii?Q?VHV12MGBN70XG1DHALX5zJstqSX44QQm4ska15at4MTYUtdUVTqjUgrfEC/U?= =?us-ascii?Q?EJ345zDfi9AwFztySzC4Lp0UApsBjOLK8vb3cqaP4KGl8Axk2Z2AfcKZejpM?= =?us-ascii?Q?roWyNie0blsAlMgSU75MQ6WZ9a5mHFlekTzlMVU9DHhMHo5cPxcAgt2Qc9rq?= =?us-ascii?Q?2PttL3ckfDk=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)(366016)(1800799024)(376014)(7416014)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rYyzUBVEBl1XyDCQxdG0hJp6ydgGCyloGdArJdF0WQV8pTs9AfE8WOap/lk/?= =?us-ascii?Q?8YIW0JztVitaSK76RP/9wONnv2tjlEwstCSskjXtP59LxoQZYVCOV1Rimuaf?= =?us-ascii?Q?TWzzy39XgRxxh7IKmzATUDWfxXTAsY/IeVQZao3QLV+14A6ztxRxSVcUWftV?= =?us-ascii?Q?3UMVo15Khki1xNFf5tH4j9u85TDFFmAcmbTV9tN1Wuhl3+J1DPJE+uiy0zuI?= =?us-ascii?Q?2JoKJJtqJ/1GGa1zXXf37ynpy4sB5UQBRGdl116KxdN5e2wetWPJetEqNM1k?= =?us-ascii?Q?3miXRZNkebjfzE6TTdjdvx/ZWv/5jfJatOkEmIdNqMreURYgvqtv62Hnq4U6?= =?us-ascii?Q?p6DVekWK/kHOKuIfpojwV2cMl2B3sHxwcUA7mA07pqXNgP0PZRBdRyr97i4y?= =?us-ascii?Q?w13byFhhnDBE+oAazihnG3DwIHxlDWEjoe8fgOOND2Jil5piEsD1RT//dmDV?= =?us-ascii?Q?6i2whT6IrJJCxKCcU5yaFTZNSM9ZEjW/0rVkJFOjkzIea7soYHhD79AwVO//?= =?us-ascii?Q?VtOXo9JMaknm7Mq4OUfsQ4OlbmpY87uXRJNpsJdKAnMVMTjymdWeLwMX0S2G?= =?us-ascii?Q?8dxZTU7Tt3bslTYs0a8Ja3OpUv39MY7bYmEs3nIYSHHEU5JmtIMFdUVJGQTi?= =?us-ascii?Q?Pa017xvWEzy8towJp2vlOcubkr7s5duhY3xCnVHP1nHWWGEUYyiHoJ7CgYA3?= =?us-ascii?Q?dYxFiI17f+tcEx2W72j8CNER4WVZHwYMdJGUnGoDreeJ6O4D+GuLXPPhzpmd?= =?us-ascii?Q?XpUBd7rtzf3ddq8p5GucAR/up9Uk90lDbjoCYdGVvpBaG8xaqRo4uYonRSrM?= =?us-ascii?Q?bWfTbm4P0jris7atbDqeE5kdwdLaqKInDpWITlJwAPrnxA+eC5X/TjFOx4xN?= =?us-ascii?Q?ClcnIDdjjkcDUBPYLt+kPWUr3w/6vpxYtPOOTZvOXc/6kkI4lx6zQ3cEw4by?= =?us-ascii?Q?etpjxvrtaad+HAkrwr/lQyDTd39V8E+cMv40HSVQj0pFxYU9Dt6p9VLSoOZi?= =?us-ascii?Q?fr1fTiuwwS/3a8SMqDJSRAC+TuInXxAr1mLDNxNpMOcOxQ/x4732OLkS88xY?= =?us-ascii?Q?uHLvBJXRnjA371gGHtygASy6m/i1r/zXY16vtHEbQ8A6CAUPF4BdmdmfvZg9?= =?us-ascii?Q?Txt+HlIrgo1Xf8gFbIGzYqwhvXoknPMEISadkikAr5ZTA4NVXpqnukWUzYXH?= =?us-ascii?Q?3Q3m5h7X/odMnXKavYG6MWkmvU8Ls0SBy5YZZaZF1z2ga52CDZv5Km5m+R7m?= =?us-ascii?Q?WG7uqdk09TySpV/IHZkLPcw/JgUDpBcu16jtUctz/Ioswx+vFiDheBkWLTLG?= =?us-ascii?Q?pkk3rMk2UHNTlpgSVwa8xSMz8IhO0WvsUzcWtqrYMsMX7ZAoVDdo9tl0hAHn?= =?us-ascii?Q?LgNjegrKe9xnP4WEt1TPSv8CglwJV7vBvu7AkKJUPi0dK6F7qlIjwWj1xoF0?= =?us-ascii?Q?FXHlUP1rH+xZspGb1zqVAmzqZ1/1bH9YM07GmqdvsabQUfxJrSXtmbtoajIx?= =?us-ascii?Q?T4lnEYqEoazBe5nVv1u99eeVp4IMtHrw2R9t1AyxNXX6NboKMy2ZmLgZbJVJ?= =?us-ascii?Q?G4mSVpTshJI3Up923nhLfMqSrCRARMxnJtXvmZA9?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 77856ba1-b85f-4651-935a-08ddde878c99 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2025 18:46:31.9164 (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: L66GW4J4VHAzAkw/NIEbyBnCLblXVKZf1XyI34sBG7Vro+9w7xTYhIkaZePSjvUL X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9342 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 Acked-by: David Hildenbrand --- .../selftests/mm/split_huge_page_test.c | 88 ++++++++++++++----- tools/testing/selftests/mm/vm_util.c | 13 +++ tools/testing/selftests/mm/vm_util.h | 4 + 3 files changed, 81 insertions(+), 24 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 089e146efeab..56d1eaf9a860 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,26 +35,66 @@ 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) - -static int is_backed_by_thp(char *vaddr, int pagemap_file, int kpageflags_= file) +static bool 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)); + pfn =3D pagemap_get_pfn(pagemap_fd, vaddr); =20 - if (kpageflags_file) { - pread(kpageflags_file, &page_flags, sizeof(page_flags), - (paddr & PFN_MASK) * sizeof(page_flags)); + /* non present page */ + if (pfn =3D=3D -1UL) + return false; =20 - return !!(page_flags & KPF_THP); - } + if (pageflags_get(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 false; + return true; } - return 0; + + /* non THP folio */ + if (!(pfn_flags & KPF_THP)) + return false; + + pfn_head =3D pfn & ~((1 << order) - 1); + + if (pageflags_get(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 false; + + /* check all tail PFN flags */ + for (i =3D 1; i < 1UL << order; i++) { + if (pageflags_get(pfn_head + i, kpageflags_fd, &pfn_flags)) + goto fail; + if (!(pfn_flags & (KPF_THP | KPF_COMPOUND_TAIL))) + return false; + } + + /* + * check the PFN after this folio, but if its flags cannot be obtained, + * assume this folio has the expected order + */ + if (pageflags_get(pfn_head + (1UL << order), kpageflags_fd, &pfn_flags)) + return true; + + /* this folio is bigger than the given order */ + if (pfn_flags & (KPF_THP | KPF_COMPOUND_TAIL)) + return false; + + return true; +fail: + ksft_exit_fail_msg("Failed to get folio info\n"); + return false; } =20 static void write_file(const char *path, const char *buf, size_t buflen) @@ -234,7 +275,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)) thp_size++; =20 if (thp_size !=3D 4) @@ -251,7 +292,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)) thp_size++; } =20 @@ -523,7 +564,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 @@ -544,28 +584,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 sz2ord(pmd_pagesize, pagesize); - tests =3D 2 + (max_order - 1) + (2 * max_order) + (max_order - 1) * 4 + 2; + pmd_order =3D sz2ord(pmd_pagesize, pagesize); + 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..741fc129313d 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 pageflags_get(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 3da56feeb944..ab8722f482ae 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 pageflags_get(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 08:05:15 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2079.outbound.protection.outlook.com [40.107.243.79]) (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 B367C2741B5; Mon, 18 Aug 2025 18:46:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.79 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755542800; cv=fail; b=TTye65ATRtB5D+Zndc3CUkkgUMGGIT0oK2n79D9ReSnF6GtNyd7rATSMakpLx6tj3PP0J8KYXWqk/saUJKVXaJ2xwcrS162bry8VWvyCV599G01H+SLUNvd0mgH4iZs+Pz8QkTLM+zQvKbxG+gt2vxR/sGPMp13U31ZbgREvcnU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755542800; c=relaxed/simple; bh=OSrmX1dFWyVPsQ7U63PDz9DbpgA9CjM50MNsyy1sj7o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=JyZsTeX1E/VHmrpJAksAofOs80o4BC4ZNcsaJ96SWhI5SvzsY1wF4xKbup5kwLYH+eWfUBkU2Y/wfkMATOV18NN2okym+v8VFE2BGLGg+EzzmTTnUi0FZpO8HwluSsThECEhcQOV5PwerNek+it2Ua7QRwtPoy3H+aEWhLcC1jk= 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=dGUeUph4; arc=fail smtp.client-ip=40.107.243.79 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="dGUeUph4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cBULLZ3RZzuxGLlWhYbZLjB7I37AMshqeS2hQ2R2o0Sz47b4qoarYfB9n6GLMF3eU4owJotlAuRsu5KTicy5FHikHXW5A7oePAGCTDmTQUJSn0Meq4eBxr9UuURTyKaT9ge8PqCo9hs4erzWgbs2Z+oRl0phWwA4ig8HVmLbY0HYkqqixnUdahDiDsLNz8j4g9k2iDwRKmSYefhBRFSpLAPXlyr2QhIh0Q805Va+i2eKoepdgvtKjvs9WoCICsB3PoPddvuR24vqJQYfYLRjQVAMd5C4HkOz56ytpMnXnSzvRhuCihof4zwQh47jl1ymUGTfsFUeXXIaWPE2Z+H6ng== 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=XyBDzZHJMj7ZNuMYJqlbI4vqpC1avENAnu58C0shrvY=; b=yTctsHwaUJu9+agd5zX0dLmYAynV7ZEgCtWSb6Lh/pFVU0sKisKeguQvYWqZli+VNCtodAqAaMBjP2DJQdOL3W0X2TxjZtmodGRfre37vmHMniN+Kwuzftdn9+JBgv4ncmpU4QwBGXB1QPpi9Bde0R9vQTHJ9XlbWe7puyhj9+O+hVG4R6g5IlOT+/KDa6/t5InTWke2sd0sXxY6K7xZTTYV2vD3OW4MLyhZuVeBt1l2mmHE5Fo0CiNmd0VYz6Wn+/XMBZ9Q6vyOvuAjn8azc42eBC5mDDOm9tbTP2+3p2dj1QTZm+iRiidstlW0bM0bHjI/glux3tw2Y/rL1iB7UQ== 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=XyBDzZHJMj7ZNuMYJqlbI4vqpC1avENAnu58C0shrvY=; b=dGUeUph4kg8ukGOoTUrQvPnvdGZa0dahk58cI+qPHuIhuzHMOQbbOV5BzfvoiLKH9byB7esdmcwoJxsbRZISin29gjGJ6HlLIMisEvLfXmba+zJU48hxgpvZN7d+3LEB7MGVc03gadogWiKFEqysSmuybokmW+DpDM8rGfoZX6HJ97ehZiArr02qkBLMrPHtSBV3zwcTysv/D3iohtAjDqg3TP5FJpJPv22Gk3Rs6LeiMoi8G0telKc87h5GqW/JcIBMiKreu+hnbaih0bwCGqPBygWHdTfaYsYsWl7KF1JE1+WqvmBcBieEb9iVYgbhtDe+6AcAdbYa0V4HQVBetA== 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 CH3PR12MB9342.namprd12.prod.outlook.com (2603:10b6:610:1cb::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.24; Mon, 18 Aug 2025 18:46:33 +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; Mon, 18 Aug 2025 18:46:33 +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 v5 4/5] selftests/mm: add check_after_split_folio_orders() helper. Date: Mon, 18 Aug 2025 14:46:21 -0400 Message-ID: <20250818184622.1521620-5-ziy@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250818184622.1521620-1-ziy@nvidia.com> References: <20250818184622.1521620-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN0PR04CA0046.namprd04.prod.outlook.com (2603:10b6:408:e8::21) 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_|CH3PR12MB9342:EE_ X-MS-Office365-Filtering-Correlation-Id: 9871179f-bcd3-4732-3646-08ddde878dca X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ViLN/wysaVomLq2YZyPSHAubObNze1XxUU8reAeorTSvUmPfQDaTiiwgk3UL?= =?us-ascii?Q?J2phttpHPS1fOFRLop3NiajRmBgmOweeOsu1qNo1+OedJtSHhf1xV6vowNu+?= =?us-ascii?Q?voCcvFGcUOsGahtm06pBnYgQPtHZSK1o1qZi6FOKzPxf96kcv3R+P9HT2Z1E?= =?us-ascii?Q?doZC8rFrFQmpfH1Q/IUS3l9ElrA4no/QMZQ34+QujLaDW+0mW5RSFWb6gNIO?= =?us-ascii?Q?QfW5KDWW5oQWi+/JE7niHE8ugTJJmP7msihK4BPo+HE5baIBUoOtu08in8ar?= =?us-ascii?Q?mzkSBX/ATYihjJB7GA2Aa4HpQjhwXo049EfuTuo+hs8rye5i1T2+ul6irb5p?= =?us-ascii?Q?kxlEd5tZIohuXtKlyClVIZKND310J44mmZx/mPgvT6aMm1p/8HZzcCjur11q?= =?us-ascii?Q?MHBfJRSxUdG49u43gwf1CemvXQvSKakSbo33p9OTQ3Gg/6QM5SwJC+rBKxqR?= =?us-ascii?Q?NYdkI9Qa9gIZRRZd1nhR7/rgY793T9O1Zoqpy0hl7tHRjKVY2Eq5z1ipCGzW?= =?us-ascii?Q?+KeOxcKqWpoUTiZq2A/BVyU4FSPo167UZY2cBZ1Sf416q9R+jtxZ+8jBvki5?= =?us-ascii?Q?PPfbm3VcbYOUtX5tAMhRjD6EJuOQGPWYiGghv8mhchMoyiidj0gZlwS64UGn?= =?us-ascii?Q?QXAC/GcjkWGYOeHEp2XUAtnDJdt0tM02OWJc/+do4aYE4NXfnXpTcY8p97FG?= =?us-ascii?Q?JnYcgGytYGMH7wLh3paZoa3lFN/LiMYn6FkDhwCQ5UdiAJMUo0/9/YCiqweH?= =?us-ascii?Q?UqoPX7LuZb2cYZ5RUOzI+8OZ8Wz+0TUzXJT/cVKo7DA19OwxvVAzRcmz43gN?= =?us-ascii?Q?L/m45TWJ075+O5/6F/hbklu9OyrQNy4CWE3HmnVY7G19AeEu+o60h/DWZ7wh?= =?us-ascii?Q?tvY1GJ1SLfAIlrEWjb2upDfhB20MBTBcpuDsjns5YNvUc0fFr60ZncXnySWy?= =?us-ascii?Q?dlH1yR7+86VFaD6GbxiKI8sqtPJ3y4VBjpa3OoWlUh1rye2zOWmT/Dw69p7/?= =?us-ascii?Q?AsgyQX630rWOQAZmL0B8ooDfFyzAZzCS9Y1db9lFDoWhsjE5k08MUjiKlqx9?= =?us-ascii?Q?htBA1twaEjEv13rmjlDFMBTWCeKIYSFvg3f4oi5s3V6VGO3DU1plXk5H5RRT?= =?us-ascii?Q?CfxNVWIpxBYk1ynJmzYX1tjj+ka7/cxtnoJj0GSMwiQXEASvRY6sXOK8qV/T?= =?us-ascii?Q?RINd0FT4lKy41ikF3Q0Ny0hzrfqZswIoCnkriRvfUyP4JT0qoXciqMgFD/po?= =?us-ascii?Q?EnDMUI5byOoeeEk50UY+aTy0U58rjCamWQ5iwInBqvqNvLkEVmYN+7/11ovS?= =?us-ascii?Q?GvOaZnbrbGrCERKqz14aBU7k9ddZeTDpBpbQV2GXNQZGkcaYMgkk707aGSPb?= =?us-ascii?Q?VZxU7psFwba9ankkzsurnD1UiX1oS55NJ9OYPba8OxjbbpFVUSq0439y2CyG?= =?us-ascii?Q?2t3leZJaX4Q=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)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?JICedGh0i0c+sur2xIIpd4LVJ6A/gZXgCFdhY/jEHBXOffLWwVguSNyHCH5d?= =?us-ascii?Q?Pynkdlh1ruaW99tilCJrBGYr26hx/1MOxkXmXDgnNLUOfalpmh0mCg3d6Z+P?= =?us-ascii?Q?/OoJwkpoakdjE/7xAEq8MOCRzi/vn0hIxXTubpkDmMinaesMAHw2NVn3p4kP?= =?us-ascii?Q?0DRGAr3Or2AKqtU0dm1Gb150JCanXjG/4I0hlGnJwrYwJyK+5blRVczPs/MN?= =?us-ascii?Q?kEwSj9IvSDGo0gz0aUXZWhM3MmFng/ashim+SauQtvaZyjT124PxihYtFoMm?= =?us-ascii?Q?L/t7hWhnrsI7vJSDY1+c+eB+DIr4qox9PvzvKVLyYmr+FAwnJwyG9vXpKEmh?= =?us-ascii?Q?cDEPU1xga+l2TWDDgO7fB/xnQRm/EnEr6BauGnxHlCC+gXo/qvCyz4FKsxzY?= =?us-ascii?Q?aOLAWXftSA7Gw//B1Q7jsqH5XnMoB+8AbIBKvvB51ytJB27gXjfX1GzlC0Cd?= =?us-ascii?Q?JgwgE54SkQFtbvrsU48qPnswtOSsRCFDoCSmIAzgiIRV8Jms3sy+0v+v6OMA?= =?us-ascii?Q?v2OjW8aSdAUAiQUhBRFbzhyK0HRz2atYxsOvMc05DrYbA7OoS7ZMFkeCbzfJ?= =?us-ascii?Q?k+8DyIfHpnitThwK+ofyjTBhiUVjsZoybS98eEL6c+zuxH0kF7W2M4Locxyz?= =?us-ascii?Q?tMCgKub/9KSFxCkklp7rI8hxGw6wCtmpdyv8cPm5b9/ftSHRriXduHCUG1TK?= =?us-ascii?Q?lP9nOLSfxiD3IxhT9CJDbPAj1IhKcWUY45dcReg8Afzd9zWV5mXSthYAmuaF?= =?us-ascii?Q?NQem2srrFqbJFZAom0kmKVjPmKvE/7J3J9yVcTtFkCo1XSlGWMohGhHeC1e2?= =?us-ascii?Q?F5vS+QAx2MHYBiPqlGe/RW3WuU5gre8uGiaDVitnrWnEKtY+qVQ330mSBINR?= =?us-ascii?Q?2peQQzZcyJGGfMWTjTB07CeTk5GKPFbkhXW4ySOEZFmQ1yNUwY5apij01sHG?= =?us-ascii?Q?gUAg2OZ2LTK41McuNO8v9hRcR4Ox8t4q9nUAk8sBibJnY1WBcEj4CwPwlBTG?= =?us-ascii?Q?eomww4t2/hP5hg9qX4a4a7RXBAPmalB0uoV11G5v5yRwZyRTZ1nZwOTbsbPS?= =?us-ascii?Q?apDDuaq0oEwicZKw5e4CQRtrH2WsnTRf3cI36362fCJolTYttU12HBAW7pYU?= =?us-ascii?Q?EVcN+82jX1MNfkeYwk6WhIXmKkcW2LSW4MBO8SMtpQnbpVy744RuT85zHduI?= =?us-ascii?Q?FhhazjBdpy2k5y6RCKn/IaU3XXLpjgHsR0CFjI8LXIJ7+a5oOjrjRSj8+cER?= =?us-ascii?Q?oW7E4BbjXVvJdjedee/E4Q87GX/JF7gmX64lkQHAoiH058dDfYtEUkLcBb/Y?= =?us-ascii?Q?jBQ6pIRWT5YpovY0cWA1nX+5/PnmoIulJ1hHANCSRCGfXDg8JN/kIzNAkByw?= =?us-ascii?Q?+rDdcYZZhOyKl5dSgOoYmVB3+dUqJkfcz+1r1nDx07V6O3uYk78AU+sEwMhK?= =?us-ascii?Q?AJ8Ta/3zoVNhQJRcHxh/RLfbJJn3jVeea8K17ehgkIHOFm1v05edX16yqiXY?= =?us-ascii?Q?cZrndsLo1XcCXpe5CuGXtYjUpDl6VB0nAS9HcV9qczG6SVW4X0MLu0PlT+I4?= =?us-ascii?Q?ZV11XKHMTQfgx+IkcpfSfSvk8Kwq7mIwKp2oc+kN?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9871179f-bcd3-4732-3646-08ddde878dca X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2025 18:46:33.8547 (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: o2YGVF67Dyy0tGa1Du6OdknkSuJIaDa4Wp47sNhhJKK1FBQ752nosku+RJEiumRq X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9342 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 Tested-by: Baolin Wang --- .../selftests/mm/split_huge_page_test.c | 152 ++++++++++++++++++ 1 file changed, 152 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 56d1eaf9a860..e24df02420ad 100644 --- a/tools/testing/selftests/mm/split_huge_page_test.c +++ b/tools/testing/selftests/mm/split_huge_page_test.c @@ -97,6 +97,158 @@ static bool is_backed_by_folio(char *vaddr, int order, = int pagemap_fd, return false; } =20 +static int vaddr_pageflags_get(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 (pageflags_get(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 after-split folios withi= n 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 vaddr_pageflags_get(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 vaddr_pageflags_get(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 08:05:15 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2079.outbound.protection.outlook.com [40.107.243.79]) (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 5B8E027467B; Mon, 18 Aug 2025 18:46:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.79 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755542801; cv=fail; b=XhB7Y6/8sveRP2Z5eIhhHtQ4TrqQViJEwKwEIjJ0R5xjhmWDzAjEEx1i3dh7WOQ8P/Z3+TJYJHfUxu5eT5TljfjZWtKPyAEw2rtFZqfISUDn3LX8sVCwPRtDKcP9oTzAw3YWVVKJG3y5MuFid9/+XBPGyOKi9BwPgdQhjbgiTEo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755542801; c=relaxed/simple; bh=s3fVtnit/PHuB46ZJydlGboOrULDb0y3fILBr9Gi/Mk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=SaqQf6Kjm2R12AOKbsfNcA+oxqtxV5c1PBfSFRHWxK07hYZkZnJ+4FJQf+oBYlIs2jTntk/2XqxXMzlZ+S4LBWOQx4MbfuDcaIaTw8FSesxecvLWkrkVoX15aqMnNy03YsuRxvkx+jHMOJBA5nIi57MU3GZf/UWJA3ckIeRavs4= 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=UxduS6vL; arc=fail smtp.client-ip=40.107.243.79 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="UxduS6vL" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ILeHEIemmI9aErr7r5vIg9CMUvZKJ8vr4xg8gJcVyMAzryZRGcc+1Tw2L+zW4Ht6Vb8umy3MfQMA3dx7EhEPUSFFEoMWJuMnrzpEC4jtUCEenqB1ONPrvUcxdxbJL46nwdQBBf8EQ9AEoVJGi3nDGYkQ1eqLp71SjrcNpmgPAKoS+ExkZ7ZRbAM/b0n0c9jmnPOtUfo2NDNSmQqLMGmOxSuU+7nIndVsII25rjenxl0824rT9awVbU/d5ktwTAINwOdvs4FtbaBVdHAQtelKSyEq15BmVFWNuEyG7vRdHmmXztFHREDcoi74L17ENdVPp6Zsx3D5ZslHuJXfhtBOmA== 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=2NjBuSihFTTquetMFfnz8BoJJEOlJwPWVZeyM7rhy+g=; b=ImS8IDo4LKHoTp3jLxNOXvi2RiupEeQJu+HSRPMTgqYechRcwpiMdIMdOi3rd4p8FkdUqCk63wrduokst+Usfu3SP+JsJklVVFNsKgiQd1wSB0peAuI8EwvZwNgclHmL35oIPNn7UtiYOUWsG5/aKd0XxFB2Ur696dTBg3Nwvu3siJ9kHVZ7IFKPFU8M4A6hE0oD8RUfVvsZId4oUTcG8hEJ5ztbCGitwiAbOZZ70KTJk/z/lLNEMa/P7ov7LbT51KR/VTwgfOBJGa9AR8rAtAkzW0+Tx1/bWWJIzczTGajsaqFh9751q6FyMbfmxnEIYVEdIctBgTkl7VFrItgpKA== 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=2NjBuSihFTTquetMFfnz8BoJJEOlJwPWVZeyM7rhy+g=; b=UxduS6vL2NGjk2Cww+Os1lk/+BMM9O79yBx1s/ZNYBK29wdbOlm4txjjVhoMFQSsKLh8UVwGNHLsfUjD+eKfCA9VmUiewxRON7YVzDKYrC9CEAwKuZDPfL7EiX7U4SrH9fNfou8c3umm/mB370jqmjkn6C+rxI0iUg/wZqzWKhAlD7iaqG8v/uTdqGKTvISWKnozQQs5lxrfD0688SXqoNnMieHrLax+Pt/VwWapeelh98j9sn1pG0F8FTRwVOiGJfdnS2uucm3ZZGmhMIDFBtxaokEkBaAGqcxcMqVWJgrG0DePY9sg/B0t/vml37OJYTP1EskRH8flBwGCGJWiNw== 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 CH3PR12MB9342.namprd12.prod.outlook.com (2603:10b6:610:1cb::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.24; Mon, 18 Aug 2025 18:46:36 +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; Mon, 18 Aug 2025 18:46:35 +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 v5 5/5] selftests/mm: check after-split folio orders in split_huge_page_test. Date: Mon, 18 Aug 2025 14:46:22 -0400 Message-ID: <20250818184622.1521620-6-ziy@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250818184622.1521620-1-ziy@nvidia.com> References: <20250818184622.1521620-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN0PR05CA0016.namprd05.prod.outlook.com (2603:10b6:208:52c::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_|CH3PR12MB9342:EE_ X-MS-Office365-Filtering-Correlation-Id: 03b94713-e759-4890-bca9-08ddde878eb3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?BPwFIp01voJwZFlgAa+MvRHGycj0c0zIMCBpSBkc8ogJQSbdZIbzIiFXw5NW?= =?us-ascii?Q?Z/ONhmEfaLJHnQFvCSzMAHIQXWa49VeOHtINRWZ/xBvv/Fl+NL41K77asohT?= =?us-ascii?Q?VUKLkIWXTRXyiIR7nfnmzKoB4Tuih76MHwkUQgTa76R99M70Rw8Qb1GccIGa?= =?us-ascii?Q?7txzc4nUkKmGtWFWCGeb5pUWE5NVbcG4LFnn2+BkODtnP892G4BnHTryMk7N?= =?us-ascii?Q?99SMf4PNNzQy5CkT9YJul4jhz4wLf8qk0JXXek2QWGiHqw8+leUlBweJJtmN?= =?us-ascii?Q?Mek9Jl+jSMLLeDfECzdwFTz2WTK4J/QYk9uxmRIXvei7EithvbitpBpkyQbc?= =?us-ascii?Q?J+87bLPCLo0yTmPOWalpYcmk+U9rTv90Zf+83pfIbbwedPz80QVNs7ugsH7U?= =?us-ascii?Q?8UGaHkekJ1Qh1EYasgCaI/x8Kd6R2CbKXEJXFZWd5RY2XwnTq+/8j3U516mE?= =?us-ascii?Q?pot+JQyBTfMnCXLbLxbgJ6JqeMr8Fd7/ah9gEPw6mJ70LrDi0T1NDyNNYYVY?= =?us-ascii?Q?Wau4xVIOWhxfzWUQcaHStkPhq5iZLaW5RHPfwSlele1cunONRhmtz7y49IIH?= =?us-ascii?Q?IAE7NTn2HTZUfVpbuHiXRZlYxYWAXhMIKZJd9rzSDhCRzRCXiVUGyuBrJVXQ?= =?us-ascii?Q?jqmLUTbyv5IdY+x6r7MT7198xcTYC9NX6hFlkgC98jkF7rJaV6jsS4HmeduX?= =?us-ascii?Q?2p6uIoitDPpiuInBxdlxytPUDordwiNy45sQVzW8D66ucxHa/Wcj8QPI+knm?= =?us-ascii?Q?kCSxgeKZmeBeznLP42ClmPWRamZBeYBoDqt2ww8xycAwqQcYfpkjOF+rNu0Q?= =?us-ascii?Q?FKRa+sHub4S22TC2cmCToK793rndn6uo8dj91w1CFQYb0q9jIC5NUtnAMxiS?= =?us-ascii?Q?CYmmQT1yj/Kk41hngl6PHXtIIXVHsw+q2626Ku7S+YNrsufZc4KZDCBCxUTf?= =?us-ascii?Q?0YIvuEI6mpmcG+ohjWNW51Y8GB28/xLxTZuZctJYeZbsaNle0+Y30fcEFT5r?= =?us-ascii?Q?ms2FSkXHYX6/GXzsxXdm/E9mxFBg9nds4ApL66SLOt2UjpFHbeirSS5YUMx4?= =?us-ascii?Q?5n/fBBk4FiR2WcdYts2DyWuW7oEnGjlrsgdJb93s8b7Src43EvrmdFlZzX8t?= =?us-ascii?Q?Uw6LAejD7+TiVGbWTH+NMsZdo78uf9HzV53FE4EjyVVQrnLjGWwZhC8w7Ybw?= =?us-ascii?Q?sQjnbDXOelHR8/BFATDJmWY2hZEy1i0NbQVoKSDR7GaFkV4I8+pxbDy1qI5i?= =?us-ascii?Q?uYR7/8DcGRlwbQPXiTf4QyQhH7qqGGkSe5VCcOpKcD80ckuvv4UVLNjwAP9B?= =?us-ascii?Q?uT6GCP3g5EiE1F7RnJpyBimtyWYg9NHkgTYq01SQBAbBxZ1kx8f3YeyMXW2E?= =?us-ascii?Q?TX5/3VYhA0lZAtZCaLgOAHkC97tzzZMiGVIRXrQrjxwyVwJhVGmOvF2hCuFj?= =?us-ascii?Q?Lfz1/DmuAv4=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)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ExLiqWDlCNqJYxEcAnLcuF0CIP+qogNTjKhzFyYCCXuIfFcitXHUFKsCq+oJ?= =?us-ascii?Q?wpsWJLPU9tdzhxr1Gv2WTutCSW72WKhuV/DDfLOE/xPyeDJBzzKANZk3Uj5v?= =?us-ascii?Q?/l3zrwxWdSx4Wg6pQNSFY2mzkurqbldFeoa+eRV/AYMoYHv3ZbCYlR8d+9VZ?= =?us-ascii?Q?Rg/RlxAdVZLbj0jhy6rk+31KzSft7lMRdRNwU27/DUP0f12Af7QQQUTQExe9?= =?us-ascii?Q?B8QxMdOI7mYk1XgRQAF8dz/1dTneUqNz95EYt2jSbu3wpM4GM4dp4H4ExWaP?= =?us-ascii?Q?DnzmY7c/Id//zRVxgT79VIGimd3eJctMajhrfg6Jzld7hYA5RSVu70y0Zm4e?= =?us-ascii?Q?BmFG5NCRA8GGqFTjL0dZZYLiOhvGKfHdovZk5EpYm4a6S7nN92SFDJfQEw+D?= =?us-ascii?Q?rrYidi6xiGJGpsejjSeuEMI9smt1kzKLWl9MDulgZqqixx3mO9RAQMJlapku?= =?us-ascii?Q?JtdBMVrQZLMXMOI6sr+VeSaCD8rzc1Wj1cnq9lZDDOZzDGtJaqVMYbwYlNwx?= =?us-ascii?Q?I90Hy89iLOmfuDJjJylYMbpYlq9LSIB/UZqF02TUhphIEamdMEaHs2/jI5Ao?= =?us-ascii?Q?ps0LTX+GAbmJKVyYAjM2mOWPHbESql926h8hLorQIH8mSHEKsYq+QuSGZP68?= =?us-ascii?Q?EyeyrUuz3bvjJfOO2i2j7ROzHKSyY7YIIxoFQi99FjqaoF0/V+KQfewBPdvS?= =?us-ascii?Q?HcqobvK7IV36/sjNLBGp9EjhltbpGcF1KoERJ9bj3jCZ3E5GSRO4N5umeMhv?= =?us-ascii?Q?y7stVj1eS3uLobh+TWB7d3nDQP0uK7+mIa0KKmg9t//nyp6DThPEWNH44NHW?= =?us-ascii?Q?8yUuAE+vsL3BCWLWqb98C2evp90CVO2YrAR/j8ZQHtDENgV+R6UMX7RoQnIj?= =?us-ascii?Q?aTBlbeQkzsBbe0fR893EyS50YDFjNzxQMzaDnWts4q07BnQRDOFTL/yxSd5/?= =?us-ascii?Q?7z7PFc/6zCsMSgYE/ndjH28x/7pvsbLjjcMQhq9YaVfLVfVCWnrLXK8fWjmK?= =?us-ascii?Q?w5FOwlmd/lLLMhTb9F1rO2sDEZYeSQExaGqsd0SvquWW9Yv4qDS5OCGnm9Lg?= =?us-ascii?Q?yPktAyLlTcW2RWSvk7p6nLSE8nUN8O0Gh2Mg0Gtt2eCjuKCRHZ0vF5skJq9m?= =?us-ascii?Q?qA5WYETOJXvyWg212Gpa3MvQ5/a4pb1k231dtEw/ZZ2mbYdFcTuV6WHrezvt?= =?us-ascii?Q?RNgrHrNBlBDHTxTUO/kNaLIdBN3Y5vx0HvK6177PWaUhzQy+J2P4hvLwCDh1?= =?us-ascii?Q?LmZr7TfQ//g0GJB9N+Qr9yrSHuddubGOYxwTeQ7xEhCa1EyI5mnDU6QPqr9A?= =?us-ascii?Q?Ht+Hy7OjgZL6ofGJsO2cezquUBGHApADgKyWBYUmlJza58lOaqde0Kn2Nhl0?= =?us-ascii?Q?LNfiww3tvM8W+39BUyXvliPMYlHfrKyE5B7UgR9uRIN6vwqnX4NrCzMSdAmz?= =?us-ascii?Q?llozRrlzQcx/vuO6Yj3l/dEwkzD6/2qxciJG/EeF0C8Y6Ob/Iz9fNGQ2kewN?= =?us-ascii?Q?Zr7nPRTkstpcejuXfIulTEZQp+ZyvUDly0AN3IJg1XTeLNoWATNkV2JigEQc?= =?us-ascii?Q?EFzDGM5nDQcaWm4yESENqcLZ4NIjYHWP84Favetk?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 03b94713-e759-4890-bca9-08ddde878eb3 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2025 18:46:35.3942 (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: nEU7AqS1bGXg5gGSMzIosDGOYg/8lhFZ8MmHZEgJ70rFGhExKByZh300UhXQWHvY X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9342 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 | 88 ++++++++++++++----- 1 file changed, 64 insertions(+), 24 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 e24df02420ad..a66ecbdfe7c6 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" @@ -35,6 +36,11 @@ unsigned int pmd_order; #define PID_FMT_OFFSET "%d,0x%lx,0x%lx,%d,%d" #define PATH_FMT "%s,0x%lx,0x%lx,%d" =20 +const char *pagemap_proc =3D "/proc/self/pagemap"; +const char *kpageflags_proc =3D "/proc/kpageflags"; +int pagemap_fd; +int kpageflags_fd; + static bool is_backed_by_folio(char *vaddr, int order, int pagemap_fd, int kpageflags_fd) { @@ -366,6 +372,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"); @@ -380,22 +393,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); @@ -453,8 +450,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) @@ -657,6 +652,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]; @@ -670,14 +666,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) { @@ -686,6 +701,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; @@ -737,9 +760,22 @@ int main(int argc, char **argv) =20 nr_pages =3D pmd_pagesize / pagesize; pmd_order =3D sz2ord(pmd_pagesize, pagesize); + + 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(); @@ -764,6 +800,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