From patchwork Wed Feb 5 03:14:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zi Yan X-Patchwork-Id: 13960504 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 60941C02196 for ; Wed, 5 Feb 2025 03:16:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E5C59280029; Tue, 4 Feb 2025 22:16:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DE215280016; Tue, 4 Feb 2025 22:16:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BE756280029; Tue, 4 Feb 2025 22:16:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 9D6D7280016 for ; Tue, 4 Feb 2025 22:16:19 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 60735AFD3B for ; Wed, 5 Feb 2025 03:16:19 +0000 (UTC) X-FDA: 83084427678.11.EC4962E Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2064.outbound.protection.outlook.com [40.107.212.64]) by imf10.hostedemail.com (Postfix) with ESMTP id 9B4ABC000E for ; Wed, 5 Feb 2025 03:16:16 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b="pb9cqA/+"; spf=pass (imf10.hostedemail.com: domain of ziy@nvidia.com designates 40.107.212.64 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738725376; 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=APQ4/MGbBmdCGLmDFlteEcEqhBpNZsR+DIcsiodcQmc=; b=PYsCjYzWnH5rB3xyfVqMUvqHeKRIPiKDbrOredJa9DsLw6zAzsXgHdd/HmXiXoJTC62t23 DMoW+72mFmk4ik8deBozNcTE+fEO73+eDoRWC3Fqychu0x9jStJYtb3ktn58VXCeonFYty PZBYgJ/J1xDdfdQhszmyE8fLhLtWPHc= ARC-Authentication-Results: i=2; imf10.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b="pb9cqA/+"; spf=pass (imf10.hostedemail.com: domain of ziy@nvidia.com designates 40.107.212.64 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1738725376; a=rsa-sha256; cv=pass; b=iw0aHoG+HJHhejffizPMgKac5DW6RlPT9aKrdk3NidT5qvPrIvaKqDl9GJrr0mBHuM1Nj1 oJRy/V1GhOJr3m1pOsMKtj02FpUrQMLsbW85Gczk/cLF0pHwNeTUiD0tjDzbo99HnCrYom OH5Zyr6KU6LRZZy5jtzLAwQfeiEnk5c= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GvhBmNihZJYFX+6p0BuT5TXlt8G8KA+eneaeUyBzCQxGWVrMyeT1u7wO3Fo0/LAJcQ9M4Mq+Q52oBneFhoIt5/6PJL76WA4GmYJV8ubqEm7aFtsi10ZyuV4uYXpsKNFY3OYWoEzJ21KdxnENGmzeUr08B0y01yZKKqHXbn/skvJQXGqxphLZJSGYOZuUIy/ezYbbl3G7xFyL+4PUWqOahbM1rRxZfrdSWVEqexDR37fhYFIyS6WpSkGVrOwUyI/WQaH8qaDipa7phfAcYOfrOUS5u5MVYYVYFqn3OX3j6OOcJ0NvArRKckfZcQjEXemILbMeBscwO+Xr9ZjjYNctiA== 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=APQ4/MGbBmdCGLmDFlteEcEqhBpNZsR+DIcsiodcQmc=; b=xGdPXY8wLwo1Gh/nvNwQVGHLCajU9zrfwV8TwvRFSHPPR4pC9qKMF/QjOjGRxe2S+dwBmZwK86aWZDFy2xIaXoqoYcm2XjIhCCOzoCwkzsy/rmCHnkeJK6ot6p3tW/o00FKil9gf9+AulLW4rgirrpgEM24tjq0vK6C7a3S1QegdUlUQxOmjZhpaveUgvdWFsKAUa7Q7hSV0f+aaADTMI03Fvqa6NV2znmvZb0b4/Hk4w7VBe6TSq5MW5k1t0Ubc1l8V4nT+20+cO5Fm6PmJOTKpUClM1L08TY7jpoqsdqnYXYaXzxqn8GvlcXNuHcqdqpZEsA8Mp6Qjy+tTewNWEA== 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=APQ4/MGbBmdCGLmDFlteEcEqhBpNZsR+DIcsiodcQmc=; b=pb9cqA/+tEscKswnH+2SnjCx8lOc+FfH9whfLM27Q3HvoHi4QZlCwaLtb8Hbpm2LLfW2rZJsyUgL5oLnOp5K/pEp7ZKoMwFz5/LmUUCpRjrmRde8NiLspfL8Wepcz0ZvpVi+wh+voOmS3+DSSjyRnmVBo1nPuIlMOBD/0m+k9zpMVttM6YEsJTHb7JRyVIt4pdyp8yOkWtUEvthRP55C8RVF0K6BBjHlOg8DgmYdPW5mM7iQxcu/9ghZpTFt/oUza6z5jrHfdcjUXTqroAhYbPz1xg6WpVPUp7KBBmGsYxytxpxLLOANP7gzeb7juB6E22mp5kdm7unXdi3j0Z7k+g== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by MW6PR12MB8865.namprd12.prod.outlook.com (2603:10b6:303:23b::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.24; Wed, 5 Feb 2025 03:14:41 +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.8398.021; Wed, 5 Feb 2025 03:14:41 +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 v6 5/7] mm/huge_memory: add folio_split() to debugfs testing interface. Date: Tue, 4 Feb 2025 22:14:15 -0500 Message-ID: <20250205031417.1771278-6-ziy@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250205031417.1771278-1-ziy@nvidia.com> References: <20250205031417.1771278-1-ziy@nvidia.com> X-ClientProxiedBy: MN0P221CA0001.NAMP221.PROD.OUTLOOK.COM (2603:10b6:208:52a::7) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|MW6PR12MB8865:EE_ X-MS-Office365-Filtering-Correlation-Id: 24979d01-c439-4f49-65af-08dd45933b74 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: /oR5lpOH4r6RJVnvFNq0RuceuYg8dAryvnjbGqh5qzLpqXQfs/Pmi+fsFjGzZMM1htO/8KARKGBgo7Y6HqvSoIFdwQh23L9OCj+GiXwZfzdt1fsRra7hWgkOfN3HdRtyUfpeaVCchpzRhziPg4m57FphtRP+atdiZnCf3IegNZidNnvhlNvSdR6pT5M4eeTcI6B5gZcv/DgI0HIwSWZKnSTtlHf8LnPiwoNRywN222xxGGD9OStwZSffe0iAtAaQLXlpA/mwcXC9OAMmjB+btSOCRnChJ6wpql9Swkh2Un1UUEon64oJuDkDM2MXdwEpCqeFhqPRfLJlyoi8aqrSpKeViKmfvcoOoTz5uJt+eNZ9PEJ0eFWm2nI7w+5uwstsJ/3+l4+vtor2ZX1fDYMTK+RiqxdrpcSq3u4bIYYptCGFyxNxjg20aBhZgjgNIPzt/k7KnRhwVL/bYQS+tWVuLVLLYPOpZuFgTGSFdgT6Xly8NFmT3zQdWHE7v9+OoXdzvzYc3c01q2G9ipVGgRDHO35IkiCEEs8FU0pVC3y1p/7YYwBfVEBcOt06DO4wzYrzyJO17vVYK1zUCSJHyHB0flV9+6/qPg/YKJwzAhD106t7adumy/qGKdXpGHB2fm5oJCvsyyO0xOhP64mxbjvEQYsJ8CGiAsvuevxQ/vVQUZHDpzXHFp8A2Pw4OsR4mgMtkDACi38Jc8PpUiEKB4oRmAx4ugXVUCQ2oBnjivC2gu5e0WyooG67QeNA7t6mz7DcYSofUimr0s6O/c51TxU+ly5rdhQj1bNyIcI3TNagNIJfdAPDK05H8vqy4kQxImqtlTxaaTQWDHcOGAlFf6oMxDaYI4KUNO4YzQPmEqXHdSgnhHjXEBNIA8MrYbOIBM2USniwZbw7kILdvwG6Ek1Ns87ytdrE7i4bZO9CMilH/mfqib6dgdfTqgmtB6XrBk0n8Qby4NR98CanQKs9Fd13Tpc1vpjonzwqjjS3Ad5bcjq+hrJ3hKJRPnOVniQPu4km0HbHEZLinLfGITkFDXvJ7JZ8SBK7kavyfYnnwxCn+HuvXyuMz5ClcCZTRQPlt6DrRttltDPXA3nY6ZzplxI7JApwwkdFjwKckobIXlaGCHSDWqLDV/oRaj/4nL05ibXUq/ZQfkxE79eExALe3Y72qqXy+karS8OU3ZReRfHeLr2uMd6w4N839Z/yCCxfNl4eRO+PbSqNDKW4iL0BMaNeEO8CcLkRc8Im9PLJKZJ/pi79qcU/lG6DeGswLPp6cGtj9OWWsio1Lod7Ols+nmSNcwpxhUehD8e+pzpY+0mI1/BGuiFQ7OIt84XkaWXm1g35odxmKd2W71SD1sYE5AP7Q40l8uPeOKXTYwLZBIrftE+koRFepUW3l+rSBRoN0luC 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: 6wQ13kAVJhbPF7hYg95kXzT0KzjAOulqbWRlTTRuMAEespSQyDaGrnSsuenTTgWnxj2JQ/T3KZCVh+D6exDAEhV9sDZnxscm39v5qpR/3jZXGWR8TlUx759+PK7O2LwXgpKItwCAJ50UaSTVpXrUzSPH15UAYfJ+sKmDIufWoYR32/JXAx/S1MBRoplmYo91OALuosmBfpRJI6ZeojeMpYuhRVczTXaXv6ofGbd0JkP4RJ57kiwJ6NbGIgOi9dNw+Y5v0ibZMC5ZOfANfU95WgMf7XpDmdhI6Wz9co4K/dM5g1lS1YN+OvfcbzwWK4zCUPG9QY1GMNnbYaBpAgudQMoUv3pw6/lF7CyyYkx4/H1XlvLRaGbZMvMBePyHCh+vjeCgiyYiUTt/cXAajOgh99Ud5WzM5kNcmc3PhupE6A9D20KaPfKyHZJKH0fL85NQiAuvDICjDDOJFgtZtgadXTABcscoKKJ8nfRvc0D8xbclWgOoXb1RVrQm5CS5mcmbe4bmQWFVVHyKukLvbPrssQLglz51Gbfm23VBO2b2h5uZ/61h7kBhvi3shjASXlcIPx2SsyMssT4m2H/G6/Um2sMWPFJXRhXAsdjarmaOmH9zRIOI9kD5Mp3GIPd/USVtKhfjOZCit0Yaqba8Zs+lw1yFhFi8R88yKREpOmsz9aWCxBrtZtdt6yy1KrDYofj1CkRIOkcsSP3196WKLjH42HE8zaT4h2LbNQg9kwo/sOLZf02hpe7qTHTJjQF0sNsqkOnIMREcIXeDxp195K8Zu6yOjLCm/fDhveDHYzyE05zbMyIWt61jVCa05JUTWLt+roB682M7qAH6bpjtGTr4oi3GGOihCpIKRm97BDEQlXt+coPi1lB8nCezkDY5onP1nBeg1UXI9dIcuTg7TQJZsxEyM56z+PsRdFj11f90yKCADP0iQ944m34fwJJ/1EzGvgA7T2Q5l3kOsmGdvceZ3+H+JPRJflLOFrSqlZBBFOUi8VsKkVLkQNrGbVijTue/f8ACk0tTtTncS1X8POUvyPogW+M8yyNiaQuRMCpXTCWQiH4kjjgCnzuDh78kOJ9OKFOQcSoiOLXV4N9ucfc0roLTiFubb56IqGmvNQI3fDyuC/vDYHgLZl+MrnMeNsLWTRkbvUdwyRPQXOIbMplLJFv+Ii19/cxvZVwG2+uJdvskCiNXuO3MTRPl9VCYrYOqVTowblDU035fMhA0F1rjBSCrQ4Y2Av+LHHDHkpUTqEw+Ba4tsALRob7F/CjHikTBfiEZXx1J23WrpRw/zucIrlGAta3C/ggUJFNERe2aD629caUxqsMfWMI4c7FH/Ou8BuqIp0NUn7mA8ROQxRbXP+bfVD+VmGGHJDVk1gzd35if8v977CL+mCoFSDnDLtdTkfN6UEFJLxCO87xCCywzbPzSAa+WFjfePlIKwy2G3E624QElOKwE7afxMIH+ESQKpE1cO74eE7bhAftmhSKwqRc3x4/Af04HXFwGA0tbwYzyTOaEYhHtzcTENWEOzdWaFqRy4DnuX1U1hhBkTVCjSD0XRoQ4auYih6Kcuex1YyItkhHiU5bzL7Sfcwubz7ML X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 24979d01-c439-4f49-65af-08dd45933b74 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2025 03:14:41.7762 (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: kUqwzOiSXC6ayTr5lG0EMB0lXKu9QbdUZJdy6UcrX6CL84pB6SGwirzHWjdCXqr0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB8865 X-Rspamd-Queue-Id: 9B4ABC000E X-Stat-Signature: ionw8agcjgq59aueeek1npkgfwmb7zud X-Rspamd-Server: rspam08 X-Rspam-User: X-HE-Tag: 1738725376-254347 X-HE-Meta: U2FsdGVkX1+B2coSO/gcSbt9sKSTBvmn9s6ek9fwr8fw2vvB7/Lqyuo6PXvj6mTWzF19cgTKf3UIo9j/IicD1+pPlohIYR6WqKa5QiDjfnAzj9nWr9uoO1Ff+flsRbLdJZIKfMK4KA4XY4UV9I82pO9gF/4T/DOrGLZa/UJlTk4Ur5otY2ciybLAMPS5cIQd/pNbYWL14FbZE9nDlrZnESE/ZNi2D8Ri0WZMEkMVFgmF80A1rvqJxGbP6Oo16biiKEFdAazlA9Et8xzRB8XGcSWbt++PdJJUdkARd+Q5SuyqicIq5zbChVVDJgHBfGSHaVM02qd4lCaG4KSfonrB3Z6yM9koYb5uhTMwXv3GKnlVU0sWt0FnSvm1OVv648V4oypSWT1EmleY5UVlXkbJPHa31+OILNQWu49E2q69B/sbXMTjwf9KBCqW9fBeJYEQ1mssXPZOhGCWp2m7Fu7QBZoeeSmgnHsA9hMICoA/MFJuc9k/+h1KILFr3Ul+UI0V7qdDX3fx/uyjsl/sPbF/Kt6bX0gd9X5ghAcgpWF3MiGkoLIEWgaM+c2ZYavZo5biL5cRuhH0bDfGXeZ4kO7HBg5TVQoQTVg6qY9FIy+2WZ28utbIqZmELQYdRzRYxiV0BMOkKVeiT9y4tgyIvDYE6mAXDPX8d/EVYX7Uy6BDW8sGCRd23JidqrnuKY7t1Mfxys4818TueAMSWAef8PRitSTuak6cakvdNRp92Fx1ZIsPZiqFdpOT0J9n1jIQXRf9yqCxJrJsGcwgmt19HlM/iEFK0F24GVqUcp/ez50BsK355elS8KWYPlptzeOoUX2asMf7nZhcfO3+/kNqfhh1u87NmYTAn89Qjeb6jLDxfvmWYRCba3dyoAETkADSGPzOoBBMzVft7fKAWTh1zQuQni7u/7Jg4MpGTpKjaf9i5lro6utiaK1MWaK6j71KuaVqBHKRrghvMXf5s1csfwK OECGhixP 9Gm0d9og14rvh7B67DKnfHiGNlqptSayW2YM0eTxRbM3n5zmymcj3R2U1wzQXswYxYkKx/dfX5UkvnSaoVUYv+KooizCHEFeJBel/YesQZ85GN7KT59r4FL+RZ75RfmbJ9g3qqceOeb7tvR8cDSEbkYT49Jn8LJ6gTJbgd4uobXRv+o3Mdwx+gJMdkhjQICA37wNL0q4TMDD9VY7GDOlAlPLFSyiea60wwpkarku5JQGSmBqmS1+bRSdaUsXfBoP8NoveD+cOHliLbOmOHJNsMv18xP83j75ZV9xlyp/iSvg5nlRkiGU5Y9+nbri6Qz7cl5HAgn82wiBAdraaTvREl60Euqyam7eQ+CPHUbKNMZWbWbnfYss6aU64cI+UHp6qilTaO/9cxBi+Oh8= 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 36594eef5c24..dad6819901a8 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -4180,7 +4180,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; @@ -4264,8 +4265,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: @@ -4288,7 +4297,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; @@ -4337,8 +4347,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); @@ -4371,6 +4388,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) @@ -4399,30 +4417,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: