From patchwork Tue Feb 11 15:50:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zi Yan X-Patchwork-Id: 13969554 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9F483C021A5 for ; Tue, 11 Feb 2025 15:51:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D876C280002; Tue, 11 Feb 2025 10:51:14 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D0F89280001; Tue, 11 Feb 2025 10:51:14 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B62C9280002; Tue, 11 Feb 2025 10:51:14 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 93777280001 for ; Tue, 11 Feb 2025 10:51:14 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 4CFF0C045D for ; Tue, 11 Feb 2025 15:51:14 +0000 (UTC) X-FDA: 83108102868.16.749DB59 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2047.outbound.protection.outlook.com [40.107.102.47]) by imf25.hostedemail.com (Postfix) with ESMTP id 58A1CA000C for ; Tue, 11 Feb 2025 15:51:11 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=TOGG22zX; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf25.hostedemail.com: domain of ziy@nvidia.com designates 40.107.102.47 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739289071; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ClSYVUWbTTC8Cb82lVfmu47Qu9TQA30MyMEQBjM2sHI=; b=NNxGpLvv9sdAEQdYV3bwAXD16d5z0jR+g4VylPjCEbDk3p52NaCrFMcEEOVbeR2tdqBYOr dJXaxXd60BUHbI3rZLH2k8IU23lTbeTQrfhC3HIhVfKuTpGJavRJ9PVb2W5JjIbdjbSUoU d+5r9M2be4gOpGxDIVEKKgH1gwYp3uk= ARC-Authentication-Results: i=2; imf25.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=TOGG22zX; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf25.hostedemail.com: domain of ziy@nvidia.com designates 40.107.102.47 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1739289071; a=rsa-sha256; cv=pass; b=0eUPbQa694cniFhq1vAJwzbTRX8qbJY1lZuV3EyTJbFvkWlHDrIskAVyf3gC8H6K86+seF Sw8aTF0n0TrpvOQP9jaZ1ET6+2X27gmzZVCjKqy5ZHB/l6ef2+dBykI58AB4uTx00CfDy2 /1vn5w9bHakK08nyt6/iC2d+ddVn+Qo= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kZB5Xfy+GLQw2k48omtzo/P7r/UDK4hEc6z3x27u7ZFzhGfsR0tuaEaASv/QpRDtv9mzXgtd+sM/gChpPvEs/4Ntfxyeqs8yKYv71Ci+DAEfQ3lBDyG3sHOmKuu0svWT2cmmFQzKUA5ms7Rivubo9Ogm+YsK8uXfX//882uf0Z7oAoIfPYg49o87Xv/4cpOcCf1i0KOJVHxnjsIyyF0TrB19MN9T2ZZUWOE1gCVDajV8h6X4I96prSYgpxIrDSfXWPuOmPp5/Wv1AzCmjyC+LnWOhz/vmAIbkwoGYGvlblcG/n4CN+6zUb1k8pgE1Ssv8apEnXsdJLoMa5nIwdIURg== 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=ClSYVUWbTTC8Cb82lVfmu47Qu9TQA30MyMEQBjM2sHI=; b=GPqkLiBu5OlqW0EP579c4+K+uH3J922Xs9CVdmhMRHAS0Sl122nv9l4NFJLPgScnn6JmNOQ1Cz6IWInatUZyJ2vymaE9AoI0btSZZyvQuxu8HP8OwJ3l4z9o0QfFyI7wB8/siLd84WgfbKM3vBFKRB6hpzuhN4T8uP9i8UlG1BUChAj5M5wL+7VgOj4M6Zt+t9JPgIkL6a4Sb0AOqMF5AIi+Je52+jIP4WATPAjZRCwZO+uaR7x+yA+Yq8vwB4RnVP8gKPlPmeY57qvp/9ibB9kPBrThXxuUUfiZ5dI5aYnB00hsQN07zK1HiFM8W8CH+QMGH/EdIocvr8BDTZl/Vg== 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=ClSYVUWbTTC8Cb82lVfmu47Qu9TQA30MyMEQBjM2sHI=; b=TOGG22zXB5JvGaTIHIXTDbucvpu2Olu/uFHb003ao0sdxLL49KreI8tz0/FgmcVz8AnvMbYVVPND3BmwRFrEMD2OZIj/P8Jv5ZKBUjT+sca5R4FX6ofDsRKPDc3C8MJLqk1ZwOeruQOnsDe3UrVBXLiAk2Xn6nKVycSJCi/gdQpVIU1sgDr2j2UE9Vz6NHVsCFQJtTN1cykWDtzARLSCT//sWnf45ywi7VcNIIyLPDgP+x9pGuASSkESyyi9UevKK0lT9+adcJtwZ1LXdNcYevdlO24/NOs4SSPxD4YRPbuGw8dZI5POKchPfFNqykYKiAbwc0G8kkDfI7rodUGbTg== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by SA3PR12MB8764.namprd12.prod.outlook.com (2603:10b6:806:317::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.19; Tue, 11 Feb 2025 15:50:51 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%5]) with mapi id 15.20.8422.015; Tue, 11 Feb 2025 15:50:51 +0000 From: Zi Yan To: linux-mm@kvack.org, Andrew Morton , "Kirill A . Shutemov" , "Matthew Wilcox (Oracle)" Cc: Ryan Roberts , Hugh Dickins , David Hildenbrand , Yang Shi , Miaohe Lin , Kefeng Wang , Yu Zhao , John Hubbard , Baolin Wang , linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Zi Yan Subject: [PATCH v7 6/8] mm/huge_memory: add folio_split() to debugfs testing interface. Date: Tue, 11 Feb 2025 10:50:31 -0500 Message-ID: <20250211155034.268962-7-ziy@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250211155034.268962-1-ziy@nvidia.com> References: <20250211155034.268962-1-ziy@nvidia.com> X-ClientProxiedBy: MN0P220CA0001.NAMP220.PROD.OUTLOOK.COM (2603:10b6:208:52e::29) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|SA3PR12MB8764:EE_ X-MS-Office365-Filtering-Correlation-Id: 3725b3b2-7cd0-4a7e-0fa1-08dd4ab3dc1c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016; X-Microsoft-Antispam-Message-Info: GRcVFCbGGH6G0aq3jdHrIS+1p174g4xM4DBw0HsqUy3dGKLD+tXnnO6PXIKpLmw3tsj/Sj27wL4fWfFiBGX5E9hcDCuFATApQ1q45+Ld6IUlPF92Mqwy3ZX+xVPwVR4YDVKOz8NKk3mUE5bQsdps3LgtpQDtybqKHD0zl0eg4CXNGM7XxiYd50nA/JLqUmZwOgVHwIltwiLDdf9itBh6VVjyrnVg4rV0JgaWt/eyE1b+wpsJsRhnmXZehK1if+cX4KT1FGeNNOib/EZTpWi+I/p9g6HOKwcPXlySTeVVl7DkFnNqR0K+VyEHoFrMii2DUVqHkKnUu7My39r1QmDw7NnFNiIW54kmnG743yyVcaYsWvj64f9H1Oo7c90HcYKVipIN95AW7wcZRsSGa4qdbpfsOwhUo2Fm8h8uHVyrHXjzQP1ICZGTN+SCEgyMHxhLvaBVsKfQS8dZBuC4Hnfgu2HbrIEtM3Wbb0Uz9H8IQp4CRgO3qtRrOFPTzV5z6wzLbeOtrlL8Gn8/zDr/yupnnXydPgnnew21wVVfxRISqk66c4zPB5iGYd/pUFt5JWTHgXd8vs4RWWhGtSiPrQZpbvPLgB7aDpXDYnQXKGA1ewSH9RVohBYtZuxchMDOFo+UhXW9IMT8keIrgoTj4UxTRDtidj5AjxxxSTQ5fLvkAlzChPMo/abuDQeXvv2eM5xFCTu3pMTwyyxrFglPLYwq+KzB3f5Q2eGXyb9/2B3h8iUzdWa/hx5CZhsmJJ7DCSE5O5VTklLZk1li9Fu3b5w7NbLU3fCCdWCGc7mn2hIPmpUR668amrIpOd6AWu0xVGPL1sFu7uWaHBIOKoW/xr5HuosYUM2HH6R++yCIZoJpz3m7NK6TVmw9j/R5zYoB3zVeiKD5lAfsltx9SY3RX5ploklgw60rb3S/PFLA3A4sVaasL2GPxq1sOyXJSFaRa1+k1qeuFztwByjPuF6Y0UyiuurpFJdYLWJVVq4NFrpf+CAo0KxV/nmvd5UwZZ9r9yxQznsDDAuBiAiwv+ws2OvWnXEXT2famyjU68SYKFjbGotL2W2Lp/Z0qe0F/pBI8S5ovfdF7rvOYUC8lllBnVRgEQNkaz1NL65419aNEByMPbvFZQW4JdpwrkugFHauLsxCGCfJ+JQ6meXNF3ZalYKTjkJn4ZBmpdOymbN9jIqVCWERdiiOHCSlvzHj4aOKctkFlHyyqjLLYRIxbAugkJwMndrhohbwy/j5zgCRJPn8+18Pt9I2Ud0N/X1YGZ0ykdqDARb5ly49XadUUSUc0xJaDRyi1PO7k6AKkFVyVyWdFsDgY/ejbUCdh88rcQWddLPwLcEGQVNuLh6p4w5joFktoxE1iUIDDNwqOeZjFsi7sRqJYVvsi5s2TkcGtH5pqUDx 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)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0qXcs6rUwK6CN6bLu3rKlnbgB/8j1BF5shXiGwUpbsdY4ZNY+MxP8dc2iqjK7HzFop5mXee/lSaSIEYumR+QrtRkdlnaNWdTYgmIGDfO57swWEpYEZAdsL8tUw0LMQVHjow4qDyFbviilexVxTp2EjB0l8X/K4spuAtoUCqHA9Uv/5Uz+yzA9EOJNttD+mWkJpoTgqfeGAvkrnuPx5UA98NAzN6kLH9/Huhbtm4od59I7hSpRqTYEs6Ga5i5bQYhY/tgXNjrM9zGdangbMunl5hNsQILUZMBz+3GnsAYt9ROHwDOgbGQQip+8WEbGs2b94dLCuSGmVeL17Lz9INZbdFnCNjPNtM20ONxcrMWyccvKpElFgpzDN1IQ71UbScCrZ3sE0UxFvFVTOredrzdnxv0CyLKZks+9+MVDRBnsYrCbDItxobWXAaYMEGRbfvjvc1/66n0TtHAaONiUY+hQlOUA9KuP+L36KDDDlX6+Q+sSlV+Ly4NOIOU3TaWAV+LQvzq9MZcicHNtWoltvGWK5IMXjyXmgmsiGpPFuv4EC/B15jP8kQQq7zz7Z32qFf+jMNZq3oyE3fe8EHxPekl73WDB632MFX5rdOXk/OJ4mfk7trOZuOH6bIceZVzaLzY4PE6/euRszG9bGeiwBn52yecT03HqFbDFhxqGJJLv8ENp7tW3MRC9WYLNj+uoX9D+zFlAX4bgx+hLsHIOwizHcX3uXIK8yE/nm6sAezFXCFfkVULc8WreBbNhhCQ3L/EcHpFvEIGppAlJcufGi8aBEz8c3DDlNQmU5TGoswtDfBgTC4JFa/mm2tuUWNb/rRkkhD+pHGvaZmhd+Y7M3OJxwOgi0laVaDpMSnLQBBFHx8Ke/SWgWm0GPNOjUHnpuiNjIKdFegLimInBFXc9eTZMb1pXckBjW3Ndlfr/7Iz6ItKfJOeHVKQuTzSrrYC6vMb41yBHDJv59igZAprObfV3mDqNH+IFADM0dTNX4i8Ib4aDZx8DXU75YhxXS0olX2KJFcPH3DhW/Ug9095T5HPRmu2CYBUqWiBBDXKugFe1vq24sjX91rWvC6zknv5x7eGAvoST1AZnCUSH6qjcMjlk+UtrUkwAQAZCR9lrXish9dtWtxSs/hiMcY7xCykZKiOrbbCCdSUtR0h3hxf8n7Bu7LqiV8AYtJTOp3BRC4OJwoskm5RoDvsYcV31uPTZdoEYCkGRVp8zDh182O1RcSHSddP7v5bb4S5EHTPcC0FLWy/iIjuugxZ9vFV84/d/+rZ1CeUpY/ft/A/80ywApe2szJWjHSB/TyPM7dP1tved99DdoH0XHi5DPniCt7PvLDQAvOb4cOYo5v7VBUInIIUxPEbCYyfiHG/0KbtclIaDIhF3NtcRdqYDE/5WY223VjwuFh3g94YZ5SFNJDO0SW6mb2PMwfzV20+C5gx5JEVKIN/tAtyk0u4qiTvgHpmhoGicwTuBDEBH2UK4BFztp2N5jLSvElnidxGH4xC03qyS0ETsXK4C+9mPK30N09ezFlW5KdG7jJRyzLhJ7FC1UZhSPco6XqI2FxfqHRoedl3TaYCWjalKBG+hTIBnRyg3VuA X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3725b3b2-7cd0-4a7e-0fa1-08dd4ab3dc1c X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Feb 2025 15:50:51.0599 (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: c5q+6AvML3XjQjHy4HY9c4zZWYsbXtB1noVRO3gIL87yYMQxbj5tIqhJ9lK3feu6 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8764 X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 58A1CA000C X-Stat-Signature: jc91ustgf59simpxie8iaodqn8kk4qpo X-Rspam-User: X-HE-Tag: 1739289071-911793 X-HE-Meta: U2FsdGVkX1+MCJfqQDRjtbXLIO+nobD5CX0apRFHKTtRpSAU/twrccC0Nfik/p8miz1IZY+9OJ49xVW78dOi+5NZdLWNmu/9yKCV8GgXYltiCrFu8cMge4dmdxjmcIWwusayOTWzFKslHkwpdA3PWoE3YaudMyHDPTCkSM5zT5mFWFlirCTuvIA6V7zO2PReUe8P59ZrZZlxYAmylTZB+kQeRLq/8+N0eDstX938HFt/GuC61U2iVz1DWb97sZ42CyqYgqxiX7jLco9TSVihtifXiIl3NXmaAbjErvf22mnmkR/XXrbOl8Vec86gVP28fbGCcS0r9ZqgC/7eyY4Idhw/hBTitsS+isNxIU1h+6Fs0joSwWxq93JcYwOR2Wv25YI6sRx06XFfSnNMykHT5U/xjPdbyhM5zh5m5iMwUOYryfEJrJ/T4nu6ylugvMSYM2AtdAKAlI/fOoLIBqY7QyCt8zZTauqMPV65EVRWoehWRDTftuyXVgnquKdb7TJfc44mYP+wpMGASQs7LDzSCFCvpVGRhZWhj6BJHZ+JNMPNQ/YgjSz59GWVrL5/k8T4rG1m6s1TtuLa274xOlGQlArnU2baDHDxsDaVc1DR0Dxrc6NH7kQ/xlNQVuRN72QnCt/jJ5NP7eHlZPLp7+UGZj7ZxNoRaeOrqghTh3X6ga9q17hoD75sux3s6HyBgyfQeqj12PcU3LWet6tRlxQ7z/lwzsv56mnGmKgERkDogoCzpLUB+LcQx0G4IOmXiurZVxK5QGa3nv1Yn/wasUOp1JobEMHsJa9FG6GYopuWLlcDRWyM4jaLKxGS76OZsjg+xIuO1hv3HO+zjeG7I7h59DZwMw3a1E+dKvz1PNXTX/skiFp1ZDk7V12kUy2soBkUyjzP6EbBnDIBNlmfmnwgRrH5kDpOpIrZFMwX9LI64x8TylYL/gjG18PLGRwuS/h1Nd286/mJU74KuDaN1BE 2l6NWlOy vIAPrE3S5ONQZ43VHP1ODkAlHeYv4IrWn+JqoX+ZaTP33nbJb23EdspSBAnKlfDBflf/eROCCvYp3gkS0hl2nliLK1ct2onZp/7dzdBZJlyYW5F+usmHuISWYt5XbNRizRNAz8KxZFxU/3cdaOaBFRXImJqr1KhuuZhL+rRpu9NK5BYEzNzupcl4UggJjMRLpGRxS/+cHqXFa0fIEyv1a4VbGbAkVq/MspOHA2pCvR/6Mf3fNJa0empc06OycbxM9cY7D6mV3GLIge7wd3t2HaCnTemH6s2URyT82SRTGjTtZL1D249XZSGE2BuY+Vr1U1AFAU1C9yLROQcWwcIVro4wrOWr1EMJpZDxzLwpxXcRTCGMnpXxZqlfc8xKM0UkSGuGLAxGaegVaz2A= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This allows to test folio_split() by specifying an additional in folio page offset parameter to split_huge_page debugfs interface. Signed-off-by: Zi Yan --- mm/huge_memory.c | 47 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 437d0cd13663..05c09b791676 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -4295,7 +4295,8 @@ static inline bool vma_not_suitable_for_thp_split(struct vm_area_struct *vma) } static int split_huge_pages_pid(int pid, unsigned long vaddr_start, - unsigned long vaddr_end, unsigned int new_order) + unsigned long vaddr_end, unsigned int new_order, + long in_folio_offset) { int ret = 0; struct task_struct *task; @@ -4379,8 +4380,16 @@ static int split_huge_pages_pid(int pid, unsigned long vaddr_start, if (!folio_test_anon(folio) && folio->mapping != mapping) goto unlock; - if (!split_folio_to_order(folio, target_order)) - split++; + if (in_folio_offset < 0 || + in_folio_offset >= folio_nr_pages(folio)) { + if (!split_folio_to_order(folio, target_order)) + split++; + } else { + struct page *split_at = folio_page(folio, + in_folio_offset); + if (!folio_split(folio, target_order, split_at, NULL)) + split++; + } unlock: @@ -4403,7 +4412,8 @@ static int split_huge_pages_pid(int pid, unsigned long vaddr_start, } static int split_huge_pages_in_file(const char *file_path, pgoff_t off_start, - pgoff_t off_end, unsigned int new_order) + pgoff_t off_end, unsigned int new_order, + long in_folio_offset) { struct filename *file; struct file *candidate; @@ -4452,8 +4462,15 @@ static int split_huge_pages_in_file(const char *file_path, pgoff_t off_start, if (folio->mapping != mapping) goto unlock; - if (!split_folio_to_order(folio, target_order)) - split++; + if (in_folio_offset < 0 || in_folio_offset >= nr_pages) { + if (!split_folio_to_order(folio, target_order)) + split++; + } else { + struct page *split_at = folio_page(folio, + in_folio_offset); + if (!folio_split(folio, target_order, split_at, NULL)) + split++; + } unlock: folio_unlock(folio); @@ -4486,6 +4503,7 @@ static ssize_t split_huge_pages_write(struct file *file, const char __user *buf, int pid; unsigned long vaddr_start, vaddr_end; unsigned int new_order = 0; + long in_folio_offset = -1; ret = mutex_lock_interruptible(&split_debug_mutex); if (ret) @@ -4514,30 +4532,33 @@ static ssize_t split_huge_pages_write(struct file *file, const char __user *buf, goto out; } - ret = sscanf(tok_buf, "0x%lx,0x%lx,%d", &off_start, - &off_end, &new_order); - if (ret != 2 && ret != 3) { + ret = sscanf(tok_buf, "0x%lx,0x%lx,%d,%ld", &off_start, &off_end, + &new_order, &in_folio_offset); + if (ret != 2 && ret != 3 && ret != 4) { ret = -EINVAL; goto out; } - ret = split_huge_pages_in_file(file_path, off_start, off_end, new_order); + ret = split_huge_pages_in_file(file_path, off_start, off_end, + new_order, in_folio_offset); if (!ret) ret = input_len; goto out; } - ret = sscanf(input_buf, "%d,0x%lx,0x%lx,%d", &pid, &vaddr_start, &vaddr_end, &new_order); + ret = sscanf(input_buf, "%d,0x%lx,0x%lx,%d,%ld", &pid, &vaddr_start, + &vaddr_end, &new_order, &in_folio_offset); if (ret == 1 && pid == 1) { split_huge_pages_all(); ret = strlen(input_buf); goto out; - } else if (ret != 3 && ret != 4) { + } else if (ret != 3 && ret != 4 && ret != 5) { ret = -EINVAL; goto out; } - ret = split_huge_pages_pid(pid, vaddr_start, vaddr_end, new_order); + ret = split_huge_pages_pid(pid, vaddr_start, vaddr_end, new_order, + in_folio_offset); if (!ret) ret = strlen(input_buf); out: