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 0B26BC369A2 for ; Tue, 8 Apr 2025 12:58:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8CA196B000A; Tue, 8 Apr 2025 08:58:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8794F6B000C; Tue, 8 Apr 2025 08:58:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6A4556B000D; Tue, 8 Apr 2025 08:58:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 44EC46B000A for ; Tue, 8 Apr 2025 08:58:32 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 98A34120E85 for ; Tue, 8 Apr 2025 12:58:33 +0000 (UTC) X-FDA: 83310880506.22.4A42226 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf25.hostedemail.com (Postfix) with ESMTP id 2720AA0013 for ; Tue, 8 Apr 2025 12:58:29 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b="X/naku5z"; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=ahLkx5cs; arc=pass ("microsoft.com:s=arcselector10001:i=1"); dmarc=pass (policy=reject) header.from=oracle.com; spf=pass (imf25.hostedemail.com: domain of lorenzo.stoakes@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=lorenzo.stoakes@oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744117110; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=AtUyRE0X4cT1poYcIGnMLYocuPX8x02cTxhfRCRlYpQ=; b=nSw11WHLURazt/hGbw6ZtrCpsPHrENaSbQtbPxhZ49d2HhqLAtlr1PPQEJBYVICdVVtj9w eql2WS1VBaDB1E1cjt6FZf6LWKo+8F5MzkQLFA0nk1ojqwTdf/sdecgYKhYtrpNd44xQlq P45nOm/T00blPh6jnlhBrsWRlmhIkTo= ARC-Authentication-Results: i=2; imf25.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b="X/naku5z"; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=ahLkx5cs; arc=pass ("microsoft.com:s=arcselector10001:i=1"); dmarc=pass (policy=reject) header.from=oracle.com; spf=pass (imf25.hostedemail.com: domain of lorenzo.stoakes@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=lorenzo.stoakes@oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1744117110; a=rsa-sha256; cv=pass; b=wPIbLSaJboHo1XQpgNppFRKWLXguo6wXMqT9Rg+vrNJBLP5HZnD1C5/XDgIGadRxUjidcY dvs50ANePcKLyR2rhyJX/qhUjUezzPNlk/5AEFR0Rprz0kFY947PalqYygJEaPADcyiuo5 TcBlj2Ydcam1CauMnEFW4tw00E/tZmo= Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 538C6pXC021844; Tue, 8 Apr 2025 12:58:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=corp-2023-11-20; bh=AtUyRE0X4cT1poYcIG nMLYocuPX8x02cTxhfRCRlYpQ=; b=X/naku5zXgK/nPUWjak13MvxCa1fg1sw9Q l0J6VfQdQ1cUjV+bWkikfNsQP5dQdQqrqvcL5M+sUaQOr6NJ2Voh89AFOI2+GHmW KaBFHOOQPsmhUex7wk0L8q/sldCPwxSEL+MECeK6cgDIMITn0ic57I9xKWHI53ty p4vrun/NY3zet4pI/GusILu/h+rIGduwe8lagFAJPCL4OjU+xQXVqeRpBojrY0wZ oYENRPDXVDy+GpR7iOgOAgcTxrcQGQVZv7bGUGZtd6at98kN2kS1MVMHjh8Xue75 gV4i2dDkNiHAYILPCNzHU04u7VmBB5BAo6I1w8XCL0O29BLNHyyA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 45tvd9vmh9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 08 Apr 2025 12:58:24 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 538CdGZY021074; Tue, 8 Apr 2025 12:58:23 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazlp17010003.outbound.protection.outlook.com [40.93.13.3]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 45ttyfhqpe-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 08 Apr 2025 12:58:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SWayn/SnIiI4LrHYN4r6MmVv0KLTz3p0PWRKgqJX80PiWTq0wQWNPI0JJs4ZgBb1hHa4T75zcU2f4PjQIsptr1n5HJLN9M0rgNjKBtxnL8WKm0+l/+GKnfOonTCRox99l6cTDNSj92g+mheKjRF5eRnsO5wkswucgb72E/JhMQjgCwLqbqgbz5unZ8dVXJ8WVVsvvfKwARgH4yTgCPVLme07jAEACMRNaP9y3p26tF2IHCIKnTKVVk8JP7EwdF5LnxQWOpsvqwm9tHDkMQxxGCnCqz6x3RikZ7IuwR3+GwdgX2KHTzANnQhrxy/tO5oPkRLr4yZB7R5AeBcm0bX+2g== 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=AtUyRE0X4cT1poYcIGnMLYocuPX8x02cTxhfRCRlYpQ=; b=kzQv+95444VCoPNqKALdpymBtQ7q/UBj2x2uQzAr3vEaU+wuCjZcjRsmomJkLzdVfbuHGv8zYV+0dKSAf56FHmtBX4/dr0R8RQ1DpISe4SdPeYPYksDc9w2jPEGNxxnfssSOawjEOmfYy0xtTGxnqabmvVGrlIxda9F7DCUiTNKyQ8czLvsT1iHOe0F3q/5BP8HFtjT68/Zn36HPS5cggM8kvjsBjVRZuPecYcb/LYhN/wDnDxLVpJiCW/D7L4i/sUB/cXR6YuZIEMi0wWa/F1v37fBU18yWGGWsGt7Dc6PNPBarIk/SHGHRZE4954RlPD2y6X5IPGO0TAGEyNwHfg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AtUyRE0X4cT1poYcIGnMLYocuPX8x02cTxhfRCRlYpQ=; b=ahLkx5csmPSAoYeYKX+Y4no/GmCf9E8X1P8ibtvFIbZoO1wD1SXGZbmt9LF+zBUhuARwNqoYF76iRXEtTx6myvkxgiOTmNzycT6ps/IzRxcWHuJJ/QURHGon75UnHEdzXjbK1ckXUj+/bnHWBbpKIpVbaE3OmamTHMverE7uI9U= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by BY5PR10MB4242.namprd10.prod.outlook.com (2603:10b6:a03:20d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.33; Tue, 8 Apr 2025 12:58:21 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%3]) with mapi id 15.20.8632.017; Tue, 8 Apr 2025 12:58:21 +0000 Date: Tue, 8 Apr 2025 13:58:18 +0100 From: Lorenzo Stoakes To: SeongJae Park Cc: Andrew Morton , "Liam R.Howlett" , David Hildenbrand , Rik van Riel , Shakeel Butt , Vlastimil Babka , kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH v2 2/4] mm/madvise: batch tlb flushes for MADV_FREE Message-ID: <12a8989c-c4f3-45a5-a66e-06ef7c2ef876@lucifer.local> References: <20250404210700.2156-1-sj@kernel.org> <20250404210700.2156-3-sj@kernel.org> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250404210700.2156-3-sj@kernel.org> X-ClientProxiedBy: LO4P123CA0627.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:294::15) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|BY5PR10MB4242:EE_ X-MS-Office365-Filtering-Correlation-Id: e1949e5f-ec64-44ac-e8ba-08dd769d0a23 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?zXK5n0i4oCSku0PNdsBjkJgP+CgHiolAavQfljZY/JbQZsZLdi/GIUYnE9gG?= =?us-ascii?Q?m8soImAnj6dtQhBJ+4FE8HS8C+XpiBLJ1NYr5x+dlVsKGObrrtDQd/PlQsbc?= =?us-ascii?Q?wPv0uhltNxCotrPgFGksgNotIev4XGIcgu0/9RpQ8ZE+Mcx/QzkvJ5/seVeD?= =?us-ascii?Q?H9qvlsUeCE+0KIToQmv04vbGHg7KsDnfC1iz6s8RK6J/3Y56lZktosAzJI+h?= =?us-ascii?Q?0XGLAkuo7BacZrhVqBJtxls3RLyg/5Ywd2qsntrsKYqrXed7CcdRsJQWqrAM?= =?us-ascii?Q?WL20mcGq4UtNPXHBclNsY4vymG76tXlOV2WIqTfKTciCtRqF756SYkN2QI1n?= =?us-ascii?Q?CVMQvUn+RHDFOpJTUJwcwywY6NH6E7GO6wL8tT6TVe4QBzTENp0hPIJmNeyC?= =?us-ascii?Q?0REqw77TDh6QzlldP2A7V0roBAY4z9THZRIr4X/z7MwOsLIBcDv/7r0ICAgk?= =?us-ascii?Q?f6Bvg7Xps2v1bjZVrJG/CFLrMuZ/hloDxuDz6hok0QgRfTzC1CrVCuHAf+gf?= =?us-ascii?Q?N1uIo366QIsnC8WMlt1Z1w2tlmJdCgcDtzfKWTMWsyWNkjuyjsWBZI5Sgo7L?= =?us-ascii?Q?1BmhlqnJ9ZJXHh2ExM8lQtPqNJQnmqrd89naWjOycc2ww4i8ikp/7yR5DNp0?= =?us-ascii?Q?75IlgGz2uufVQNd2KphzwZ2eG8AmGD2j3TgS/GB/AZfVe39Isop0EurHNDjm?= =?us-ascii?Q?Io+9w73ojCpCWvcYjpZwCZu6MfTYRkqiXpztGXa8ePd3hVGnmNhZgsDMJhH0?= =?us-ascii?Q?MN8RTZPZaVU9dq0mchoh0GlMimvyMeW+vYmgPkfDkSA9FfZ7IBH2Eq44Asn0?= =?us-ascii?Q?d4P4cQgF3wpClj/29tHEc7WAPoaj6DkIfiaL3Ng/XCrgCoHsztvgHmFXqOIm?= =?us-ascii?Q?6sc2APD+noSCf0v+AjZynLIJMhoQ7/7H+jQbxia9x2XUZvnFQCBUlkP2oUVA?= =?us-ascii?Q?NQymtBCBDACdHOAihIzLAvjyL276Gy2+N+NsaRVSsKDhipYHfRaISZJH1ZYq?= =?us-ascii?Q?DyVDAgN/ehXLlzQM83un/OS1/EPVtz/6n9tjKuaEhezrsRyzUrP4rr8TzHGk?= =?us-ascii?Q?ifTi6LHbvofSzRAuYpacrWm6POryCCatpmfj/J1W/uTgojCTVEv5N5eKp9JI?= =?us-ascii?Q?SHuME62GjIPBCl+4zblwW5byt4SlEYNQueZtPV/jk+5mtVPBHpfsCFE6pG0J?= =?us-ascii?Q?asP8SIn0SofNGXxOGmR44QUfs1RlMp6CBQUuRAPj4S/VUwb9fUBIJhYsbJqZ?= =?us-ascii?Q?rAcN8RkQHWcdF53eUlF9sNjF4KoA4YLdVPsObU+jzy6v+xxcSuouDXEuAxjy?= =?us-ascii?Q?SZnWB2E4tGfmG82tPUC0nbm8S7qSzJ45GdnxMsLmdTbIK/qN8h3u8lWDKbnl?= =?us-ascii?Q?MHvfi6Ew/hbnEByIUEPMCyYXiGT/nbCavCYakxZyqDerwurBOA=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?msLBtEXVWKB9BMXcut4Bwt39WBV6fmhMHxtxETsjkEPbdhBjN9opq3vK8U6Z?= =?us-ascii?Q?Lw0fYHPu4AexAcBS6qQu3wVj3JEQ/Mi470nJ57D5QiDX27dtO+BY8agyoBFb?= =?us-ascii?Q?FYKZpGyX9dPwo9Z9+vS1WZjObeDweAaUIMNeK5NIFevZz/niLUWokesGsrJ3?= =?us-ascii?Q?sGmyW5nYt8dMBVN3EtipluuBhfotarLPqRpt0E/4GpNMp55Ua8zRY8xj8Poa?= =?us-ascii?Q?mYwvTSSzGTjzkwyIDW7v8Ca1QKAeb6YDMDC5Z4Z9ggzQIkU4R0iBW6SJpx+B?= =?us-ascii?Q?2D+eIgxbWUKhFJ7yi68MXnTFBBOLo22FEa378QnXyCp+Q5+SRuZe51qPeJvw?= =?us-ascii?Q?fdZHgfhRw/T61QqKPoG5CCGBLv0AitIXjQnVRkiCXCekq7Tp8p4nUdSVeifz?= =?us-ascii?Q?L3eeiB7Ejcv2gWagI3vZaA/CbsMH2tkEHzU/ZSPl3HW5yZh3T2z/zddjMwka?= =?us-ascii?Q?shp9wH3Fr85Erl4/4+DxmXUEo3xweOgmUVT9DqV2qiPLLg0FDfJtxWNcD4/z?= =?us-ascii?Q?c2LuseM7IRt7p7NAHpbaPEMVMlSwCE/26JuLtjNGemqOfIES5YHzUbE5wnWy?= =?us-ascii?Q?7LL5tMxl0+463RgkewfZoH000+xzj87K0UICFOETi5sbwyW+t6Y15BoVp8N8?= =?us-ascii?Q?Hu6EWos7KiZPMmNnbK9307w5pKqCSabsNFJ0HK0+8Mw1uQFrFcFefvbrm9Nq?= =?us-ascii?Q?f0/TDf2ZS237KtYdTQnT2iXklJ/ND6MmKARe4y+1PTWciM8m+tjPriHHVqtr?= =?us-ascii?Q?Kh++YcWqFiosSerzj1or6UrL/YYy8trJgOgFgApGtiAuWXkr7F+ggqJJUCWd?= =?us-ascii?Q?wuFFztdE1xTzWA7adjYZOPfqowQNZqeafYPdB3ZK7t6HjSK4J0kVYnx8giU0?= =?us-ascii?Q?i+umxLgesJCsPBSoxr9KNuMLnCzFqjP7VBNQpOhxLrWM4PAMu3D5e4nAsePS?= =?us-ascii?Q?+2TjS75LkgNNMeS+8eoxcA0uApnN9jaxtYu0vl6ebA2ilVLqE8qXo+r7Uhvn?= =?us-ascii?Q?2QbOVlKil7qf0l2ksS8gqRMXOcu3Z5DRKivPAH947RC9MIsj0XiC2ulfWOOJ?= =?us-ascii?Q?YGQi7LYq2ONH2/uzc4hFtH8A+/dwypBlIRHjcuj+XDveA4nnJLKPEV+bLptM?= =?us-ascii?Q?/1iVSGCdi9jlpHCbmS9tZbiWIwk8NF0qCDLKKVFIkLfxyoCoUXpIM8HCzlEb?= =?us-ascii?Q?g7GJV9xhipRaRbAdd2b6+cIelPY81i+v3QBKUfh6YPex/oAdiJZIS0Ta8s62?= =?us-ascii?Q?gzsyfbXdKYNJSkWXIR1jvBGnAa1QYPlRVR6mteo6iUQPu+dNsvLqf3qG1oK/?= =?us-ascii?Q?Sj/xWUH7egN879siAkzCrnLd/1tlLhOPeT1Ifbds4MRbteH2Tsn2+1NOd/vJ?= =?us-ascii?Q?4q5iKgIxX0unU6/W0dlJo19X1jMc9BkeZrATJNMsvGSvvqIFKe5gNCCSkDjF?= =?us-ascii?Q?lO3TWN9hyOgGkf6nvrcLpGYaZ4U2Ay2N27YDdSmLWUkCv5+bvg+lvYLA1gNG?= =?us-ascii?Q?7M+sLL6kzIwGOZDsGuYkqTaz6daUvzu8qSgWeXMwEGrD4/XPyhauX40VCpMb?= =?us-ascii?Q?uNuqQhjfl39B41rU3TyRgfnos2aVH76FJgbF3hNrEvcawfxw8rlaexxxzqAj?= =?us-ascii?Q?7Q=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: MAnjmphlRpOUHmMFyxJ8/o1QjsDJ6fonNMfxO9R+4x+EtGpU0HfPZj7yyjnRT8rOJkYLRKXHPerMuHG5wb8XRHbwgTSQ5gPwq9q+RC/pGXGG+ofeUgxaopOg+SVzcNqRIJfeo4OiO89jgxhDnysEInFhhYNeTCR4FomibrlcK6hINa++J7IfXJT7sFXNqWy1ZYEYkmRloGX+GYRXlomA7/ri2zwbgskRd6aPSg3MXuYWMxX4s3FBfjwou1UAHPRCK0/58LxgYkvrrf2QozqwDX4W45DaAD+TTRdsW2ccEY7xOSaR617sxYk+6cs2azdckMFzDjGpuJvEsBwuI3Wt8q+L0Fl2qsCzVFgAgtUxgmIz1vDRmOaHxe897+OR+v+ub8ErXFVPiDUsLIPr5DSTw9X4qaaCaHVvh2WIo4QHccBnk3fC+3FPV6spnipjqJ1bVeVGQ6A74hxMTx4Yo1JKhiUYk78yhyJrAvW0GSSVB3ZN0WiY8qfUXlZw446eU1HR6RD2k17scfCOSsQNZbnpa2bMt8lOYCsSADzFAUfHjcQ/buDMdr6yJEwYerDEt1WVRJ5dqYTz9+KhtVGuPp0gXw9ZbYbn5wQ8AqtNkmDMsXg= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: e1949e5f-ec64-44ac-e8ba-08dd769d0a23 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 12:58:21.0914 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: uZpiOFSKX7Vpb9Ydr32aGooO6yaafCuJKlk8duEaLh4ebeB9m1q9wc+1AfldK2KjYpIBd3kFsh6kL+LjbxT/V80nnNO6wav9cZ4znH3tQIs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR10MB4242 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-08_05,2025-04-08_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 spamscore=0 mlxlogscore=999 phishscore=0 bulkscore=0 adultscore=0 malwarescore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502280000 definitions=main-2504080091 X-Proofpoint-ORIG-GUID: mjj3MhFv00pKeImx9zEMi9elgfg_vWN5 X-Proofpoint-GUID: mjj3MhFv00pKeImx9zEMi9elgfg_vWN5 X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 2720AA0013 X-Stat-Signature: 7jiftu6abmasjh1ayogutdckc3hnc7mf X-Rspam-User: X-HE-Tag: 1744117109-564406 X-HE-Meta: U2FsdGVkX1/FvdAJfQUn17k9dz197roLdezX/0kLlK/qYsX1dsvF8IgtJLA2RFQDHm6PYrHhLaqO3fOkpgx7or3keepXLvLu7smu4PLHl74J7UAQE1wXZVEF+5EmrWTGb5Hr2HwhV8ShT/QtcIUppK2X8qKu4IfSu9hVIz7h+nMMTn501s/8EhfVhgsWrshi3GMjG9ohmDUj2+R2MXpzczrj0DcWcPtEsAp3g8/1EFaNInDx2QtmNW/t346NMvWu0zZ2f2zG0Ti24NeC0flxv+8DsppyY4kti7if6Z6cOSxR7EOmtJLRtL3q9Z69wBz8fHzZ6U8dvGM8ksl0qDiRA9Z+yGYCEFtXKa+Hv9+5MaaNVnZy72HJuaoH4SRUGuMJn4RLl6ugvDziMhzIvH7xaPp+t0tGYsNyd738T1Ta+RbTaOW0urywjRTVc9GvDjKp/qfPiuPIZmzscsQf5Xg2Yzl9jwzwnAFe8iq5r5sEOddgIS4dQcbrecLUvUQdnG5g4GVcl1ce1aFbsRvA2Q0dHgdUQ5oQj+vRApRrG2F85NdTfU9shwE5fF+SjhGHJ09BgmnNlZvJsmoSxpMi8Cg4OSkhGEfadJrpQvY4B54uGQtaq+6PlzC40Nh4H4E2XJ5Qr5su+PLHRmdmHWtsF6DJSDWrr61s5iH8hqnVAhtb4+i5m8WAd+K4r1eMk4mnaovnw/2o9p/y8G5k3ts9XsHzVp1CVsl12VEGRrzfPUR9YNgJ5EOjeYElDotCIWqq8YE3DNC9WazeeH1RX3mun8EvKChv3vYEqV5UFAJgtSqisoTq1uvNE3abTCxVz9SuhTx0D1hZGJmtAMEj+xk0UKh2tTJEwE7mwL+XPD8bedIbH8O533MpJLnMx8LJu1aU1quy2ngtVKtKlPLDTTMJmWsVwbSckOvnmkvQhEe6bKhsSHsuk7gOrSi9m311YusdCVY6jCl5/ST15FWdt8XSgFX z2VqQCQH 8q6klwNZ3tWHvHA5gnA9Q5HpfIU4100lLn02Za4je4D439hY54juks9jiTeBL/rE57J6Hgd11sfK+IxJkEdmgk/YsoBzYwghThNxMNTZtN1XjCAWKl4vV4QsHSmy0+ZxmlhI9AEptHPMSGYZZnG/xi/Zvj4t9yR7hSlkp52OBJb3mTiKUq3eimhaEwcrgkmVfrLYwtRc4mwuZRLoHZQ0GeLtU1oCW2cUlrSleKZ/dKHwCBmniqYGLFUdaHqb/9J1AhWNSB9X2tgkqAyETffFtkdmAXGDmNFRnNRCR3B8MoDG5x+/Y1G0G/lq5pJM0jI8QMx8ttrNtKG3Sp4Bl/XQSZfb69RSBNVtma9/DgGdlXWT6RjByY0nbu+7Bc34S9SgbplZj2KF1XkfzYxvCW6L1tAsaVEkinnC+VDm+e/uAy7Va6jVQ5rIU9Un8VHRyMw7sEr23A3eVck2XzW0174qVmMFvPGhAip9eefU7CA2G7Tx0M1DAADMoJ80YkVk/kbd42Nz02wg7XXbzCSHf3E3MT4tpTmgXes32c64fTX+F6wBheHsgmJPKmVBtAyHuvuAuGaWNfTtbXb/zMxb4ed7HAq4wA7Kc6cO8VxpEHVdv/zvBGOQi+pB0BJH8675YtMKQTe8syfN7TFbbtqJvfHv9hlDbY79gIgRbKuyskbcv6NpzvRwHrzDYCQSIaw== 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 Fri, Apr 04, 2025 at 02:06:58PM -0700, SeongJae Park wrote: > MADV_FREE handling for [process_]madvise() flushes tlb for each vma of > each address range. Update the logic to do tlb flushes in a batched > way. Initialize an mmu_gather object from do_madvise() and > vector_madvise(), which are the entry level functions for > [process_]madvise(), respectively. And pass those objects to the > function for per-vma work, via madvise_behavior struct. Make the > per-vma logic not flushes tlb on their own but just saves the tlb > entries to the received mmu_gather object. Finally, the entry level > functions flush the tlb entries that gathered for the entire user > request, at once. > > Signed-off-by: SeongJae Park Other than some nitty stuff, and a desire for some careful testing of the horrid edge case that err... I introduced :P this looks fine, so: Reviewed-by: Lorenzo Stoakes > --- > mm/madvise.c | 59 +++++++++++++++++++++++++++++++++++++++++----------- > 1 file changed, 47 insertions(+), 12 deletions(-) > > diff --git a/mm/madvise.c b/mm/madvise.c > index 8bcfdd995d18..564095e381b2 100644 > --- a/mm/madvise.c > +++ b/mm/madvise.c > @@ -799,12 +799,13 @@ static const struct mm_walk_ops madvise_free_walk_ops = { > .walk_lock = PGWALK_RDLOCK, > }; > > -static int madvise_free_single_vma(struct vm_area_struct *vma, > - unsigned long start_addr, unsigned long end_addr) > +static int madvise_free_single_vma( > + struct madvise_behavior *behavior, struct vm_area_struct *vma, This is pedantic, but elsewhere you differentiate between int behavior and struct madvise_behavior by referringt to the later as madv_behavior. The naming kind of sucks in general though. But for consistency, let's maybe rename this to madv_behavior, and we can maybe do a commit later to do a rename across the board? > + unsigned long start_addr, unsigned long end_addr) > { > struct mm_struct *mm = vma->vm_mm; > struct mmu_notifier_range range; > - struct mmu_gather tlb; > + struct mmu_gather *tlb = behavior->tlb; > > /* MADV_FREE works for only anon vma at the moment */ > if (!vma_is_anonymous(vma)) > @@ -820,17 +821,14 @@ static int madvise_free_single_vma(struct vm_area_struct *vma, > range.start, range.end); > > lru_add_drain(); > - tlb_gather_mmu(&tlb, mm); > update_hiwater_rss(mm); > > mmu_notifier_invalidate_range_start(&range); > - tlb_start_vma(&tlb, vma); > + tlb_start_vma(tlb, vma); > walk_page_range(vma->vm_mm, range.start, range.end, > - &madvise_free_walk_ops, &tlb); > - tlb_end_vma(&tlb, vma); > + &madvise_free_walk_ops, tlb); > + tlb_end_vma(tlb, vma); > mmu_notifier_invalidate_range_end(&range); > - tlb_finish_mmu(&tlb); > - > return 0; > } > > @@ -953,7 +951,7 @@ static long madvise_dontneed_free(struct vm_area_struct *vma, > if (action == MADV_DONTNEED || action == MADV_DONTNEED_LOCKED) > return madvise_dontneed_single_vma(vma, start, end); > else if (action == MADV_FREE) > - return madvise_free_single_vma(vma, start, end); > + return madvise_free_single_vma(behavior, vma, start, end); > else > return -EINVAL; On error paths, do we correctly finish the batched (botched? :P) TLB operation? > } > @@ -1626,6 +1624,29 @@ static void madvise_unlock(struct mm_struct *mm, int behavior) > mmap_read_unlock(mm); > } > > +static bool madvise_batch_tlb_flush(int behavior) > +{ > + switch (behavior) { > + case MADV_FREE: > + return true; > + default: > + return false; > + } > +} > + > +static void madvise_init_tlb(struct madvise_behavior *madv_behavior, > + struct mm_struct *mm) > +{ > + if (madvise_batch_tlb_flush(madv_behavior->behavior)) > + tlb_gather_mmu(madv_behavior->tlb, mm); > +} > + > +static void madvise_finish_tlb(struct madvise_behavior *madv_behavior) > +{ > + if (madvise_batch_tlb_flush(madv_behavior->behavior)) > + tlb_finish_mmu(madv_behavior->tlb); > +} These are nice. > + > static bool is_valid_madvise(unsigned long start, size_t len_in, int behavior) > { > size_t len; > @@ -1782,14 +1803,20 @@ static int madvise_do_behavior(struct mm_struct *mm, > int do_madvise(struct mm_struct *mm, unsigned long start, size_t len_in, int behavior) > { > int error; > - struct madvise_behavior madv_behavior = {.behavior = behavior}; > + struct mmu_gather tlb; > + struct madvise_behavior madv_behavior = { > + .behavior = behavior, > + .tlb = &tlb, > + }; > > if (madvise_should_skip(start, len_in, behavior, &error)) > return error; > error = madvise_lock(mm, behavior); > if (error) > return error; > + madvise_init_tlb(&madv_behavior, mm); > error = madvise_do_behavior(mm, start, len_in, &madv_behavior); > + madvise_finish_tlb(&madv_behavior); > madvise_unlock(mm, behavior); > > return error; > @@ -1806,13 +1833,18 @@ static ssize_t vector_madvise(struct mm_struct *mm, struct iov_iter *iter, > { > ssize_t ret = 0; > size_t total_len; > - struct madvise_behavior madv_behavior = {.behavior = behavior}; > + struct mmu_gather tlb; > + struct madvise_behavior madv_behavior = { > + .behavior = behavior, > + .tlb = &tlb, > + }; Again the naming is kinda yucky, but let's just yeah for now stick with 'madv_behavior' for values of this helper struct and 'behavior' for the actual int value, and we can revist that later. > > total_len = iov_iter_count(iter); > > ret = madvise_lock(mm, behavior); > if (ret) > return ret; > + madvise_init_tlb(&madv_behavior, mm); > > while (iov_iter_count(iter)) { > unsigned long start = (unsigned long)iter_iov_addr(iter); > @@ -1841,14 +1873,17 @@ static ssize_t vector_madvise(struct mm_struct *mm, struct iov_iter *iter, > } > > /* Drop and reacquire lock to unwind race. */ > + madvise_finish_tlb(&madv_behavior); > madvise_unlock(mm, behavior); > madvise_lock(mm, behavior); > + madvise_init_tlb(&madv_behavior, mm); > continue; Have you found a way in which to test this? Perhaps force this case and find a means of asserting the TLB flushing behaves as expected? I think we're ok from the logic, but it's such a tricky one it'd be good to find a means of doing so, albeit in a manual way. > } > if (ret < 0) > break; > iov_iter_advance(iter, iter_iov_len(iter)); > } > + madvise_finish_tlb(&madv_behavior); > madvise_unlock(mm, behavior); > > ret = (total_len - iov_iter_count(iter)) ? : ret; > -- > 2.39.5