From nobody Sun Oct 5 09:08:00 2025 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2080.outbound.protection.outlook.com [40.107.94.80]) (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 33A5378F59; Wed, 6 Aug 2025 02:20:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.80 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754446860; cv=fail; b=FCCqzbusQKhJxUA4Xx3KhYNANpmMPsBA3HnSLX36NiwIdwO2dxAyoRKBmzb6tNsLs8zPVMVjrhJCxVTQF9xHyUxILxinJfnc8jx4SfJXYwNqQsCj8pAdlguTnWRPI0DNEFlTShx9sM3RrFeDrguEn97gcfGMGNSAZRPo5WzxX0s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754446860; c=relaxed/simple; bh=uMdUuIcW29npYEUz0o691QAg3H9QRlZC0OiCc1txvS8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=N13rFLO1aadg65rlMKxwKYYpoz5UPpX3S3ozyDZc4SX5EGKWN2z8qv5RCKlJcbM0ZYzMMY2+meljyszgoArfI6JBrZsu++Y1xg7EAlQiaFpCCVQeBNt3ryYS9ZiDV5CYpULzRQudkxXw1jBK+3yHaMj0omXl5c7sCvOLDYD97wM= 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=Vl8NGN45; arc=fail smtp.client-ip=40.107.94.80 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="Vl8NGN45" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KtvWMlqkO3IcyUzNY5Dyzz3cbOOOKQlGp5LQUw7VBz1xlHMg+Z1J7dOSeB1UX5DXCHW9x2FG804fI+LmTA13yfbY1QY62fsnvpu3y+w4mSHVrNoXXlf7xU19QFg77BkjLWBj5ouJ11L/jpRvB4kei1cqvQW3yqSV4LetL6ZY48AhtO+QV7XbhqiHDGtcHc2omxbDtaOM1SSVk0OYw8B4lAb6fkjPHtngl2KE/JgOD+AXujbrUQf73qVPJrCCtHbXI0vPLf8wtIDNPg1nrMILbPPmQ+7EvvQe+4jlsGqCpHRqdxD7okp2tFRSAamnColvakiJNZQwYshi5SgZPSkcig== 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=XwxGKTJlw93Fk+fMk4JcYsQHDckAlvBx2OE6ha8dvPg=; b=ruAKQeHDZ9uc2PmdMQlLU6gAz3L2XpaWPsCVb8J3HdRAAN2YRmR4lVEJ3kYlDRCyPwJhCyvkwSwiqB54HAPh+B+3/WmL/pEAu+CyFWmKGq31govMoE7ofYiTrPuOJlVXcWd4iVYxdv1n/Rr7m97/Pcv8u54cXxfhzpYAcHXq/DzLUGdUdaFRLwMZTFkVTXkrsvM7YJHIxf/2qE0dIAKSjNuZELO2TmPngdDgry1gt4LeuxCI4QC/u2OiScKyv+ULgX/yEvLbq6odkyVULsHRkIHNxE4vWkb2Bha2Xm4a7693apm8dTcQ90tO4Il6yncMbqBybijWBupDeNnW+Ecrcw== 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=XwxGKTJlw93Fk+fMk4JcYsQHDckAlvBx2OE6ha8dvPg=; b=Vl8NGN45B+178bWRK/ttRTS1TV2eeNYciiTjUpccgioY0IaHby47iGjgBZivrGGpnBa9Vy3Ui9TG5W9TTmm5sdRaIp2ljo8jbvvlcjweMc/BRdOda2eLAFyeO10Z/HE1KquPs1+346GtjsiKek46Ak6rzKdeH8lGDzS+2+G1Kqx/oeWE/BbuGA3FauYXaZh2UI/QBUOuYSlOpUNewO+EmcCLekmgvjPO/6/7H6Y3ev81Et2EWPs1D0aoJLv44G+z7GC0aPOKG43RgqVeXbT4NPrqfRAdeBKSFFTfw5zoZj77jnF8sbBzp7MK8AlkpPSacdFN/D9bLJJwXDB5fWdecw== 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 PH0PR12MB5678.namprd12.prod.outlook.com (2603:10b6:510:14e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.20; Wed, 6 Aug 2025 02:20:55 +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.9009.013; Wed, 6 Aug 2025 02:20:55 +0000 From: Zi Yan To: David Hildenbrand , linux-mm@kvack.org Cc: Andrew Morton , Lorenzo Stoakes , Zi Yan , Baolin Wang , "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 1/4] mm/huge_memory: add new_order and offset to split_huge_pages*() pr_debug. Date: Tue, 5 Aug 2025 22:20:42 -0400 Message-ID: <20250806022045.342824-2-ziy@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250806022045.342824-1-ziy@nvidia.com> References: <20250806022045.342824-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL0PR05CA0026.namprd05.prod.outlook.com (2603:10b6:208:91::36) 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_|PH0PR12MB5678:EE_ X-MS-Office365-Filtering-Correlation-Id: 46f0f364-0269-49a1-c914-08ddd48fdfda X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?2iCOIxamJ73ogeTTj5+Wib+iSch35YQOEuG0/vgldzVOiaO53MaHCZqBBHs6?= =?us-ascii?Q?V9vGbrliFAD7cZOcRkA6Lk2mccB3w+1F4iWWVKzxdSxbne5dlj3DVtj97sqV?= =?us-ascii?Q?9K6VuyRvu+SB1/kF0wETBzhXC90dmQ+OB6nB3F05VQpOF9nKZlwLEp7b9kgV?= =?us-ascii?Q?eAuTO8srKt986ma4ALKZtn0eF6etLcC7P5IEyNx0TEzpbyP0MAuHFvernK0T?= =?us-ascii?Q?BIwXrHNmuUt35rZkkMN7XgvAAFDLU7RocSAbJPI/v2ErclArtnSGp8hKFvCh?= =?us-ascii?Q?Lirpb0AK0yU8LZkUnojbvUmEb25g5MD7Dxd95WKmH5egRtW+0IXQ9ufCx1Wk?= =?us-ascii?Q?0rP+Jjr32lfDVgtOyEfKmv/VtmVwLm1a2mohJf0hNrbjMliWEb+t39e9mtA4?= =?us-ascii?Q?lU/ZKHbqFYtmS1bx12F0IcQfF35bI+RvhyZ60zOuIyj8WezXNruDV6Iliitl?= =?us-ascii?Q?+8OJPhZEUxpnZDOEICQW0JeMh4TMordw/s8OzB4eOs/b9QQsJlHhASk5OMa4?= =?us-ascii?Q?a74ts+MTMrzdv10WIyaPpX0TsOu1+I8lBvYRp6mroidoNdoUxibzHourrbWo?= =?us-ascii?Q?mIz7pmBSNZaZyRRsCUHZXUQhp8Juwk51dsLKpbfhTaZpvjoEVs0yp6g7MQYC?= =?us-ascii?Q?I9n3MYd6ocODGBvs4fIqng1cWxhnoH49lTGnP6w4ZBQLTKdTzwLveMuxvfsE?= =?us-ascii?Q?2ax3mn7z+AHdhOvWv4UNJGLl5kMEFvCWbXBzlLCh81hkozjvexzet7wvbxVC?= =?us-ascii?Q?1AjgWqisTKAeP5QBUny5h5wa47Gz/nWcedbZ7ac9ISHShXyqnpp99Om4c4/t?= =?us-ascii?Q?/tSYeDQF74i70/in63aRdi5IudM1NsUWCk05ufYRDREhevEVEmAFKZGH3KBm?= =?us-ascii?Q?H5pT0cDOoCPej7uZHjjLOtrDncVDPkxSJVzk8mEiO+7tC70qKv+dVNklZQa6?= =?us-ascii?Q?rjiJURXzxS4E8Fo4c/kp0JZ+jOq3YIY/rGlfDSaim/SV6nnBm218Mze+Sn4l?= =?us-ascii?Q?Z4EFpjXVxxzeEUjQdAD4JsDAGlZ7Mdi2BeyDlXTc7Kmnho0CIyXXE+60C3Nf?= =?us-ascii?Q?oJuXVyTi0NZNc//cXp352Xkt0o7chvfqjR0OTt3KN5TjiWl9YNWtzhPHEmp0?= =?us-ascii?Q?4MedXfmLTCVZhYj6QXIpx1f2smPDidb+GH8AgXGqTf8piKw5uEZ4V77/HUiq?= =?us-ascii?Q?Q1nLmEydZ27AQkN06PJNfGM7gXAgXmc1E84PKSUAa3cx1/XFD5w715V1+ToO?= =?us-ascii?Q?CkQ1wzjHy5P6g7RXj+Um0b0fmkiwL2eUoMOmiaUVKv1ycJ/oixThmxkVBf2P?= =?us-ascii?Q?a92F3cJckoqCfvUqodXNBgmsLrRablkYcXS54SvThMnR8aNNclrbsCD1j163?= =?us-ascii?Q?Ly1uxcfscRXLVb0YqBdGjNdzUy7AV7xkK+aFYpOyqh1o8IKp8vcBgeb8pHAD?= =?us-ascii?Q?09/i+UDrsuo=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)(1800799024)(366016)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0/xeH7Ouhf44ynruFJf6aqykOoHyAXvlkms76AvvLVyA1TsyVIbEH2vHzTpf?= =?us-ascii?Q?7n/b/oHb5BJ85fNsualQEHZdcYfYMKv5J2ZxOs1fgOehuNWwomqvs0LiQpgk?= =?us-ascii?Q?Pqbmzzx7IOdUsL/sUWatwzvi2pIx6AFg13i3t+0J+UYZqbW2k3ulKjCwCNgM?= =?us-ascii?Q?6wytmC08NRmwYO60GweSQ0Ahhrhw+yTG3AeqG8Y4un1DnFHm6XglCrQKt4h3?= =?us-ascii?Q?MI4q3b8EDNqMY0OUcD18QoweB6U2Sev43y3eKuscsITDCr5xvIoxq6TcTI5f?= =?us-ascii?Q?DjxUAYOWsedbhhIVlva3/Zj5t8ctziK1Z8V/21a17EdaL1WgNQd3xBFlB5z/?= =?us-ascii?Q?N4hewIadsAu/QxMIZ9/d5JPWon1rj5o4mbWlfiXfV07mcVqTOXflytvhCsAw?= =?us-ascii?Q?310YtcnDwK1oPV6mHT5cIIsWr56X9Za9gJWCU0+6YsFW1fMw+uiICKuzQtrs?= =?us-ascii?Q?B+8rwgQXf6ct8vGJKvIfhsxYRtlk3RNAO9liCj3hEU4cLjyFDaOC0Bp19rkZ?= =?us-ascii?Q?W1hsNk3BQMmljzUdGIg2IJ0U/zFw8zEcooiut4P35tstVyvqlbSJDz9Q45Ch?= =?us-ascii?Q?x8Y7GSUl0TJBKXPfUVNSfvRTuq4rrPwKXTy4ZygkT6m1ZcNmPKTLtlsUcQOo?= =?us-ascii?Q?CpD/YbjvMbZ1q96Noa4XRXRjKFFkgvG7NGHBMVFZ5K1mkUPlNShbSBzCO/41?= =?us-ascii?Q?AN2MGcKlJpATZ6guMsGEV/rfclx7A8qHsbw+9jFWFO4nNnhFzI9jWDfYPD7i?= =?us-ascii?Q?6MRTXdGbb5jAe1qpDYjFaGHF6fLGSt2YxbRgqvStOpUC4OUX2Uc9zg/0RC+d?= =?us-ascii?Q?PNw7Zf5PlEIQ+57JFjvG/MQgUz/7AZhbJmYZZcE8T+OZ/HDMZH+XT4y2nYEn?= =?us-ascii?Q?/G53d8sMWcS3oYseBFRfv6oFa3bMceXE4cg/KNnhRE45Mb/SXEOyRiE1n5Oa?= =?us-ascii?Q?O3/gNikmB/4ddu3a2pZocxQrbzqVtU3+RkxtMn0PLCDwHm1vgbW0mGcz0b0R?= =?us-ascii?Q?rHMhcotLpme7WTnnroTDAaT5EeMQCYqnQgcMvo+Vihf0qHPCxD1SsRH7m7XI?= =?us-ascii?Q?/uEY2YtL9G4Ptr5XFVBDNIbhu2UPy313hHfhYMltnS8/AXmfMXz8jBrnu/lC?= =?us-ascii?Q?vQJL2XoesYEewQbAjR3owAfRKrUZobjf9/PwzGhvyjM7C8L18xoC1/bhVBd5?= =?us-ascii?Q?6CklrPy+uJbB0hUVRnHPh9gf2duo2REeqhj7YcLMrCmNEyAwQIOKTV5+tXrI?= =?us-ascii?Q?B7OhgObrqPhbtDiWFjJ00+qLBGF+g8l21xn08YoKQM+MwUPhakeQ97C3Bz+G?= =?us-ascii?Q?hXxX0MjHlA2xkaG9tJuvZzaqEA3lIHTTqjG+pkFLDMjzHVaIyH4XKETJqcYv?= =?us-ascii?Q?fu2+ODTCVjyw7nVc5eVAEFoYc4r5UBSGKk31bO6NMJgNKNJTgvQMeBttz+Vk?= =?us-ascii?Q?SLEtApF8xNJ+4J4ftL/FC+SmpS+9LUP+AxJNrfI5TKAwbZyxkyVled4ozvtq?= =?us-ascii?Q?CsjzpoJtK4eWH8cXoMGi/NQHFmIxWHpCXf2yjEE1Ibg6CEHSbYdMxLCuA5De?= =?us-ascii?Q?2Q+C5/nvTgYEywEyVd6Xjb9yR0P9VOpqMGZExThN?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 46f0f364-0269-49a1-c914-08ddd48fdfda X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Aug 2025 02:20:55.8651 (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: cmDZRLQDezS1VhlZhQYRzceTPrt0pElgcZQZzja8wxo+pfYKr8eH1SabjsM9SYSu X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB5678 Content-Type: text/plain; charset="utf-8" They are useful information for debugging split huge page tests. Signed-off-by: Zi Yan Acked-by: David Hildenbrand Reviewed-by: Baolin Wang Reviewed-by: Lorenzo Stoakes --- mm/huge_memory.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 2b4ea5a2ce7d..8a11c2d402d4 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -4327,8 +4327,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); /* --=20 2.47.2 From nobody Sun Oct 5 09:08:00 2025 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2080.outbound.protection.outlook.com [40.107.94.80]) (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 C23931A2381; Wed, 6 Aug 2025 02:21:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.80 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754446862; cv=fail; b=JtBvkVkjdgFOAVZuDTmCPhr9jTakJ+uqS3DOnc1nqS/EaXqOEfoKt1BbodnGiRWpzoSfM754jRmVFjx2sxLTEHEqePeDO5im0IxdZOod4Nmg8PJrgYCvgFHR9A47KXf3fJsrK8jPyO4X+RUFpEkxXoPp4R58Aezwiql9Uy6WDCU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754446862; c=relaxed/simple; bh=8j1sQ2CJYFTHJ9e4OPYjwCEt1LpTmxfHf7184YKpNJc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ApbAzZEk4R36BLm7l2JRrFEJGuY/Dgrrk2hfjkaKS+gp/gRhRyWvxFYucVAhuVB9vag9YsIbIXZp5+KDcpiXFGlabndBgY7GC//Jyz61P4GABQH0+Go/gmb+/JFHAUwo6ssrvdeo6o1fxe6lRODJNcQhIr6RRCcCDJ04CAkmSf4= 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=UdH86ThS; arc=fail smtp.client-ip=40.107.94.80 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="UdH86ThS" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hOEsTiYA6Cb04lmJe4moBLpdeLpxITnqfNrlkTIGQaO/6QpdpRjTOAbvhBq5vg7hWHAiv2lpyrmb7Se+v2MsgbRUCZ9eMaSBcX/75X5dRCT4GgbY1L/psXea4NCUHoR8VYxeUvTNm1d9Ytk3B+j77wGRp2M/o9IMXeYTOe0L47IlOLHU+GzGKRZ/4qYxxBRitPxIVgLUUIwdK6fDe0zhZkya40VGdhnkSXFA9C05nDA6oAmeENe/PFilhBPCTBp2oukjSL94L4FafgFxtprCq+G/l4AJ3JqR3YgdU1V4b3KwejDcDbrPkaCggtJI/KR7+EpG3hto0kW4DpY4mw2zCw== 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=b7xz5SSLnypmQfjj/b0pJttY323XqYc3uM3Guax0w+s=; b=rZ8zCXPUZdkIzSJJntq/LkodX7MdNwtmjy3Yl0lOS8c9f1YWqR2W9bNNoWkHJbx+3odfcdRSh/+xgxq1BK+i/GXQsVhUIIJhnQa5d3MNBi41MdeE0+VXiZbjgWOE5Dc82r4Qyld+XS4PmjoDXu1NAKWgdYN9wVdfphoRybqw/VJImm3jhFaB84HJxeaaaHDrhHJ/7gbL5Z1EhllUwKCpVQN3XP5BLVrOweRTL2aRIupWm7KJtbymvtc1UDP0LWmCRPK7nj/4l3C1LaJ4ZjIKM0S17tAqKku8qMxOCx0I5b/jaepeazP7s2JBYXpbk4uPBS04VtoeMpd88DusCPD9mw== 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=b7xz5SSLnypmQfjj/b0pJttY323XqYc3uM3Guax0w+s=; b=UdH86ThS3PvQIfDaQGC+UE5FXzaY8EgIPK42mq0BVIIKi1m+cRLMX/HInLFquBF/qUvlaS5wIxgdSLkdvLw7YBU0Z55ZqzLffRovI13imitWHqTr3wof3kAzu3XUSLKVtrtI6f1LTJubC2hIcFw2Oz/2cXQgXZKTuke0g8b0ZlUx5RbHP7XYBt3pf7OYGeTDKFMvUR78vaVLz9GTjuvigIo5EgzI4/4z/6qoewlz7V/jO+SCiCG4u50MzA3/4co6hBeTdp6GNEWfN/PyQRzuhOjPcnBIyZvrOhJKMWXf8BShNZPY/KLvOE2fraug35cvbcPVP+DZBK1OqUSmksNkjQ== 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 PH0PR12MB5678.namprd12.prod.outlook.com (2603:10b6:510:14e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.20; Wed, 6 Aug 2025 02:20:57 +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.9009.013; Wed, 6 Aug 2025 02:20:57 +0000 From: Zi Yan To: David Hildenbrand , linux-mm@kvack.org Cc: Andrew Morton , Lorenzo Stoakes , Zi Yan , Baolin Wang , "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 2/4] mm/huge_memory: move to next folio after folio_split() succeeds. Date: Tue, 5 Aug 2025 22:20:43 -0400 Message-ID: <20250806022045.342824-3-ziy@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250806022045.342824-1-ziy@nvidia.com> References: <20250806022045.342824-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BLAPR03CA0103.namprd03.prod.outlook.com (2603:10b6:208:32a::18) 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_|PH0PR12MB5678:EE_ X-MS-Office365-Filtering-Correlation-Id: 8e8621c0-f717-44c5-74bd-08ddd48fe0a0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?b+VvHfdUopYW9wOmjjyLBRN9fuKnFNHyANoWC69qhIzCdJ3QSUiPahAOhZM6?= =?us-ascii?Q?wIoHKutW8WaF0QDGJVTW5JbaAG7x/qJ1z+UkukaLIt+QcDOvG8O5EjAac1jV?= =?us-ascii?Q?fg+uZGRFI2D488Xd0cm/y+SBOZ5dHYcmiOMb4Z3K5brJoowtrDoXj/naCzTK?= =?us-ascii?Q?xSFgoobtBgnFLUz+pQvlfdGzA4tEiqMTWcRIx+S+/EPJsQBYrbRa186qcd+w?= =?us-ascii?Q?3S4MYWQUdfn/ZArNgkIzni34A2JMXQat8+QkxVyK04ctJ9GKAOpIfJiM7n8f?= =?us-ascii?Q?coWWQirns3eAQ6J6M7wJaVuUdHziGAPrYzmR46b8TTMN5y8HIDpD5ty2tqhn?= =?us-ascii?Q?RIsvEc43tf9oUCqSxLnixn6QVyMxowDaYOMnQOxGRvLd3chx50dOBkrc6L15?= =?us-ascii?Q?fP3DlcUxIRudIhYOnbxTRyJxEVpkvu0nvT5Tdfkyl6WvDw2XzCOVf1MGlAz8?= =?us-ascii?Q?CvZxEkuJgCGGrtulNyChx0gFKKLJ+Bxya+p0taOV98EvGqWvk7YausjMWEW1?= =?us-ascii?Q?dOgSv+1WZIsLCecv6CVBnlmchUyYpfttVgiJqC3iS2fhommk2RnvqY+hinyl?= =?us-ascii?Q?jxxFx5TImvpFmXQOxKIlpG77LILvLt3ROO0z0Hh1e0eHRQ0lHA5GRAH7DDMr?= =?us-ascii?Q?jRCPA3u0ftvwrktKZTKT3/VlBLBhGN3ncZMqLx5nrF3Zlb1B+PVrh73Lbh6p?= =?us-ascii?Q?2b1oEO+C3yqVX5O/rPi0Dixq0iE3HRp+UW03aDZ63aJwewrf2YaAXUo0ivYa?= =?us-ascii?Q?+6rEEOdjNP2saxHVKVxVDeogCWZDlUDUe6kple63d3vTXkJH/43AjBbD/X7n?= =?us-ascii?Q?z6WOOHAUccyArHMlBj+d9jLJRXD8w7atTSomMP3pBU8LvHvCkKmJoYOhd/Iq?= =?us-ascii?Q?YvyCA0nO5XnsAyhEAsTvTsG4HCYjao4TF5dEVyLc8GePa3l5NuBCX5Tzguzh?= =?us-ascii?Q?STPXl8/hhf+jkv/vPYiqgdLIc5Xtt0lcf33g5Y+kI7bZfgi6db2o0QmmofKc?= =?us-ascii?Q?74kvh/7SoZOPRgfkZVZlqWkRB3+QHezotuaCCi12wwasz7lO4yqJW1iagHou?= =?us-ascii?Q?Lnd0vltEgtUq0OOMjjrdKYoT4foxzpboyst9grPWex9ngO4A7aSQXTddtEHF?= =?us-ascii?Q?PL+DUZ1XYiV8f2bRRqGhPx7dh2u582y7mjfxOnWo2xSK5tI04FBfYMUHJWVS?= =?us-ascii?Q?cwFZUVtkTkw8WeW8oxf83WMxxAUpomDLUL3e8RxbsHm3ELuj2EsJbmjqbtQW?= =?us-ascii?Q?x7jKBpnKSeevQjnSi5WOteJheuTeyDc2bejL557J87h/zmrX5Dbegq0a2Obp?= =?us-ascii?Q?4/4g/hmbRJHfFR6IV5qqMzWYv7Kid1K1de2ARpWLz2ihtDopJnPDF3UuNVzl?= =?us-ascii?Q?+kqspa//oc0JNgd6tSFCe3BUBvMbhPpp+Y2yA4tSw5M2dxNcvt04lMPsRclZ?= =?us-ascii?Q?qvFSVH2FNWk=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)(1800799024)(366016)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?sl5FBOlDjDnVjQucMdT7hEmY988CfWNE+VO3qJfnrYw/SEBw6kupn6ueRflB?= =?us-ascii?Q?1oNy5QOnyQq6bK/haP2Bx2nB+TKMcGa5tFNtrdyNasrQ1sS6rAlQEGKGRG3S?= =?us-ascii?Q?XyjU0nZHPvmdrhDvjV3Wdx++GwVBzsavzKhJJkQB914JHSGEnyurVyQ1idPp?= =?us-ascii?Q?t4ojfTyD5ULwa8EnSuira6j6cCtjozp/F0WjcgT8916qHDADLvlwFVQfKmz6?= =?us-ascii?Q?FZZJrxE4LcY0Ddp8kuoTDitGKmuSWr73o7hKdaLaSLoSxgwg5IXtGs61ysVf?= =?us-ascii?Q?a8efMGa8GpxknxUH4kTRw9qf5TWWCfLksUqEUipJnyS3l0lQGH0byQq/SIrD?= =?us-ascii?Q?A30ck0P7keVdvwMogEKiFq9XIO9tpY3JMedjmij2ylIvaCZ2DySFCDNvQoqt?= =?us-ascii?Q?8/Bm9csvlfLyp632m2X17nRy3m7vTFwiWpCouPASnZ6lQFBOrVHDU1o/XiiZ?= =?us-ascii?Q?OMVag66tujpDYcaQbBwgC6FNWb5W61gA2Vaj3g8TSbauuAscrQ5vLEAbok2q?= =?us-ascii?Q?va71r84aWBaBJW7artif4s5TOVz0mvZKi939l/8Pz+bxwudauiB1E2owIHhw?= =?us-ascii?Q?WtqUUJX2gpxSzoAtYXFDuwbg+LENRtCz7Q6ef4+XeTYPPcBAxecZXDHzSSIk?= =?us-ascii?Q?TmlW+VDVNTjOZrMK+qp50k+da2LuySxAL1zr87NpU3rfGY+mwOQKza4BZ34Y?= =?us-ascii?Q?hh8AxRWwlykKYWioW1bgvPiznFKvsuRrhflKN5Bj3j8GpNSGRv+py+VKf0ZP?= =?us-ascii?Q?5JoJjbpD7cbT6nltJdlu9iXm4reHKMPoWzT0JUNFLNw7Wi8nRqCxJ3rNy/Bw?= =?us-ascii?Q?e98l2i5XKJv5pA4S5yX22vepGVtk8U/6GyQ/3+vtHgbqqovyLsrXgTVijbsh?= =?us-ascii?Q?79EYcANruTRbwNCwGJsWRkPtrTsQsn9rKLsMmkZ0NJfAXerrQ3wWi5ifQ95i?= =?us-ascii?Q?uCHmEAzZO/lXbc5r8LnZVqmExG5IydRlXR38KJg0X1WN4mJXpB/EcNejYDqU?= =?us-ascii?Q?yTR9mA2wzHhioYahIL/jAhhoZkI6X698rZCtvIeANzMCQuho0XZ2SxsDDCur?= =?us-ascii?Q?nDys3uQXtgFsd6+j2yxwpxWEMC7FG6/slsZuvhZo9VsH0jZmdhKOPBQMpyuC?= =?us-ascii?Q?csff3A66J8eY0zi5tBjd+Kiy3CP++T3ZEWQlCnDS4iNOSzaHrNajBsN8askl?= =?us-ascii?Q?F3ei8pHfQvTpmqAMQR9eFaeSLG4I2yZRk/ye7j+QPfCVHEpeeu9Yz7eX8uUF?= =?us-ascii?Q?wAev/uQQQOkE3BxOvjLkQt/jBxUi2npp/OirbaRMczlaoMHwSPfBR7BtsE2P?= =?us-ascii?Q?HSilCFdL5RfDIZ8NwBjO017AdUr1uufsizokV0SYCazH05z8YFGKVycjuyyH?= =?us-ascii?Q?YFrsmGKhD30K3SEeHB4VgG+QY+xp6Q5mJn24fjQxZ5aXPJtkfknZYfpN2h1X?= =?us-ascii?Q?VWnax4W5IYAYmeEbR3r0bl5ZlHehhVccgfOsTFQiOthp5wHuc4VaQWTOhEVn?= =?us-ascii?Q?Auk/Q/XTS3ArZY73kbdug3DA7Qfu/EfF53Gdz/JEnWsXfjC+nV5fK4Qf7T+S?= =?us-ascii?Q?a1KPYEGaURfy3ZRIiI9Vu3zbOBW70ZAf1diIpOh1?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8e8621c0-f717-44c5-74bd-08ddd48fe0a0 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Aug 2025 02:20:57.1585 (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: AkMCPxZzl/gufUr9wG5pq4XURZwvasTRlh/IprXTUDvknYpW6OhQcpHD9WKdcPTz X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB5678 Content-Type: text/plain; charset="utf-8" Current behavior is to move to next PAGE_SIZE and split, but that makes it hard to check after-split folio orders. This is a preparation patch to allow more precise split_huge_page_test check in an upcoming commit. split_folio_to_order() part is not changed, since split_pte_mapped_thp test relies on its current behavior. Signed-off-by: Zi Yan --- mm/huge_memory.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 8a11c2d402d4..b2ce8ac0c5a9 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -4341,6 +4341,7 @@ static int split_huge_pages_pid(int pid, unsigned lon= g vaddr_start, struct folio *folio; struct address_space *mapping; unsigned int target_order =3D new_order; + long nr_pages; =20 if (!vma) break; @@ -4358,6 +4359,8 @@ static int split_huge_pages_pid(int pid, unsigned lon= g vaddr_start, if (!is_transparent_hugepage(folio)) goto next; =20 + nr_pages =3D folio_nr_pages(folio); + if (!folio_test_anon(folio)) { mapping =3D folio->mapping; target_order =3D max(new_order, @@ -4385,15 +4388,16 @@ static int split_huge_pages_pid(int pid, unsigned l= ong vaddr_start, if (!folio_test_anon(folio) && folio->mapping !=3D mapping) goto unlock; =20 - if (in_folio_offset < 0 || - in_folio_offset >=3D folio_nr_pages(folio)) { + if (in_folio_offset < 0 || in_folio_offset >=3D nr_pages) { if (!split_folio_to_order(folio, target_order)) split++; } else { - struct page *split_at =3D folio_page(folio, - in_folio_offset); - if (!folio_split(folio, target_order, split_at, NULL)) + struct page *split_at =3D + folio_page(folio, in_folio_offset); + if (!folio_split(folio, target_order, split_at, NULL)) { split++; + addr +=3D PAGE_SIZE * nr_pages; + } } =20 unlock: @@ -4438,8 +4442,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.47.2 From nobody Sun Oct 5 09:08:00 2025 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2080.outbound.protection.outlook.com [40.107.94.80]) (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 5BE0D1B4153; Wed, 6 Aug 2025 02:21:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.80 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754446863; cv=fail; b=MPD/qqWMwQg1feYoLeaxneuoJvjdHApIUGtAddPJ2iYTWrls/6TYF5czCib2dOKvG0+LFTYYIVOb3xrRUW3Q17PTaPldogVAk8MMFzJsqGQRN6/v1DGDDn4cNJcWQpGt9Qz/UlD/xmbOD4aBuTJgAu5/rmqaBFmTCwIfXnw4J0U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754446863; c=relaxed/simple; bh=LusOZ8FSmYVlzJ3dzPGxlqmy2OcerqYqZwlT3YqfjKM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=pyzYi3ObBUBF63cZm6R5w1oPSjuXFmr4KQ0IKFdK8FQBa7o1B7pnRXhh6no7ru7UIhpsCAbQ7Z0UwUpMV1gJ6WPWQEuPoJfGnnxBW8uwqq1GBn3gi6xUfUQEphuNCqTaIT9aWS7luicH1+rwmB2AFfvuZmOHdebAOBw994t4sRY= 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=WMotqssn; arc=fail smtp.client-ip=40.107.94.80 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="WMotqssn" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jvQUTQRGeG8z0LpMy5ZueV6JQ6uCrFEHulPFLXoSluT/fh6AlVIgIj3QBXnSjhjPl2LFfrQzsLi61uqZkLCH8PCQVxmJ6/LcJ0Wnw0hb9BG8KvTWWLN8rsi2NmSUusTW5q4Ma/7qU/QWsehD5F7w5NpezlRSH6ddNiAZNX1EFXKkPG+2n36AxSDnH3qK4Dmk0NyxAQk4/j4/UoEjVb5NN6hYXlCzVlJBQ6yJp+CVbfj6VfcwkjPv+3meIYuozW0TpTJSvHpiyB36BgKi4kwDWWTm4VhIp2R7svUcGTVtUXtX5lja/fd6qao7bNsWjHPGP7afqe2qosax8HYFtqTuHg== 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=DPTuyfRqAgZZTE07VaVlD3ntF1e+mEGxEgEf6gaHaWI=; b=uusNPq0KAf3O7B0oZiyai2m5tDvbHmnoykmQNW5/MA4ziwtjyafN0r8cqWGyJXqzUZRrMbgVQ5yBxPdnrYCR21h1bsPI2jqRh7izxRWrA5DnXE0SlmJdhsOQptCGW1KbgZYCBFamq/M94ZEbjfwlpWPHRpSUy/glwU3xI2vrcO6z/D/j2oekHhLeNiUXV+6wRRITOxxnVm2G18aec1VcrhCwEcNgG+Eg6tV9DvH9vHDE78+XDBpahVlzicF3H+27NxOijEqc7pHWG29ISnMVILM4nE17YZ/3wLJJLD8Y7G9HjSDMlRJlJTDbG/1lWfx0yiCWTLHDEBzTWBIbvCFfcg== 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=DPTuyfRqAgZZTE07VaVlD3ntF1e+mEGxEgEf6gaHaWI=; b=WMotqssnMwNUsTMIsuCUTcesTTVSYM/0JDJGf2ig7dqRKWgOZgJxoVF5SZbw595K2VFTHWEiVK/jJykTzSkU+/gf0fspkLtv1TmMeA+zopaNQIln5I9jm0KgTDZr9WlpfxgbfAGXyu4AeYrH4aJ8ikaLA5ORt8SGncEK3BxfkxxPHzmAeyp8eFccl2TbM20mFOdddHLldCuJCn3vg8TIwMEChUBsN4DdSsprchIlaP8KS+62l9tXxMXSzCqgNK+Q0QXAihu/I0EmkE7cSh2i93HYx9bkEN/FOk2rUjAhWMySuye6dzu3QRmybZNZNbng2ZiQ/PQNN+4vkBI75RAYpQ== 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 PH0PR12MB5678.namprd12.prod.outlook.com (2603:10b6:510:14e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.20; Wed, 6 Aug 2025 02:20:58 +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.9009.013; Wed, 6 Aug 2025 02:20:58 +0000 From: Zi Yan To: David Hildenbrand , linux-mm@kvack.org Cc: Andrew Morton , Lorenzo Stoakes , Zi Yan , Baolin Wang , "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 3/4] selftests/mm: add check_folio_orders() helper. Date: Tue, 5 Aug 2025 22:20:44 -0400 Message-ID: <20250806022045.342824-4-ziy@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250806022045.342824-1-ziy@nvidia.com> References: <20250806022045.342824-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BLAPR03CA0105.namprd03.prod.outlook.com (2603:10b6:208:32a::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_|PH0PR12MB5678:EE_ X-MS-Office365-Filtering-Correlation-Id: eedff53a-c903-4b6b-d4bf-08ddd48fe154 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?mjMLw3PdDrSbBREeb4IgnPHR7dEOHtUtISbOYhGy203xW7geSuuED7urZFhE?= =?us-ascii?Q?ugXbuLi3HBDPrdOfyc4ym6wWyNGNk4AUqtgA4dhCnUXyfCDDLylYj4JO2T/A?= =?us-ascii?Q?bSCyrnIXND4OFA/o9MGPcSvCkxcdsF7w/3IGM2xmezvVJ5VghyecfsD6Xu80?= =?us-ascii?Q?LhS8jadm/XwtOZdgmUndJLtxBpidWBXnI4drQAKYY7M0qKfAjSoynmS/CEEv?= =?us-ascii?Q?1dTWGQyhXS7rS82/3LvWe2oheomp/X4vhV/6vwuu5hFYx1TbNV/X3WWYkrF7?= =?us-ascii?Q?0J0Bk/nFxB6JX42AloQz7wjEyaFZklRZYpapCEX/TaAL/MTgEznmMPLNYx6q?= =?us-ascii?Q?+Y10ceAX5bnwb/ActN40Ydo9hZmzIbcZVRinCfDXC2grwl5AYWtuC8MPK5QD?= =?us-ascii?Q?Lu8GvMqK5R+ey1O4SDya/tPyMZyaGDz3IEyjBjt3jxU8XSd9Xmc6hGV41Ofz?= =?us-ascii?Q?auRvy8hQPejbzWHaTR+k92dce18U5QBkQD7QQfqwV0tMebQPEjeXM6QRkcQW?= =?us-ascii?Q?cgvdKax3hwVnvl59PIU6o11YBYLw1Dso91pc2c5l3N4wrisF4gWa2PzNb58n?= =?us-ascii?Q?/PHdprl64jb6a6HOZjN/WVmJUHM7MbHnIhtGh7W8wu4+iOLDFqaXXlSGUDU9?= =?us-ascii?Q?wbG0RYwy1n27dO5IBHwBDcBEjbfNjVW49cUvKymxa/a83slKYOYiaf2rwDvc?= =?us-ascii?Q?TzYUBpUkP6Zv66L8S80sM0HiyICBahOm1piLKetHsFs+PI7bCLf1qdQXUHvv?= =?us-ascii?Q?vZLdTB7hxWwFNZz2KC9YJIISKDWBKNRHGCb3InO6UZX4jQ3/qzYN1y9gik1E?= =?us-ascii?Q?YSN9F3WUkZPxiblfn5Ch7MG4beYUzKZj76BMAld9xKJk0gIKhDKS04AMgGC8?= =?us-ascii?Q?ZT4GkIpzUQZ0evepgPkSW8GgjM3HaKLQXub/QkU1pbfXUu0z0XHl6TIfFrLC?= =?us-ascii?Q?Gu2Tp+QFrydcK46MzZm8+UZ8ScoNtaZY6EDtsb3DCibfvi+pOcfTBO4sCHe6?= =?us-ascii?Q?VAMyN+85Q/p0DTKCQ8i/koGvRKnpoDc2e85Z6/EdQqse9qeCo0xnGbHKHeAP?= =?us-ascii?Q?Ms8jgq5gO+a7GPh6uvXyR4zjvj9mixAksXJyMBe+RMHaxxz0N53aR1Sbk3r/?= =?us-ascii?Q?6WK33nUbipuHdRRhdJMXOd3uMRKNSLEI+/TntIi/HGAAqquChdc+LyFdKGJk?= =?us-ascii?Q?g+bW/eOf/DAfkWTSnUhBtQm052zcg9e6IVuDo2RmlwXTBbLbC0y0Sij5S0LU?= =?us-ascii?Q?EmKwwGCAN19/LVMvljcVVQ+1wxaHRLnPSxf3AFoo/TDjOsxi7hZv6MxPgUZi?= =?us-ascii?Q?6CMJ8npImoayoa0l2BZceFMqN4g0UqsN7xunRlFIls3yhBXfv2R1N2IuyyK8?= =?us-ascii?Q?Z3IKraNhS8QcynPC2EVZ+M1d3KpV94i/aylbmqO+3aoQLNbNp3vEyCA018k8?= =?us-ascii?Q?dlr3a57Oeew=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)(1800799024)(366016)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?y1dDcKMuttdb4i7knac5UteecUJXgXUuta9oCamxai2IlNJ/GkQSKt/W9a/a?= =?us-ascii?Q?JT+8g/fpH+wBvNAacaIpZivSzG3KV19yslS0UhKTbx6tbSHArFI67TaM61V4?= =?us-ascii?Q?WYTUSNU165P+ERoOHz7MpHDAA/XezNdSXnFTwn2XfNM67kCfoZkLNyv89hvH?= =?us-ascii?Q?k6wYMGCANVmOMuTWcr+U3eFD+baSWlAYmTXolRlkQxUkKwXjLR6ObD0c80us?= =?us-ascii?Q?qkhCPZPom4hWJ2+9i1yskWgfITocD54FV8JursFitekoM7tSmeETUNBQBJ30?= =?us-ascii?Q?pPGQcy1jWwM23ia9h99XuFO0lrwcUGzN43QQPYZ4dtAHw9F3k+f8XkB7hU1+?= =?us-ascii?Q?2hYwqpR+QfrYji4FVp7WnmpE5iSiN3LDNUaPxWtda21KiAWfB4FJSXHmhna8?= =?us-ascii?Q?U5gssGq6voePMtyjSOH1yYPhrJnC/8SUwYHroHN9m5kXBU7VXkPzcYCu9Jfo?= =?us-ascii?Q?1VpNaJtIaTtJThSD9C6k3x01Q7QvM0QFOKQ1QrIEFjarhQvVYCAuDmhzD8FC?= =?us-ascii?Q?jdQ/fArLzconXxHEhgyKug+MbmMXDrUKmopQltoueqXSkvkgZHzpxYNaDmY9?= =?us-ascii?Q?SttdJkfsqHBfCwG76edr69vpeMBH9viexoVtx8ifzogoWnjVF8If1rxwlsO4?= =?us-ascii?Q?uu2kPmUNxbag48Xdaue1RfGM7utUWIN5iyvsYnGoSTipBsTPON4QC82vFNO0?= =?us-ascii?Q?bJ6qD7BE1cZY1cpn1C3nqJ1MJ7zvdd0qYB0rvtshMH/o8gsSuK8oyTG5idg2?= =?us-ascii?Q?KNEH1BMzITheqYmeNNvkqDJ/YBi6lChRfS9R2bWLkVTeW8faunmzhIcuAlhM?= =?us-ascii?Q?XyjBghxnCZwp8kdHqZ2tnwO6XuiRdJd9PSPPbN820hNHsBkNPKxRGTMFVk6J?= =?us-ascii?Q?NPFUhlDOsH5a3ikGwr9hLaA65HnFuaLdtlATCvYjO7mAzuascgN10ozXmSvq?= =?us-ascii?Q?M4Zq0vXukkbqczQns1rQiwGP1EipNbPUo8+QVXHLQX6bHl8xeQoLvHWSF2h+?= =?us-ascii?Q?0HbBlGVmHIQGIeYf5LrYEXUSPeYBAqv3/vKtunKXVv+xGwD9hszdaoEIMXvH?= =?us-ascii?Q?kAHKSZaigcKSGSfQJMVEa+mAJR0JPVaypM0ID0UZfR8GwzCOPRApPSCjH+wp?= =?us-ascii?Q?9fOIIWxfFk+7roz26HSIIes20iB8JZMnJd4qmejDs/GJggySMUOsNV2eX3iP?= =?us-ascii?Q?Xyd5/FDkjBdUCh50w5YMNiP7Ldl+lhFmZX/vKY73ti0wplICK6hEQGjHT88R?= =?us-ascii?Q?F05EFplIutZgR8SmIhfKtc2VJ1tKVl6ygpU5YjIpduXpw/b7oZxBs4clvyuh?= =?us-ascii?Q?F/1BR5oCI+cQUPk7ph7v/N1eA1lzmnkEvu5Hi57dZoxIf/dSTcUt93ikYmMi?= =?us-ascii?Q?D9CeTfkJXAJYP6/KCp29i5bRIdmIi69UfDSBslEI1uv3isj0vzWdpi7yV9Nz?= =?us-ascii?Q?wgdnxMeqLO53LKII1N0HZuutsoKXD0Ng11aixJDplwbF6WEQllMgqCganCRS?= =?us-ascii?Q?ciXQZl14AwxFzGa1zblhjuzdq6urPxYRG2cMICwvkxSYzVSASKEG4qm4FcHm?= =?us-ascii?Q?6XW/bW379v0simWISOom12g6GHnpNZykgu4panjX?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: eedff53a-c903-4b6b-d4bf-08ddd48fe154 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Aug 2025 02:20:58.3543 (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: 9AdU9m5km2iBGS+7wx4KPck89SaUxGP3UuEuq3yF9YHkqg3Tw+beA99/V0V+yVo6 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB5678 Content-Type: text/plain; charset="utf-8" The helper gathers an 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. Signed-off-by: Zi Yan --- tools/testing/selftests/mm/vm_util.c | 139 +++++++++++++++++++++++++++ tools/testing/selftests/mm/vm_util.h | 2 + 2 files changed, 141 insertions(+) diff --git a/tools/testing/selftests/mm/vm_util.c b/tools/testing/selftests= /mm/vm_util.c index 9dafa7669ef9..373621145b2a 100644 --- a/tools/testing/selftests/mm/vm_util.c +++ b/tools/testing/selftests/mm/vm_util.c @@ -17,6 +17,12 @@ #define STATUS_FILE_PATH "/proc/self/status" #define MAX_LINE_LENGTH 500 =20 +#define PGMAP_PRESENT (1UL << 63) +#define KPF_COMPOUND_HEAD (1UL << 15) +#define KPF_COMPOUND_TAIL (1UL << 16) +#define KPF_THP (1UL << 22) +#define PFN_MASK ((1UL<<55)-1) + unsigned int __page_size; unsigned int __page_shift; =20 @@ -338,6 +344,139 @@ int detect_hugetlb_page_sizes(size_t sizes[], int max) return count; } =20 +static int get_page_flags(uint64_t vpn, int pagemap_file, int kpageflags_f= ile, + uint64_t *flags) +{ + uint64_t pfn; + size_t count; + + count =3D pread(pagemap_file, &pfn, sizeof(pfn), + vpn * sizeof(pfn)); + + if (count !=3D sizeof(pfn)) + return -1; + + /* + * Treat non-present page as a page without any flag, so that + * gather_folio_orders() just record the current folio order. + */ + if (!(pfn & PGMAP_PRESENT)) { + *flags =3D 0; + return 0; + } + + count =3D pread(kpageflags_file, flags, sizeof(*flags), + (pfn & PFN_MASK) * sizeof(*flags)); + + if (count !=3D sizeof(*flags)) + return -1; + + return 0; +} + +static int gather_folio_orders(uint64_t vpn_start, size_t nr_pages, + int pagemap_file, int kpageflags_file, + int orders[], int nr_orders) +{ + uint64_t page_flags =3D 0; + int cur_order =3D -1; + uint64_t vpn; + + if (!pagemap_file || !kpageflags_file) + return -1; + if (nr_orders <=3D 0) + return -1; + + for (vpn =3D vpn_start; vpn < vpn_start + nr_pages; ) { + uint64_t next_folio_vpn; + int status; + + if (get_page_flags(vpn, pagemap_file, kpageflags_file, &page_flags)) + return -1; + + /* all order-0 pages with possible false postive (non folio) */ + if (!(page_flags & (KPF_COMPOUND_HEAD | KPF_COMPOUND_TAIL))) { + orders[0]++; + vpn++; + continue; + } + + /* skip non thp compound pages */ + if (!(page_flags & KPF_THP)) { + vpn++; + continue; + } + + /* vpn points to part of a THP at this point */ + if (page_flags & KPF_COMPOUND_HEAD) + cur_order =3D 1; + else { + /* not a head nor a tail in a THP? */ + if (!(page_flags & KPF_COMPOUND_TAIL)) + return -1; + continue; + } + + next_folio_vpn =3D vpn + (1 << cur_order); + + if (next_folio_vpn >=3D vpn_start + nr_pages) + break; + + while (!(status =3D get_page_flags(next_folio_vpn, pagemap_file, + kpageflags_file, + &page_flags))) { + /* next compound head page or order-0 page */ + if ((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; + vpn =3D next_folio_vpn; + } + break; + } + + /* not a head nor a tail in a THP? */ + if (!(page_flags & KPF_COMPOUND_TAIL)) + return -1; + + cur_order++; + next_folio_vpn =3D vpn + (1 << cur_order); + } + + if (status) + return status; + } + if (cur_order > 0 && cur_order < nr_orders) + orders[cur_order]++; + return 0; +} + +int check_folio_orders(uint64_t vpn_start, size_t nr_pages, int pagemap_fi= le, + int kpageflags_file, int orders[], int nr_orders) +{ + int vpn_orders[nr_orders]; + int status; + int i; + + memset(vpn_orders, 0, sizeof(int) * nr_orders); + status =3D gather_folio_orders(vpn_start, nr_pages, pagemap_file, + kpageflags_file, vpn_orders, nr_orders); + if (status) + return status; + + status =3D 0; + for (i =3D 0; i < nr_orders; i++) + if (vpn_orders[i] !=3D orders[i]) { + ksft_print_msg("order %d: expected: %d got %d\n", i, + orders[i], vpn_orders[i]); + status =3D -1; + } + + return status; +} + /* 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 b55d1809debc..dee9504a6129 100644 --- a/tools/testing/selftests/mm/vm_util.h +++ b/tools/testing/selftests/mm/vm_util.h @@ -85,6 +85,8 @@ 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 check_folio_orders(uint64_t vpn_start, size_t nr_pages, int pagemap_fi= le, + int kpageflags_file, int orders[], int nr_orders); =20 int uffd_register(int uffd, void *addr, uint64_t len, bool miss, bool wp, bool minor); --=20 2.47.2 From nobody Sun Oct 5 09:08:00 2025 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2080.outbound.protection.outlook.com [40.107.94.80]) (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 01FD81C8631; Wed, 6 Aug 2025 02:21:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.80 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754446865; cv=fail; b=PQOACs8iSk/ssRNPhJ2XWA6P73Yapm1gC5hlP9h2NcRS3xaaXMa8YM7EJsSGPkV4eLgD6WRdkD9FO6Yx31Vv1CMQJeScfsnmgVNwNW2aGSNzLXWVHCIPvOGioHv86S5gRsFUXeoqKCmFNvlZOFl8+hbGThGQKvINnRlt5VIPAvI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754446865; c=relaxed/simple; bh=9MR0b1GsI0yj2YmkVe1uiw2aYrkN5hyAgSCyMyoEdVQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=UcBuQR852xDie3Kq7wQ40EVqNlz8cKp9Bj077U77YTvn20ubO+CyiRoHBIZE76sDZEW2ksbn/xL4Gxn+AzVHZKoLsJQK5yHkzUKwN0/LuulcJ/LnSq0z0V6vTRjtcyuJpCBH1tnfyNJfqekFT4DoLZKzAtsdeU0QnU1m8dRMVSc= 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=QKB8n/s2; arc=fail smtp.client-ip=40.107.94.80 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="QKB8n/s2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LIIYkF786udflU6oPFTsS88Xrhawo7BwHVsMHquJ5YtY6pg0zVfAFVOJ7N7q+LWAIAIw/iKnYZ+jNmJFRrV/QO44QqPGU49TnW2P3yD21Ha9W+lh3jgdkSIQdJ82Obm7BIhpli7PVmvXc+OVZm+LoXvsgbmQgnx1uPJUAecEg3Jb2H7KV+jcnfl4v6DbpffmEBCw05OMcI3NmUsn/yMsWdM2B+IfnM5zkQ6Xw8RDdQsy7IHCt8LnA9AIdT2s66KTArFFd2ulSLBPlQJ2+kFEesoN9z5anbxXYkqNPV7cse5g3gNG1sV6CkB/dcFqhfLcPhgey2OwoW76ppcHkmv4ng== 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=kWmhnZ+9epgiDWsBjwLNkFEzIqTfQeZavRdDx5Nt9Y8=; b=AXVF3Z925c7mOmTh887kMfElAIhwdFPoTylm58VzOuiGmFLYkJJemBzEsW6eaUqhkWWiZtYjjFp2/pdGhUlBtBf9aeLFao++95pHRHY3/3LI8Q4pbIIIkgAj0hm4e9RUS319dHS9yAvu6bR2fYAsCjF74XvyWdbtrFawYZ4jJxafXFAmT8zqrBxaZ5HK5Zih8MOjhYOI2VzQtQUaGbCF2gq1BPhvjDnzUCjpQcyrtyeOHXByQAe+sMwVI4Yg3ciMW8De/nPqbLle1SCXGfCPS7DoCUPlW0udHj7ObktQ6LB9c5wHBHRN545Z1n6HZQfIkm+rVCWbPbtApXKgonSV6w== 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=kWmhnZ+9epgiDWsBjwLNkFEzIqTfQeZavRdDx5Nt9Y8=; b=QKB8n/s27SlWIdoy1iaaapknaFm8MrP5EmFhGejqS+Sjyi1klUsG5HnjxyZNP5bT4Fli3HWC+Cb5uW/TfPUXU2qY8TSoyUYhADD/2sF+rdDi1nXaBBlJtHQZdGncXecryj6PnPMb+B5ybO0LbRMoC+4Ox9vXo3AUBqWwEJ8UieCFVCmMB0q+EwnnSFq+SlG6bHVrJjCzTRvHoqcldtDWtm0+Rb+8VrfU6JAXdp9O21xV8Jp1Ob1CZe53DVPk3JW6unoCofqPyXVoqfIH2k2WToxopHiGQznWwyeHQ/lXgl6FIpPsnCUFM191M0wG4eRe66muNJezOif6dm5z7T4PPA== 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 PH0PR12MB5678.namprd12.prod.outlook.com (2603:10b6:510:14e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.20; Wed, 6 Aug 2025 02:21:00 +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.9009.013; Wed, 6 Aug 2025 02:21:00 +0000 From: Zi Yan To: David Hildenbrand , linux-mm@kvack.org Cc: Andrew Morton , Lorenzo Stoakes , Zi Yan , Baolin Wang , "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 4/4] selftests/mm: check after-split folio orders in split_huge_page_test. Date: Tue, 5 Aug 2025 22:20:45 -0400 Message-ID: <20250806022045.342824-5-ziy@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250806022045.342824-1-ziy@nvidia.com> References: <20250806022045.342824-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BLAPR03CA0102.namprd03.prod.outlook.com (2603:10b6:208:32a::17) 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_|PH0PR12MB5678:EE_ X-MS-Office365-Filtering-Correlation-Id: af2d9972-5b12-4eab-fd4d-08ddd48fe25e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?hzECw4q7dBBS7oY1n7LgHomoBpbnFrBMJ5FRqC3LhR6scrbMj4r3yEGP+z4q?= =?us-ascii?Q?fnXb685Rd60B6vWLS/f6hxbwazoFg/2GWfTt2Tio2VpnMk59VqBL1H98X3eI?= =?us-ascii?Q?YxqVpBTxV4lwxr7J3xAD8QUDHr9F6W4dZtkfn53nvL38ZpxDHeRdpSM5cP3Y?= =?us-ascii?Q?o2T5kmld+aQxGyp19j+wzKXUcPlOXYZ9X9/kkQ/2ehyCBZNkB33UVv4UhT+H?= =?us-ascii?Q?g3iJ7dGq7U7VJX3lN30tDNMO3jZptW1ZSSdE08CQwQ7YZOz0GieQkcn/NF+y?= =?us-ascii?Q?SFlomwRIuLmzpp0UdZpvplkZniTJEwNHC+ZDO7UVG+Rw5SmVXIHFdVSa/cRG?= =?us-ascii?Q?O7IFYYt8UWsntM3+NH/RZbSFFPFe90AHDFTlsfUmNlBofBAQz+03Divy4bC1?= =?us-ascii?Q?AiCL9EKjb56W8KKu4j840UFYz+H0YVGuTIRwKmmVN1+jzdzy0Uwb3k1MvpFE?= =?us-ascii?Q?AiBj9aERns/uHiRTak1yTpGCb6dQroRVqvDFmTp3tafugmbJPgQ1U10skDeK?= =?us-ascii?Q?M9pam1s+tEsu8t9dhzAj78y7H4TZkhIAAJZBdd/n16jZm4GIsYixGhD9VEk/?= =?us-ascii?Q?tFzpxPZ6bHO4dxNT+2XLplHhhO1deuK9rmi+1kKFObvK9h2XAi2QlcMjx+0m?= =?us-ascii?Q?0Ti6N5DkUrayPBloPIbgUO80NMQyuoif1HqZWpmEFtpbrzVxl8CRZX9T7zwa?= =?us-ascii?Q?redid8b8YwmjR9/Ywwj4I8obH1qku9IOR2Ee+MMEh5XqVc0iGgqlzW9P9Sxo?= =?us-ascii?Q?Y7MFtCW19DYUuiji/J2o8TR82XJIT4mPSiFrXZF5545op39JnyQhiC2bOBtm?= =?us-ascii?Q?bJljZrMkDtcH9iCfH+fuKxKLtu9kPr4Km0wuvVAQObcTy7c/B2NtWNmEPfKs?= =?us-ascii?Q?TPvT5oqDF9eSfnaVbN4hQ8RkOFgQVd5RAddQLIqUvidQjEAeRQBAUm3J9aTZ?= =?us-ascii?Q?0CkEQ+Qje6xAmO5h2rEaibl4dRrxu0HJh1HeOIY0ipMJYWvOKtxxBAuFRsFX?= =?us-ascii?Q?DKtgAvzBhNOeLs96FzVnjUBFV7Mqjjrb/9onX9q7g4jzlKejIF9zOWbPDVrF?= =?us-ascii?Q?NOTKsFACVIeWBOx8Hva0TvdcH14oxGSA/0c4nZPGZmnEyPV0z9qt2efGU5lQ?= =?us-ascii?Q?RXubJAIO8RLO9PI5+4yfaFOQpoiJr/plMCLV21TR5tJHrVk3S+3+Wftk/R+W?= =?us-ascii?Q?ETI2dVedCxizbwjhyJYnW4l6eqD818LlvNA80Uen4Ct/CGMxxjiBbR29IG9H?= =?us-ascii?Q?zI31ukn+pLvw1NxosFItO/Cy/8p9BioXyPkT4Ehc0kB1aVGtB9zidVVDPDOj?= =?us-ascii?Q?+WXGbzARmbO+BtryHtOkgvjH5DyBunqKu6Ckbk6yGLQrmp9W60oWbAiXBIUh?= =?us-ascii?Q?KMSVB4u9qn8D/CDHVeNkzOSIMnLXNAZbaK/Qcrum6EXfUpqlNGuiDJSQt78S?= =?us-ascii?Q?mt5HPe05xmw=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)(1800799024)(366016)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?EaPBK17W+OaJEu7QOzox/KuOgZ5OEASf9hy77yacXBlZDpmdvgRGRqklj23j?= =?us-ascii?Q?zSmVTTbDWAs847ZfaCern7d7BLhW6hwg6vIusHA6ficvH2G7cQI1qPFxUPr9?= =?us-ascii?Q?LRyCUa3pf7iGkDDAkJh4/LsR7KUKxQcus/GhlABgv0UuZubFbY99kGe+PqeU?= =?us-ascii?Q?4tRhB0Ob0JfritHT20OMHybgIykomcYRZ/3BTwWVT4kQhy/YQU7aRaFB7vU/?= =?us-ascii?Q?Q+6RM5DWE4Mvp+gKRM5QGiu69LJeMId7GL8+828UrwN7UoCXhsAfvIXaFGUC?= =?us-ascii?Q?BOsquKKnu15h0c8DuB2BBxSZwIptZuwr3D6QBtcAxi34Q46kTRYrjclyiMjr?= =?us-ascii?Q?UKY6zXVSQm9s/Ca4E2LAvFzbDm3RvCAX20Gi+/2LY9r4CE/rwAKskti1mlu5?= =?us-ascii?Q?J41y7HLq0kI3n0R0mGtpMM4Kfl4ltlqtrGXXz/E+EtxAtF+w8h6jHTLjMxbD?= =?us-ascii?Q?0Qv0RWDVxCEH4WAe5F5vGBmTAOfv8vy24NyZcAhNy4tK6nLTMpIO8Z1YhH+V?= =?us-ascii?Q?nt26Y2c/e1lZJZMtA8u0AADZCoHore12Bd76pUxF6P28KZzUPjrQYHS1otrL?= =?us-ascii?Q?mwKdbbG1VMvXmEzgPdngS4owmHBLXZ9aiUC52V0ncu/vfe4wve3YEa1xd/q3?= =?us-ascii?Q?bDcUbDwkCrRCPmaj0Vv2E2XOwAqWzfawfekOD2yXc6QLGQXVUdmcBfzzEMXa?= =?us-ascii?Q?kMgVc3nt/NYsnWpv2snITWCOvH60Ab1+V8KjxfSt3XIUtZ/GOAdcpMScpL9m?= =?us-ascii?Q?ENSlLUKq9eVgJyUtYWqw6b72xip9yBLjFmDTKQE4JOE0XZXAcbq6W9JInKY2?= =?us-ascii?Q?NHzyLUobPcif9/tT5DaXQSVi3fPtnQwskl64sRNo2dhiAPAFfMqwDZ/Ao69X?= =?us-ascii?Q?Ty5JvSSBD56RbeE5uaf3Jk7Y3FFHdsVTdluC1WSrVDHJr/hciCiPqFcS+Lbg?= =?us-ascii?Q?qnUgL10xBoh21QAFG4sH6BqPQEZYkSgzNDuStsuR4dNzD7LaJtFyLR3Ze7tD?= =?us-ascii?Q?HdFwfMTXhL7qKUixTXwXI80e4Lp1+2cYcjcejQy6LxCXjoi9Qxnib8dLQB6b?= =?us-ascii?Q?ok40MyokA7AChzwD6eMNSgeiZFZdB2+TkOgsQdJFYfE6fhwEg0AW8NIY6dFt?= =?us-ascii?Q?EH1RHsSQR53Dy4KVSblBd1vi/r7YJefeEmIEBo2iRP3UaOr4hJhc2JFjUqxh?= =?us-ascii?Q?1vURdALH81rXUlsevwdFZoyGPaTpa+GwJ2xMrDOFijHOthJsXk3+RWOAXsFY?= =?us-ascii?Q?KR5r3YYL3mKJQwe1ChLSFfdmDQnTRryQbhySbP0ZL3e9SksXG/ZLWheEF2Hc?= =?us-ascii?Q?Bp/cxzFdgllhwf9ov2qVodez9RTUiG3MiGqkwwD73hJ4z6MUy+s4JSvTKN74?= =?us-ascii?Q?kWbQIDqgvBbQqZ6eNDKzNwxOXOTbqyq8M+EaZUTlt3batI0FQOJGSBYIVSqs?= =?us-ascii?Q?fEFCwzmHsVsw2E1O8OUSfDBTClaIfK4Bg1uS/F4tQHZYg1VAUvZE88Q8w5eF?= =?us-ascii?Q?BwhaG4/quZ2u33qkHdhCOBNgAo5Cj088Rhc7PmguXdK4uKhaCv/855rIqU/R?= =?us-ascii?Q?j8ihcgeV9DkiHKxbfMxF0+lxKy7qHLwWXjHf4Qp7?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: af2d9972-5b12-4eab-fd4d-08ddd48fe25e X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Aug 2025 02:21:00.0853 (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: yPK9qZLaMr6XB+ef+Rg5E88qGzllFcNl825z9CEzbwIxv0HhWjgsOeN/RNtLJ8Te X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB5678 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 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 | 67 +++++++++++++------ 1 file changed, 46 insertions(+), 21 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 3c761228e451..cd34000279fe 100644 --- a/tools/testing/selftests/mm/split_huge_page_test.c +++ b/tools/testing/selftests/mm/split_huge_page_test.c @@ -25,6 +25,10 @@ uint64_t pagesize; unsigned int pageshift; uint64_t pmd_pagesize; +unsigned int pmd_order; +unsigned int max_order; + +#define NR_ORDERS (max_order + 1) =20 #define SPLIT_DEBUGFS "/sys/kernel/debug/split_huge_pages" #define SMAP_PATH "/proc/self/smaps" @@ -38,6 +42,11 @@ uint64_t pmd_pagesize; #define KPF_THP (1UL<<22) #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; + int is_backed_by_thp(char *vaddr, int pagemap_file, int kpageflags_file) { uint64_t paddr; @@ -153,6 +162,7 @@ void split_pmd_thp_to_order(int order) char *one_page; size_t len =3D 4 * pmd_pagesize; size_t i; + int orders[NR_ORDERS]; =20 one_page =3D memalign(pmd_pagesize, len); if (!one_page) @@ -174,6 +184,12 @@ 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(orders, 0, sizeof(int) * NR_ORDERS); + orders[order] =3D 4 << (pmd_order - order); + if (check_folio_orders((uint64_t)one_page >> pageshift, + len >> pageshift, pagemap_fd, kpageflags_fd, + orders, NR_ORDERS)) + 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"); @@ -188,22 +204,6 @@ 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); @@ -261,8 +261,6 @@ 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 void split_file_backed_thp(int order) @@ -471,6 +469,7 @@ void split_thp_in_pagecache_to_order_at(size_t fd_size,= const char *fs_loc, size_t i; char testfile[INPUT_MAX]; int err =3D 0; + int orders[NR_ORDERS]; =20 err =3D snprintf(testfile, INPUT_MAX, "%s/test", fs_loc); =20 @@ -482,12 +481,21 @@ void split_thp_in_pagecache_to_order_at(size_t fd_siz= e, const char *fs_loc, return; err =3D 0; =20 - if (offset =3D=3D -1) + memset(orders, 0, sizeof(int) * NR_ORDERS); + if (offset =3D=3D -1) { write_debugfs(PID_FMT, getpid(), (uint64_t)addr, (uint64_t)addr + fd_size, order); - else + orders[order] =3D fd_size / (pagesize << order); + } else { + int times =3D fd_size / pmd_pagesize; + write_debugfs(PID_FMT_OFFSET, getpid(), (uint64_t)addr, (uint64_t)addr + fd_size, order, offset); + for (i =3D order + 1; i < pmd_order; i++) + orders[i] =3D times; + + orders[order] =3D 2 * times; + } =20 for (i =3D 0; i < fd_size; i++) if (*(addr + i) !=3D (char)i) { @@ -496,6 +504,12 @@ void split_thp_in_pagecache_to_order_at(size_t fd_size= , const char *fs_loc, goto out; } =20 + if (check_folio_orders((uint64_t)addr >> pageshift, + fd_size >> pageshift, pagemap_fd, kpageflags_fd, + orders, NR_ORDERS)) + ksft_exit_fail_msg("Unexpected THP split\n"); + + if (!check_huge_file(addr, 0, pmd_pagesize)) { ksft_print_msg("Still FilePmdMapped not split\n"); err =3D EXIT_FAILURE; @@ -526,7 +540,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 @@ -543,6 +556,7 @@ int main(int argc, char **argv) pagesize =3D getpagesize(); pageshift =3D ffs(pagesize) - 1; pmd_pagesize =3D read_pmd_pagesize(); + pmd_order =3D GET_ORDER(pmd_pagesize / pagesize); if (!pmd_pagesize) ksft_exit_fail_msg("Reading PMD pagesize failed\n"); =20 @@ -551,6 +565,14 @@ int main(int argc, char **argv) tests =3D 2 + (max_order - 1) + (2 * max_order) + (max_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(); @@ -575,6 +597,9 @@ 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); + ksft_finished(); =20 return 0; --=20 2.47.2