From patchwork Wed Feb 26 21:00:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zi Yan X-Patchwork-Id: 13993179 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 BCB14C021B8 for ; Wed, 26 Feb 2025 21:01:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4F7A7280005; Wed, 26 Feb 2025 16:01:17 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4A7EA280001; Wed, 26 Feb 2025 16:01:17 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2FA33280005; Wed, 26 Feb 2025 16:01:17 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 10A4B280001 for ; Wed, 26 Feb 2025 16:01:17 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id BAE4880B64 for ; Wed, 26 Feb 2025 21:01:16 +0000 (UTC) X-FDA: 83163316152.20.DA92390 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2050.outbound.protection.outlook.com [40.107.95.50]) by imf09.hostedemail.com (Postfix) with ESMTP id DCBF514002D for ; Wed, 26 Feb 2025 21:01:13 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=lAov4FFv; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf09.hostedemail.com: domain of ziy@nvidia.com designates 40.107.95.50 as permitted sender) smtp.mailfrom=ziy@nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1740603674; a=rsa-sha256; cv=pass; b=tLZbcYHjlDNBAOYtOV/5ApS+6kprHnohzOvw0sPvRMEnXtR3b0bDeLFE5gqk3fsy7VGpAg qE3IHhVNQtL+R7kIM2QTVmmaNbnOoaFjRcMxSri4Zu4LQ9vEWAU3BExoylpz1whGsjzPkk jHvchSJFvM2JgohFu1GBl+iT8Ig332E= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740603674; 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=G5vsCuPCJeyfDdEP5f7KM9iw2fB39gGo++lVyXDN988=; b=uH54Lx9pOksZaLiRlEV2m5nuZuqm45GEgISeNRXhn33Zp5mqTqQvrEeQRqCAYFnOmwAHsK +8UwHqPmxbtQ8t7BeMIiMQX0P3AF8bVJXkA42D8ArDsqyzAsuSgqZJwUWIaxgw/Rm3fCWK eLc6QjzR9+WuuUhoEcok1EXwmHY5VCI= ARC-Authentication-Results: i=2; imf09.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=lAov4FFv; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf09.hostedemail.com: domain of ziy@nvidia.com designates 40.107.95.50 as permitted sender) smtp.mailfrom=ziy@nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ejCXVwy1YfzrGC+DbuwPNR9oBqRwV7KZ7+imsXAdaooRBjvRrQQP9OeQvtvVl4/Oq8uCQDm242gczDHFM37sAfEV5BwbnP0/X72iIZehgmk/buQofDKZn6uDR5vm+728AogS8MbXZ5axC1jG3jsxdCf9gEoa87PBxYPDsNp0e6aRftSTzLeFMX775hH1wm8UdO7JxkJWl2GLr/0ZSTpf2vWXWubuz9jqQmL0ewO0NYVGirsSVoL6weeoV6p5akTp06NfdN0Sy1aPz9RYMi8nxGR4t936IGWY5oLNS2HXtItopPWBnCFzuqfMEVFOJ4RvtYd+fhudn8Qy4T7leksecQ== 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=G5vsCuPCJeyfDdEP5f7KM9iw2fB39gGo++lVyXDN988=; b=bQvQtASHm8NBSbxW8mKJGDI6JI5AZ5mWA1Z+NAykDjGdDkfyIqa9my4qUWNy/x0ot+1JmG3tuH+dUufIacVhuThIKY5FsRxTAqjlTi3kGJWUsoNU5edqN4txPbjnHzFzuuo+VaeZW7WTpJ14sbDC/2gciQgS0NfVxl8q/eUZhGsrOSHCP1oMedJSdVf+ncag6E1P3gdr/JwG2AGNECtQugQRZP9TjBhY3NQezg4SmqNnUWxrdclGIxXU737fouYj7JC8FpdrdLF9U7nsedNQRcUmqan45Bk43Dhl9pnGXbx2Yiav+dV7uS7JADi6cBBXCO0/t/xcwRJdA3SFtpmw5Q== 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=G5vsCuPCJeyfDdEP5f7KM9iw2fB39gGo++lVyXDN988=; b=lAov4FFvs0lRvQGM9D+C/S7QyU/IGGyToLnsT5p3sP74e8NSI3NBZy0m50y8w7Jta4Rm+SJj5/kabqYnOQjyZfWYncwO6q+LnvwJbL88m8avFseXLVDpP+SvkHZJc640FRm7DwTcjsE/PKC8gGTEOEl67kpodoUuiPvnhnqDLRrSSgwOF45s2fFP7eqxhKwddmCZLVB8YykuguKnBzmX9869FK9HLR4qkvn+nmX2Metmvaqx3tUPvmgShtN30QnFAsgDuQi6+iUXO+lsPQKNqZDV2eImFzSx7HfUJoC8BnHST/sam9fF4JQ2WaN4DRbS4q8L6+FTxE64RIWpfr1JZg== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by SA1PR12MB5614.namprd12.prod.outlook.com (2603:10b6:806:228::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Wed, 26 Feb 2025 21:00:48 +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.8466.016; Wed, 26 Feb 2025 21:00:48 +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 , Kairui Song Subject: [PATCH v9 6/8] mm/huge_memory: add folio_split() to debugfs testing interface Date: Wed, 26 Feb 2025 16:00:29 -0500 Message-ID: <20250226210032.2044041-7-ziy@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250226210032.2044041-1-ziy@nvidia.com> References: <20250226210032.2044041-1-ziy@nvidia.com> X-ClientProxiedBy: BL0PR02CA0036.namprd02.prod.outlook.com (2603:10b6:207:3c::49) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|SA1PR12MB5614:EE_ X-MS-Office365-Filtering-Correlation-Id: fe6ab34a-1c87-4daf-6884-08dd56a8a51d 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: y1IzbUm/+XzhEgX0NnQ/Hgriy34vDQ+707fHUET7r2ojl+Zyv7ySPZODFyhtpoOZpBkd8yB07OJ+HiXMGoH5Dqn1t7NEDWj0OWwLAxepENTnWeaSrLo0f3PsIlk4WNhkKrahC9VSaIF6ieUmnij2hbGqzQo2baGZTgi2AKfh0vxF+otwpr3pBA4bA9Pei4qY6pUhYJY84vdYgx3eaphlpUgwckpwWgAOe4W4NW4lUFUc1oKyOzgNo8sQ/KqsRY67tHNfs+IjLw5t44lTI/CFncWpVezu6NtyXXppRphFIIuN0oiCtcq1hHKEJQddSIe0lE+Hl58Q6wnMdngjao3lgk/nUTZT/h0gMbieu/T3Bu/GQphswnoh8l2QBKcTp16qS2Z1FkCaDxsxt/Vl6aao+W8FJSPqy69/jlkDtU7Je8IH4c/bjStoWkC9f5fx5E5XJ/g4Dz3QMTGCBDPF3vvZloG+dqFQ0WZGowsWX5c/LZnownAjXKUN8sDmtVeXNQxEIxe1S8cj0m9LWOJM2xEvHFNg0pcr7oLyNmyB7Ze1DKb5GFDWx5yhAbYvju8oLLAwscnGBK7PIZSvne5ZG1P333HqX6SIbLxJI2WqNPHn1wKKAT+CjFd2T9c1kvB93TW/l1HgQ/udvJzO6YMjx4l7zO4y19d4saIXvpozDkLjCKMxrU7c3LG/9zZVlMPLX5SqlYe2X+diYffvENs+X63BlLfUTUPytOhbej2rbnpr6ws9moDovY5Grkwu6gketdqob6gq8B9dH7c1K40kfgNc6HPN5mkkyzE/nsOn6fTPAqDowdHMuHEK8J5/9ZN1PZiHW7faJIDVkL7/RDQ2PE7I+r1XI9mm44QXYGSQZsoONCYlQzy5Fa3896IL+DAJJb8W6QOAHbkfOO4zck+o7Uu8iw9gZjyHupMfplD6v3uMkkuNcHjaoPGw0jLRiEdphfhMLJucBGxfKuBOK1GsrMBqGr9Fp45LtklXRsXwnmT/OGYfOPCJuwPB6PPQ/kPhzvzPgimYYFH6QP8ffbwTTDz0js5lhrnAhnvwDGIKW0wRJ7uOURgStNYn3WX3fiCU86cT4ddsqxNnfrzg7Vyere8EmACcDPPDI3Oaa2J1b++EVP7LC7ktqtx1cBjZjWtV0DgQ6Wabb6I3Ln3XHzHa2pGg8aU8zQOfUGSafcrH4q9S6UW1KyOWh2X5L3wHpuZxXdEQCIBGRUZqZaOWDf4EL4nTLIsSER9qTBJLwP3RpwOV1uVJ/2rANKl/URqqMCu5JxUxHNALb69578d/vYFcml8BfBoS7TDxU53HmSMvjC2ZAAHxO8IP69Bctz9dsCFkUbZ4wy3LKybBDVaYS+BKce9bQIMqeo2b1KMnu8Rl5UbxHr4E8i3+FuMA/buwyoFm5OQ5 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: tiPZYVtyWAdg+JOxQ4+JDja0R7s0QDP8ltatUT92DbQdIsLoe/ZeZitpQgfRGHtx6qxsz573PnzNyFeqc5ooaK9l5xMxCtNtvhCTOkp+gLxXf/BnWmKhrStAHX7k3h6v38JCSvkIBCOABzdQjFgIEKs8wWlY+ncmgGv+/zNGqRj5gCt/mB8yKSSyBzrXA2mwlb9ASgEghpOE+/x0OPJ26tJ4rV+t+yjHQ85If3wcc+ZT5a+9B4O7i6+D9Pf4697owltsoKa1OsvPfY7Ol3O4eaUjYu2rhdazLjBr69JlgQQrcOybre4EXKAKmPyp3ybb/UdtvNqCM9IBOjBWSobGEb4AvRIigFS2pNs82UEqoEDx4yq92OJNXi/rWZztvIPd/rGPyy5q5wkzK1mIxrZLGQA4aFWPlItJRBBkQbUve/L9gOaKAcpubXvOWNIvCBCqgcJeYndIHk5VyDcXb4M3pFJRYWlfOeVj7ZlQKEb4kKnl4CdtD6YO9OBRSe4eQINIjEJlt83q4B/4Bp4vNTQK0oCCR5ZT7UY9ChpGphxvWJiRrssmq53l5ovw5w71nQY7AQYv+WiTkRGk96wfTG24ta1WRGEJs2A2ljpePx3lFXpURN0Sa/MqcOWbKrdrm8e9xu4PdCsPNptiro3vYMftbN7UUiGHhkImNc4gfDXj7u5qlQGd+NVUf8p0KyMq9MK8LTKdstKdlA23f9IVi5UT2RFUlp2uZVltjBq5JFw6EaQaKfcyfyhJJuP9BagWhQgTbekIk7UvHThnZM788NS/zlWZu77WjA5n0Ogfdhs1wT2F/hC8hqvBJl42eyNShIwORaOnGlgzT/1xtBllAtjShRWC/o6o61TXZh4MCjrl6Mk3TpkrKc6BA9V1xWQ6sNs3fWobAM3+OWrp38A/y4iQomtyxj6xDFa/RvjwOB7TEzyP8aXPz8lsB3LNkP87LcoZy0ldQaxBWzrfD3OR34jHPoqlUoZE4lUPuVtrDR92CZmOMy53bdciUWraKsKtbrKRgLx1c3i9C16a69/nZX3bX9niGGq7HL1SO+S0EqQamTgjWn5x/CJeANu5z8xcM61csNQDs8PH97PAuijCMNW6YknJEeAuC7ZZNK/MVdkLW17bkPLTLNFu6J05LGGRb5d2RuWlOCzbd79yPDN/vKAwfT4zwA7RefqY9G972AErKXE8Mf68C/jPrllcRDAQ+CMQkr5btj1O5G9bKK4G76cMO/W6sQC4igxpYsjsazhwk/F9vYc5Baj1/KlJIDDhcX6aywavoyW9SeTO8a5grgK3VSmRIZg68u6Z/9efxBdwC/DGUoCKhTjS6UleN0tzkQNROQSOTOSO/bbCLB+tQ6WLdBXXEdwBP2dTfKYjvzHFFeqBIiIXjTZPqvMY67tWfGScPGg2E1Wswsatd0fd4CiOnCF77VmYC6thd+dAGjVO5SsATjBVtmqt9pUFzZQDi+yO+NwmczCcaOc+4IXKpJ+U53GA8GOMtJBTHaPwKUqTwG2JBxSdHBM7tp5ZSYr7UlVzq9WKw9zVQ6n37YtB5GwPXhk/vsnz/5jB8ZKcdKTlle51SyILCIaQGD4zlB8Rl74+ X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe6ab34a-1c87-4daf-6884-08dd56a8a51d X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2025 21:00:48.2355 (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: hVuC1uB+bofoXMYdF1f1p9wlGV3DHU7w/v5/1eZOKbkON1FwFPpDe/OgKuGREQyy X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB5614 X-Rspamd-Queue-Id: DCBF514002D X-Rspamd-Server: rspam08 X-Rspam-User: X-Stat-Signature: pwnzwj7uq6oqu4ofcn9z4kf8ks9zipfy X-HE-Tag: 1740603673-396139 X-HE-Meta: U2FsdGVkX18A6Cx2ApmgMRpNaL7xHICCxiAV+UADY0GCMrKKjZdvD6FbSiW9jxSbas0N4PbldGOYwi95ffbQNyyYeeu1VDKIcZF9pccU8+6xj2Wdd8LFiCSwExSSK8k+kRz1J6clonDCbeZoh98X3ELXo8/9IswZK4WEkX0HeKGpNz3lUWMTYvWbeKSomNfgeU9qzXL1uUMLBgE0WedkRQnG2b4aKu3rKKTruj0hmKkC/xWcoe7lxyaUMCZHIwD6re/Gq21wIj1B1xpQlNP+3dEac7zN/JMxL2Zuok0HyXUjVJ3UMz+Kd3/bBIVTEGKuTbi8XweGMA3V46OZZJUTnGE0p6U6QRVhN47pCnzXRHIpFG9NooLPCjDUjmc+VHx9QYwbbfLVcsImirXRJCX0qcq4yVTS+CfTwLYh3gjCwahSww07wCM0qvafFdZ8TYFbkMWQ5qcz1p93U2nWmeoI9I6emcI5d0pOXTqmdqbwtkAUEg2PYJfOPBetHZeQcRn5LC6cFHdWxUlHVOPuYSFCaIFkpz9KISjTzgWioXeqzGTE3Li1EanKZK+DLIaT+3SCReL4Uo9NUeRkkxbDXTpCruzcezM1P6oy2nhiESiafLcPS0pVzmkfbcntWWwaRjbnUDbGTwnLN2rmA0uG7JSO1hYAbh6MYRSpnhtaWpslT2jVlWqJ1qo0OZTp/85nk7S/AW9XvmTz8pno3V7NbqLOn36AG2qUl1eUNPqrVH7lGzTlJwSkjNMHKdBLhFxWNH+TrbSxFFKYLz+RhJE2HDPHPHjh7YAEATgsYm9myYqU1gHiYsBm4EvegYz0iNi1AB40BwvSlh8yPrk3XmLSSnZeGEuvgO4ccFX7pmitXc5kw+FdFsI7EdhGuiHzJXMuDxS7I7IGx8kfRbDAQMdGY2CsODFGVZZ1UO6qqg2tJSQDhVi3lZzCzqxauajwBwhhI8833aZrn1eAVcHsqskzmME twf5NFLa F34/o1TPoJF2xU5kGAUtMGatq6At7jP5WfVAgMcC9DMXqK7hOg5h0lWnz3jrHbGKFSeh0xbsZvPJ7MevLhmin5rv5QXhAyUqB0GAFkVeG7mSO/BedW5c6ma3EJv682aJR1ryfLPu45QW8MfIiAyp5YTrcJ2kShHCh5xKV2Vumsq/WwfKOrvqNbswrbgdznLZuAd6qoljY63L7bFz3QZ+xK2bNOxVSOo+nHTLKjEWhfR0m9j2FGMHvLcQPQnNB2E3lt8ZIhvgkecyTyo8Wtln2FqKzMoTcHbut1MUCEXBeVopcwLkR4oU82sVbwKzClsHSCFPsnT1KlkwxqeUWslXO9PIA26Fojqcyz/RNijtr+oTWDuApWFJuZCd5Qc7jNCYxLHt7g+OgYOp44tZ0Gdu+UBw9EW5MGt1PGoCSKIclaPL+FkkcPTkES6NBFgULfX7MrICkPfn9Uxbzy5IarW87pU2LqjMRVXCRgqK0RgkKVbT+KI77M0NYFxXSEgrkt6KkFMeEroB6aPw2Gyhck5ZV9JQ0AQsO5S0rcykrQqNO861R4rvS2aG73kV9Ztn8mBgSUvf7gQmlkWtbrePpfbLuBLNWA3BdOmOyfmQiQHC6TPMeo85m81/8T6Ya92ghTrXXAoZShgaboydmJyD8rivaaftBN3hu/r3iU3ZecAtOq/VcAjEUucZJdMDgISOarNO82mphrjUw8HU8CSM= 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 Cc: Baolin Wang Cc: David Hildenbrand Cc: Hugh Dickins Cc: John Hubbard Cc: Kefeng Wang Cc: Kirill A. Shuemov Cc: Matthew Wilcox Cc: Miaohe Lin Cc: Ryan Roberts Cc: Yang Shi Cc: Yu Zhao Cc: Kairui Song --- 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 e7e50b2b23f6..6298be12e843 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -4312,7 +4312,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; @@ -4396,8 +4397,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: @@ -4420,7 +4429,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; @@ -4469,8 +4479,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); @@ -4503,6 +4520,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) @@ -4531,30 +4549,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: