From mboxrd@z Thu Jan 1 00:00:00 1970 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 36F0CC3ABBE for ; Thu, 8 May 2025 20:29:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 274606B00BB; Thu, 8 May 2025 16:29:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 222706B00BC; Thu, 8 May 2025 16:29:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0C3EC6B00BD; Thu, 8 May 2025 16:29:57 -0400 (EDT) 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 E24216B00BB for ; Thu, 8 May 2025 16:29:56 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 0FE9512128C for ; Thu, 8 May 2025 20:29:58 +0000 (UTC) X-FDA: 83420882076.02.CCABDB7 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2043.outbound.protection.outlook.com [40.107.244.43]) by imf08.hostedemail.com (Postfix) with ESMTP id 2A38D160008 for ; Thu, 8 May 2025 20:29:54 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=PT07nUpA; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf08.hostedemail.com: domain of ziy@nvidia.com designates 40.107.244.43 as permitted sender) smtp.mailfrom=ziy@nvidia.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1746736195; a=rsa-sha256; cv=pass; b=4KWla+CKYBdVZ+qWY6FKF42ffp6ovSJ3JqjKlEFr+Lc4qALe80NegU80IZRbiK/kA7TcYh s9hm6Ijp/Vh2xAS2xCtw9OQAkbcxZaH/57wp/G+/9inarjYzg/4CD6DDwuiOCIZZnLKd8c /CcA4G/YObUHbAdn+eF4KwoJJeDwG6E= ARC-Authentication-Results: i=2; imf08.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=PT07nUpA; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf08.hostedemail.com: domain of ziy@nvidia.com designates 40.107.244.43 as permitted sender) smtp.mailfrom=ziy@nvidia.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746736195; 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=xPpAFjPAgRH4H/6+ciUk8IK6mFrYZTTvgFOv/DSi10U=; b=I4nzC+RVQMFAZMg4zbNS224hCnEx2QsM0qmU/ItbEkeGoboPVBv6dXafQPKDAvq5Jz9ikj NxoyCCJt7IacbWKgOltfNBcihOqxfKT2AgW/f5MI2wQVq1c0cca2410cYVxkGDzPvJX4IF 7bgbkNoZmECzxNHTBMxXmQGFF9QOQ0Y= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IUc972d2GeuPO4UrtN48kcanSa//7njPRcrRZ3DFsVJwYPTkhZ1vj17/4N41io6d3MA94Iweo1ot4uQ6pNSPVCQ/8kbiP9DSfhrCX3INlGY6XRA+kOqxbSb4ea7K4O9bo9SJhjV1Rw2NvUNvCG8ir4I20APJKqmYNtHkPefI8U8WvuO/C+V3LNddVo3BZujKKuBYZxs6vN8TKJOpp3JDDdeDNcI5BJFF6OkvSSynOm7U/8y/+tRSRMDYpQRnp7hUi1h3mPGBUU4hsv1MXlUEnveAQoHW64icGBV6Ft8GYlA+ycILOS9dWQevNTmdMAqMi5AkqR9pD9Hi2Gez6uJk/w== 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=xPpAFjPAgRH4H/6+ciUk8IK6mFrYZTTvgFOv/DSi10U=; b=OfpYBkBWK/bcp6i4ezoR5MYqG1fjHLAqS7lnhdbmvKli6+8d8glOlO3nNNVdq+qMmiT2nlPWlziMx5+g3yjhbwqFB5vmFkthjh5pphPO3klxqDh2FnOljmccMt0SE8/FWkc0ZoaNRNp9nIPkOFeUuUz4VNDpXIyAzevEA0rk7fT92i+a68pjP486GPoXKj3RF3AHeU+9rKSujSX1S+qZM35GYqds/PravjVjP0Z8tZSkMQJgSbwLby7+3qy7GEv/v8w16Pe5TuprS4kaPBhqtGJTSFvGcU4eVL4AgVX0V5YVfgK0/xtIhWBaCGpam41EzLuFoASSACIHvlyLaq1Wlg== 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=xPpAFjPAgRH4H/6+ciUk8IK6mFrYZTTvgFOv/DSi10U=; b=PT07nUpAFnQy8OEklomGkvFV6ADov7jiALf4fjc+P1qT74pNplZyZPFVYHx/Y0Txf02GLmgTNhKp5+E06FSqxza57XKAAD0ZqM9n4GY8LMTuXs+FP9iz0uxn1UAK4OcVbBMRrTsPcWLGey+fHB2oGXiTAGMU69xZNZ6n5n/ax/mpVokhNbzBNwrfB8BFKvpMDhAhbYga2xi7Fl4fynDxD6Uoc12v5wtwbxQ2F2J3yN43XqESpgoI8BfooI02YC+uxW5zkuUVmRGjF7taddFDfK4KcF4R6fQZcK7hkGjfAlOvoBlT12gBDDvxiVXjQhgvlGIkuzvvmbmPg0Bp+YIDXQ== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by DS5PPF884E1ABEC.namprd12.prod.outlook.com (2603:10b6:f:fc00::658) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8678.27; Thu, 8 May 2025 20:29:44 +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.8722.020; Thu, 8 May 2025 20:29:43 +0000 From: Zi Yan To: Usama Arif Cc: Andrew Morton , david@redhat.com, linux-mm@kvack.org, hannes@cmpxchg.org, shakeel.butt@linux.dev, riel@surriel.com, baolin.wang@linux.alibaba.com, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, npache@redhat.com, ryan.roberts@arm.com, linux-kernel@vger.kernel.org, kernel-team@meta.com Subject: Re: [PATCH 1/1] prctl: allow overriding system THP policy to always per process Date: Thu, 08 May 2025 16:29:40 -0400 X-Mailer: MailMate (2.0r6255) Message-ID: <8744CDBE-8E26-4E7B-B6B1-5600D63A9078@nvidia.com> In-Reply-To: <9ed673ad-764f-4f46-84a7-ef98b19d22ec@gmail.com> References: <20250507141132.2773275-1-usamaarif642@gmail.com> <20250507141132.2773275-2-usamaarif642@gmail.com> <97FEC8A9-A8F6-4023-913F-5187062B0E3A@nvidia.com> <9ed673ad-764f-4f46-84a7-ef98b19d22ec@gmail.com> Content-Type: text/plain Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN0PR03CA0008.namprd03.prod.outlook.com (2603:10b6:208:52f::15) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|DS5PPF884E1ABEC:EE_ X-MS-Office365-Filtering-Correlation-Id: 648ef2a8-d0fa-4106-9d8c-08dd8e6f10d3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?5Sj3hm8z9n1cf+WuLgfKWAIygoFtzWRVWXqexDK5GK3KRNuSXTyWcGYmiaMh?= =?us-ascii?Q?Z0IuyZ8zDlrt+B1W23gaRpdQU60C/kVPo/Xk9QHhJQoUOyK1cwr1Ye5sG7t5?= =?us-ascii?Q?NRMFbqtlBP1LMSz5Xak/oLu8tLBilxJjvhMXkAqnfKvMsP2Di9nBo1HXdVWg?= =?us-ascii?Q?3e3acrQoEwNje3+uxsCR3jMq2qqpI4S1krFKvlmbFu8gt3lF3SmQPlGXvwkf?= =?us-ascii?Q?9Dn4PywZjn8icgfZ3SfMy9wJPlolF4W/VlGiugF0MqVCuMKQxiueINZCifYn?= =?us-ascii?Q?tOvuPHOL6gk4g5VMYrY43dJtjQW3eDuTW/5p0dY2he/OG4EpjmYyLTlennsG?= =?us-ascii?Q?ozr5B5ZIMGtNXnzlG+s18sVKO8zXYjNYcdrd4hcYRW3iRmzYT4KT6C+2OChm?= =?us-ascii?Q?Ns0NbPPd9ix4CnltQulRGaN9sTgsnzOSt/G6d0CcSset7yY3tXTJNBvSXmtI?= =?us-ascii?Q?WXzavIGw0q3cOp13PQD0A/oP+QAvD7cJC1Lamwzz2eDUmPolGkwXUA+Z4fVl?= =?us-ascii?Q?85QcGHUkjJKCVkyPazNb+cLEF2mOQ50AmG5OATrzCU5Xvrd7unMvfpVlvd0d?= =?us-ascii?Q?qg8qoUTHpQ6IFVOLkY2y+hes5KP9/FYglillCycyc+3xcPoUIIaJ2qzjwlzp?= =?us-ascii?Q?4u+R4LgRHJ3bMK1YKeeZTyufkfnuoK/OlMLkW61q10x3nAyH0iOM5hgoViL0?= =?us-ascii?Q?LsgPW+E9uS53bhSKRYyv0mmq8C8XqqAGGlMjn/W+l2Ru86utyRLl0wRX0u3n?= =?us-ascii?Q?eenwlaIfRGnJwjpacuu8IvUNpcNcQ48O/E5uGURGfSacERQ+CdYsOmWhTH3U?= =?us-ascii?Q?8LVeQpfA48050efgTOBPheZlDG2ydLJwLnsQChn9BtaDDOWvEM1AZbjbGQKu?= =?us-ascii?Q?DCUp3ouUcz/i0FTi73Sz0P5If7QyjWrz9panP3nmjCNB2wXnQBH4ZzSoIWkz?= =?us-ascii?Q?yQUmR/FA8cfzPqdjntkNl82UShTmG+jpDlKKksrBG/S6fBZd40tON4pmTk8p?= =?us-ascii?Q?nFXwLg7U7UOk4LwTqBYMHfVAzrX/c5wxVtgblq03FkP6uK2zkEsV8mzyL5JV?= =?us-ascii?Q?L0q7WhZKEPLEsoFgTcDefs5W+iLXS9UDtnhZTOAvSa0xRSZMk54lG9bjG+Ja?= =?us-ascii?Q?6fkUo6RinC0RGUFzbpxut7m85JpIwSRe44dnoQ0mgvpjr6YSypkVhINUCU9G?= =?us-ascii?Q?JqcRr1B/X/dDtE0hqtgXcDo4antfTq/4JrKjxiT6rRXSy8sKLOINjZEnkIP2?= =?us-ascii?Q?DMMl+iGwSdnuGp9b98480stQdOiwMJygVWfuKJuXNvMtHlNp8stZqJtcopBp?= =?us-ascii?Q?Tr2c7cFJs160YeHYe4S411jYblsQeFEnUCD/0fyLydzlSMGKIsGqUbtAwbry?= =?us-ascii?Q?3foxtcAvBKt2oaPymVp7AujEKxnWpkHSEv7O4X/3n11+/qWJfCPDV0zmRrHo?= =?us-ascii?Q?8D8Gyx3X0Qo=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB9473.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Fay3uIQzvUCgnPgxzeQLLmrR5+6Eq0CAd984J+Dr5r8fscAMxQo7PNTNYcsH?= =?us-ascii?Q?QIW82Hbi7UOk5Zm8u9AuAPNqr1Aoe4iQuGX6/2pZ1nxKVvf74KAYo0Rc9p4x?= =?us-ascii?Q?0tp/pu6PDokn3FsVA45jo1usQQkMHSHSldiOHLGvGaLRRRUjMEoVNOb80iZx?= =?us-ascii?Q?5gCVAAsKQn0v5gBto0z+BtBa7mxrm6reNVa9YSDNeNsFwq+1KY/5gJRIk8iL?= =?us-ascii?Q?Vt06lhacDnQdYS1A98DI1cejFLb7Yg9YhSyPGjvKdjclKWpPqZUx3ytrFn0D?= =?us-ascii?Q?AWt9fn4kz9iZO7sgvMoRYl/K71DqobeUqWtXWi8s35vUZTPIUcX78a2uZkxP?= =?us-ascii?Q?kmapkdYeasHUGaMqdzxsHL0mrSfsBqFXdWnfYLaX1yybGVRps01h+j019MTA?= =?us-ascii?Q?CQBSVWHElJ/H+aLbVBdRn41YRSbPxYyqqp7uiTGaWXxleupOOsEg5zIK0gN5?= =?us-ascii?Q?hTy1fTwgOGEIotKxulfaNP52SOpPqcjsUii3dgG6Rbq8Zz7XsTImGnU6tXzo?= =?us-ascii?Q?xZwtCHLULABa0tIOEWxvRt67dNf+DNWFgfUXSxxHwJYnTWklNem9bypbwixB?= =?us-ascii?Q?L+/N5rZVk3uCCE0wHi1K4TXtpnOlVIFUTIITAfCxoiFpaNOuHnXe2SLnxsI8?= =?us-ascii?Q?Kfj4X1MDqobwpr6BGujvC2HyIJ47b2e6WKKTRozbCADQAtv2Nsh0OOUaNn10?= =?us-ascii?Q?aCNlPn6NCBMnME6OL03dHSqWVJxAm+wIF4QTHFjLI4SxU40MGChnEEBBgsJ7?= =?us-ascii?Q?P3w75Y/EhPyKtkFZCxcNckUuiwZH/0GSVdRJSBMj6BnKRyt8VwRukY1rUNu3?= =?us-ascii?Q?BPytYkkZLhM1c+WIRxgDHtNNjPWGkqjdeSpt4422qGc5VBvHINxC0I6li3IN?= =?us-ascii?Q?bnCYGptu5mfznX0VDMzXpUat7iLaVpuoRAXyulwap86z2wk5VbGBX5hXKz+B?= =?us-ascii?Q?y/zp6ucqZQxV3c5Bw6ydf7kEw+efCq95cAuePvTI1wxFPROV7nTk7wPZE0k9?= =?us-ascii?Q?+RXyVqfVVFxoYasDPj8PWW2Nw6JcZpp4SH7TmYRuNrmvn3z1JNDXzlQwpAH7?= =?us-ascii?Q?2ounF8aH4WG4fEzVZKRcxyy6habSl03+X+dmLQw48MNUbaZX80LKnGBKFrgB?= =?us-ascii?Q?SsvpswQD0XjIeqf4mSEmf1ZrKmno0DW/n4VHfZm0tacIDaDiZw4Slxx3kOaj?= =?us-ascii?Q?rG1qjK/OJKAJFmpSksY3p3YYWZIJ27nMztj7wYS8j2LiFWgInjjM6joA0OzV?= =?us-ascii?Q?p5RAWqrdHBG1BuS7wd3EquaLCO7ehAWrMdhJ2AnvhA1u+UWWarrPQTrSSTq7?= =?us-ascii?Q?xb/36vyieRsmIcilF4DIBAlahgQVa6nMnWb2YTetivAG7f0YEXNh8ZGYdeNx?= =?us-ascii?Q?MRB1JrWLR6D4YsoZtCbe6Tui6s+/VD3PZdeLDYT+Io8TvlFEyicU97w5NTxJ?= =?us-ascii?Q?uGED6lEQ5xWFJFw/ckYb9uAbMkO5f71e5cBCFlBM3af3BoFQtP4PVnHt1yYa?= =?us-ascii?Q?hA1R+CbeiZQP6kJ6jjrSCIA7dPqwqak7Kw7FNe8yKZdDwc5moCSHhGP5D9fX?= =?us-ascii?Q?AETG6HMS6pedEvmUu2PJNkMngB5Nuf39AoZtp/AG?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 648ef2a8-d0fa-4106-9d8c-08dd8e6f10d3 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 May 2025 20:29:43.2405 (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: znoTmpKTXjy8gvJG0ZNWOz0ro4t8En/N6yJas5HxD/wqCMmhs/LWRmZRNqwsVOYw X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS5PPF884E1ABEC X-Rspamd-Queue-Id: 2A38D160008 X-Rspam-User: X-Rspamd-Server: rspam07 X-Stat-Signature: wgaxyrwsuwy6hhdf1oru1m5dekyz8hbd X-HE-Tag: 1746736194-45594 X-HE-Meta: U2FsdGVkX1/qKJhzcqBMFhEVguKey1Enh5hEhD7pYVqXO5y39FI++u1HJMz6DjWiTjaFb3/Rt4/SaAcL0SJrdLXNNkRXA/1eMTD4fAn9egudicIyxzifXeYt3mSHq2puBLkOv2MH14ugtdNko6HHdCcyly9RvsoB56QwJu36lvDXJO+5mDt+ZOLxW/3unH4ZLsT8mkR0Kpf+AK5+EgLsNckHGKfdh0Kh+3iKSmBnpibAg7p4JUZ/0mMI0cEtElvKqnYYhQF+wVmGKK1T8GV7Wbc1L0iza0kqsWygnX/n22bQjxMwY+3qjI+Wgrpk6xrcf2LAUzmf3Q1vFXe5XOGBOKgiBJxCpOPsrr8/BvO6wLiaIsVFo44FlA8nKN8qLi39q8d9tLPz7xJkGZ1tAHt2D1bsoM7gqPDRjgUMwpI7DV0vZPq41eGJH+xikGaNjDxAJf0kirFCZb+maWHNW9wA7YxDOcIdTXe/6QuRT3n0sWJZoKcbf18buVSlnB4X+mjS/9p1iC0CW20gTHJOUPVDgIpdB38+SPQpOXAZ5zsG63AKS754PLmtIOoB617xLIgJTKXeNXPBjAjVl/bK8vMvlQB8rfYxnGrnFLn7zF63Nf4DC7dW6MlCtqdkArpt/cVJZYdS04ufLEg5I1DmxROYFtyxY7+MyHxdX4sYfQjquAADAJ2cBW5ZA3zdQrtOE4Mlt4iQ/c6Qbd9mHBFJ17VzffWr5b2Ae2FW7LqBSZg0PtSAgnjYWK7axoaR+aOrswGPxcLjSnUEtqPA/EBMUgF1F62M827/U6t9bZYlen2EiFtFKRy8B93BTWYmLbai6kH6b/FAouWEaP9UF6E8u9krzhZyYu1UIxX/YJnTrawLuvmukZUGYBJ4KnOeDXtxKztEfcdpYFDO+AfG7ZbjrzIx8RYEXMDg5gl4FIB6cEeKQxX7EyuHuaa3vLTs3k7wqkdWXQ15UR7eOvsLk60VX6g Y043yRyL tNPhU10y6v/CFVu7rmtYvTCWNQsZqI77t0gUhJHCJxSP1o9rs1TKl90LioxRq9itM1RcgyHVueYEPCMsoWXpG+l4owWJyAibfT8JkwAUye8p70y7FlPaNBaZPv/gOYG8nbX1dn5xiydsEYckuNAqOEkyETTcwlDo7UI37RcOCRyo3fAbXtvG1wKC5q0fOU2c181DzOBy2z0IdQk1peZJ+tk6wr179ynCH630kMLkax7W4T5b8bQAkbzple0Gg8ndRmLDcCQrwfKWuEQ4/yCTpluP6c2j8W1uSyHdklU3YeouahyXVmgTqIA78fEe1I4VYiroXAz/GOxOz1U7XSU9xZ+9yDrbOAqJ9Qxnec57AyrEt/JvwTC/8O239uxeZraKtbXVRDUNVsutNwro= 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: On 8 May 2025, at 6:53, Usama Arif wrote: > On 07/05/2025 21:14, Zi Yan wrote: >> On 7 May 2025, at 10:00, Usama Arif wrote: >> >>> Allowing override of global THP policy per process allows workloads >>> that have shown to benefit from hugepages to do so, without regressin= g >>> workloads that wouldn't benefit. This will allow such types of worklo= ads >>> to be run/stacked on the same machine. >>> >>> It also helps in rolling out hugepages in hyperscaler configurations >>> for workloads that benefit from them, where a single THP policy is li= kely >>> to be used across the entire fleet, and prctl will help override it. >>> >>> Signed-off-by: Usama Arif >>> --- >>> include/linux/huge_mm.h | 3 ++- >>> include/linux/mm_types.h | 7 ++----- >>> include/uapi/linux/prctl.h | 3 +++ >>> kernel/sys.c | 16 ++++++++++++++= ++ >>> tools/include/uapi/linux/prctl.h | 3 +++ >>> .../perf/trace/beauty/include/uapi/linux/prctl.h | 3 +++ >>> 6 files changed, 29 insertions(+), 6 deletions(-) >>> >>> diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h >>> index 2f190c90192d..0587dc4b8e2d 100644 >>> --- a/include/linux/huge_mm.h >>> +++ b/include/linux/huge_mm.h >>> @@ -293,7 +293,8 @@ unsigned long thp_vma_allowable_orders(struct vm_= area_struct *vma, >>> if (vm_flags & VM_HUGEPAGE) >>> mask |=3D READ_ONCE(huge_anon_orders_madvise); >>> if (hugepage_global_always() || >>> - ((vm_flags & VM_HUGEPAGE) && hugepage_global_enabled())) >>> + ((vm_flags & VM_HUGEPAGE) && hugepage_global_enabled()) || >>> + test_bit(MMF_THP_ALWAYS, &vma->vm_mm->flags)) >>> mask |=3D READ_ONCE(huge_anon_orders_inherit); >>> >>> orders &=3D mask; >>> diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h >>> index e76bade9ebb1..9bcd72b2b191 100644 >>> --- a/include/linux/mm_types.h >>> +++ b/include/linux/mm_types.h >>> @@ -1704,11 +1704,8 @@ enum { >>> #define MMF_VM_MERGEABLE 16 /* KSM may merge identical pages */ >>> #define MMF_VM_HUGEPAGE 17 /* set when mm is available for khugepag= ed */ >>> >>> -/* >>> - * This one-shot flag is dropped due to necessity of changing exe on= ce again >>> - * on NFS restore >>> - */ >>> -//#define MMF_EXE_FILE_CHANGED 18 /* see prctl_set_mm_exe_file() */ >>> +/* override inherited page sizes to always for the entire process */= >>> + #define MMF_THP_ALWAYS 18 >> >> Could we have something like MMF_THP_POLICY_SET and another field >> for "always"? Otherwise, how are we going to set MMF_THP_MADVISE if >> we want it in the future? >> > > So we actually need MMF_THP_MADVISE as well. If we have the entire flee= t system > policy set to always, but if certain workloads regress with it, then we= need to > prctl MADVISE them. > > As you said, either we have: > - MMF_THP_MADVISE as another flag. The issue with this is we have run o= ut > of bits in mm->flags for 32 bit machines. So either we introduce anothe= r member > in mm_struct (maybe mm_struct->flags2?), or we start using bits 32 and = above of > flags field, limit this to 64 bit architectures and wrap the code with = #ifdefs. > This is probably ugly, but if its ok for upstream, happy to do that. > - MMF_THP_POLICY_SET + another field to specify what the policy is, the= issue > with this might be another field per mm_struct/process. Having an entir= e field > just for this might be wasteful, so I think I would prefer having just > mm_struct->flags2 and use up only 1 bit of it, and the rest can be used= for > anything else in the future. > > I think the flags2 approach is likely the best, but let me know what yo= u think. Sounds good to me. If you are adding flags2, maybe put both MMF_THP_ALWAY= S and MMF_THP_MADVISE in flags2 to make code look more consistent? Just a thoug= ht. >>> >>> #define MMF_HAS_UPROBES 19 /* has uprobes */ >>> #define MMF_RECALC_UPROBES 20 /* MMF_HAS_UPROBES can be wrong */ >>> diff --git a/include/uapi/linux/prctl.h b/include/uapi/linux/prctl.h >>> index 15c18ef4eb11..22c526681562 100644 >>> --- a/include/uapi/linux/prctl.h >>> +++ b/include/uapi/linux/prctl.h >>> @@ -364,4 +364,7 @@ struct prctl_mm_map { >>> # define PR_TIMER_CREATE_RESTORE_IDS_ON 1 >>> # define PR_TIMER_CREATE_RESTORE_IDS_GET 2 >>> >>> +#define PR_SET_THP_ALWAYS 78 >>> +#define PR_GET_THP_ALWAYS 79 >>> + >>> #endif /* _LINUX_PRCTL_H */ >>> diff --git a/kernel/sys.c b/kernel/sys.c >>> index c434968e9f5d..ee56b059ff1f 100644 >>> --- a/kernel/sys.c >>> +++ b/kernel/sys.c >>> @@ -2658,6 +2658,22 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned l= ong, arg2, unsigned long, arg3, >>> clear_bit(MMF_DISABLE_THP, &me->mm->flags); >>> mmap_write_unlock(me->mm); >>> break; >>> + case PR_GET_THP_ALWAYS: >>> + if (arg2 || arg3 || arg4 || arg5) >>> + return -EINVAL; >>> + error =3D !!test_bit(MMF_THP_ALWAYS, &me->mm->flags); >>> + break; >>> + case PR_SET_THP_ALWAYS: >>> + if (arg3 || arg4 || arg5) >>> + return -EINVAL; >>> + if (mmap_write_lock_killable(me->mm)) >>> + return -EINTR; >>> + if (arg2) >>> + set_bit(MMF_THP_ALWAYS, &me->mm->flags); >>> + else >>> + clear_bit(MMF_THP_ALWAYS, &me->mm->flags); >>> + mmap_write_unlock(me->mm); >>> + break; >> >> prctl can take more than one arguments. Would it be better to add >> PR_SET_THP_POLICY and PR_GET_THP_POLICY and specify PR_THP_POLICY_ALWA= YS >> in the second argument? So that in the future, if we want to add >> more THP policies, we do not need to keep piling up PR_{GET,SET}_THP_*= ? > > I am ok with either, with prctl values there isnt any limit like MMF. > I went with how the other prctls are used, i.e. PR_SET_THP_DISABLE uses= > arg2 to check if it needs to be enabled (non 0)/disabled (0 value). > > I think having PR_GET/SET_THP_ALWAYS/MADVISE could be better as it woul= d > work similar to how existing PR_* (PR_SET_THP_DISABLE) works with arg2 > used for enabling/disabling and we dont have any limits for the number > of PR_* that can exist. But also happy to change it to PR_GET/SET_THP_P= OLICY. OK, if the number of PR_* is not a concern, I do not have a strong opinio= n on this one. Best Regards, Yan, Zi