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 874E0C5B549 for ; Fri, 30 May 2025 09:54:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 20D9A6B00D3; Fri, 30 May 2025 05:54:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 196C16B00DA; Fri, 30 May 2025 05:54:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 00F7C6B00DB; Fri, 30 May 2025 05:54:36 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id CD4826B00D3 for ; Fri, 30 May 2025 05:54:36 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 5FF2B140170 for ; Fri, 30 May 2025 09:54:36 +0000 (UTC) X-FDA: 83499114552.05.B1BE06E Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012051.outbound.protection.outlook.com [52.101.66.51]) by imf11.hostedemail.com (Postfix) with ESMTP id AC88640002 for ; Fri, 30 May 2025 09:54:32 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=arm.com header.s=selector1 header.b=fYbUrPrV; dkim=pass header.d=arm.com header.s=selector1 header.b=fYbUrPrV; spf=pass (imf11.hostedemail.com: domain of Dev.Jain@arm.com designates 52.101.66.51 as permitted sender) smtp.mailfrom=Dev.Jain@arm.com; dmarc=pass (policy=none) header.from=arm.com; arc=pass ("microsoft.com:s=arcselector10001:i=2") ARC-Message-Signature: i=3; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748598872; 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=KOJ9uis/vC4vjKpxquM6xCaCetVrK4K2ZSHknJO4Txc=; b=i4xBwgY8fnRMNsPCm8CTOhZb2UMMayARiFWJ5+dt5cjMmQrub2qHcxOzjMhHilJ43z7c0h GCHNRKPsOTsQkCYUVaVK23o7SpjLDtifXVU1LjVYtEhd8DA2JvHseIWehZdK5s4IvH+Q4o hWUZhagtjV5M8WjjwggU11HY73vHfuM= ARC-Authentication-Results: i=3; imf11.hostedemail.com; dkim=pass header.d=arm.com header.s=selector1 header.b=fYbUrPrV; dkim=pass header.d=arm.com header.s=selector1 header.b=fYbUrPrV; spf=pass (imf11.hostedemail.com: domain of Dev.Jain@arm.com designates 52.101.66.51 as permitted sender) smtp.mailfrom=Dev.Jain@arm.com; dmarc=pass (policy=none) header.from=arm.com; arc=pass ("microsoft.com:s=arcselector10001:i=2") ARC-Seal: i=3; s=arc-20220608; d=hostedemail.com; t=1748598872; a=rsa-sha256; cv=pass; b=Yg8DEPBFVd1pnBdXEWhM2J5AWod+wUAbJ527Y81s4fG+kVRhZ1rZ/bi/8hgdHqtk+geMFO efM3f9zWtKx68eGqDRv+PjmselQxnnuelaiAkyy1jWWUGYqaLdnvCiRbqpXWlqJjoK+yns 4ADlr+Lpz+tSpU42q0CdcYJtERUjNKo= ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=JUXYl7lzgFK8F4xTLlbj8qpqo1AJ8tnfDWZh+beP6znpzoMnn56gIxH/ueshd0wtV2bTmyQy6n7e5gnbWE/RkZIddVGvs+27f0nFi8/7M6kXInmVGKREaUea9CAyfBfys9G7yRCoX7cktoMTxOWxojCJSLsx2ZoY5t5AWnA3e1Zb+qXOXcl95IaaDPEZ+Ys8liXr3VGBzEd7nHCA505QizZw2wBfaybV4X6lgrd1DSPA2BYIPuatOoCiKFcY8I9nYTcxvwpvg2xq+OBRU8Iwdgrhmh8dO8sVJ3BG9u7zSyLj2QUUp1M+RAIIbB19+ICPQ/ga3B9Ycvr7s4bwusNyfw== ARC-Message-Signature: i=2; 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=KOJ9uis/vC4vjKpxquM6xCaCetVrK4K2ZSHknJO4Txc=; b=cERMX6BS8L9k4xcPpYyp7zLQP+y4vpMM8Udp1Pzy9zTU65hJ1NwfYNImAsSjbeEPIiqRdjHK+WIWdXwLVZBAiY2NwTmzxfZmnsCjfLpbKU4GEk4qDYb7VD9hasJa92POQiXpUHPlGUNgIZRtmU+xZGtJMBTatXmj5BprTJ1gVVBQxwMr0T2VEdz/nilIvZqHm+IwDygyW+vEfVsBTMUfOy2R1+TTcVIm0jum9r03HL1gnBnMDRgSzGvPBh/pQ5qhM1xgwC9SUqVnZr42Bus5c3MMfQ5ionTaZmYh6jQkURmEEVANz4MOC9vW8u7YgeiHO3JLGW9b+JtoSJeK3ygbiA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=bytedance.com smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KOJ9uis/vC4vjKpxquM6xCaCetVrK4K2ZSHknJO4Txc=; b=fYbUrPrV0xtsz8l9xvAvgGZUvL/Sxp63AXAp9ymh1b8jdsGKzqrJnKvk/rt7b0+hkEA/mdrO6V1U2AdBx7atgnqV13pyXoSsMhb+vHKqxv6WVCoa3D4mQb9bebLM49F54jU3KDpzCrZ0yN3/2ZkGGZBcX/HBGy8k6o2C5wmR2Vw= Received: from PR3P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:52::35) by GV2PR08MB10355.eurprd08.prod.outlook.com (2603:10a6:150:de::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.29; Fri, 30 May 2025 09:54:28 +0000 Received: from AMS1EPF00000043.eurprd04.prod.outlook.com (2603:10a6:102:52:cafe::17) by PR3P189CA0030.outlook.office365.com (2603:10a6:102:52::35) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8792.23 via Frontend Transport; Fri, 30 May 2025 09:54:28 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AMS1EPF00000043.mail.protection.outlook.com (10.167.16.40) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8769.18 via Frontend Transport; Fri, 30 May 2025 09:54:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CX9C8UkBZ/N/CIfee72KsdVGC3tXVJIbvM9nevRbhRQ7pNiWMc/6H5IS1e8zbMrfkQrFnT1grhN6XWUFpBneyx9qo1I804VGkJPWeOU/sowNctaMkS6OfU8uR1CWcyqV2vw6hshaaBLGVpCvgKaNxEhR/5tWm3b7Bo6zN451IJnazgg6KKw/LpDjjRtZPCcGXD14xF8H4NkiHw1eCZpC5k9YyjlN9/+YFh7HW4YUsllo45TQcKAY3EnoVf6mmjTigleDaB0+Gz7QdlCKo50jOzZW9PkTesmEKXEyKq1344UO/iSyWmyY4ErIT/3iMBZi5skux+u3MQ5qkLX/c97qfQ== 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=KOJ9uis/vC4vjKpxquM6xCaCetVrK4K2ZSHknJO4Txc=; b=AtaswlARF2ZzY0NMqjqLphEUwrxi9w0mKoWiYZ2H1p7/BZQYmGk4rhLfvAyLHYpaW/VPCTUmkIN7NiRXlE2lFFJormLssHZwUvo4cDuEP6ONZ2NIuYN/pMKO+0ouUm+bIPETcCc/z2eGOHTCa793TU3bZSFrfaEE+cSI/M2z+rL2s8yOE5xRDSu8FLJ7TFJ25RSUlpneW4NtNZsP7eJF2AV/FxpzOy5QnGWBB8FTG+VLn4UEd31Af0n8w5vvg+62+SfMs/EvtyHmm9XXg3I4isv4hl5K5AAthdYn8nTrW7RplCaWwbBD1Pi5Ah3b4tD2Tw+ZqaLoV1j2hpeZU74mXQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KOJ9uis/vC4vjKpxquM6xCaCetVrK4K2ZSHknJO4Txc=; b=fYbUrPrV0xtsz8l9xvAvgGZUvL/Sxp63AXAp9ymh1b8jdsGKzqrJnKvk/rt7b0+hkEA/mdrO6V1U2AdBx7atgnqV13pyXoSsMhb+vHKqxv6WVCoa3D4mQb9bebLM49F54jU3KDpzCrZ0yN3/2ZkGGZBcX/HBGy8k6o2C5wmR2Vw= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AM9PR08MB7120.eurprd08.prod.outlook.com (2603:10a6:20b:3dc::22) by PAVPR08MB9554.eurprd08.prod.outlook.com (2603:10a6:102:313::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.32; Fri, 30 May 2025 09:53:55 +0000 Received: from AM9PR08MB7120.eurprd08.prod.outlook.com ([fe80::2933:29aa:2693:d12e]) by AM9PR08MB7120.eurprd08.prod.outlook.com ([fe80::2933:29aa:2693:d12e%2]) with mapi id 15.20.8769.025; Fri, 30 May 2025 09:53:55 +0000 Content-Type: multipart/alternative; boundary="------------pvUEaWTIuU2FTVrjrfxATBVf" Message-ID: <7684103b-8c06-4f6d-9e8c-da0267a83bf0@arm.com> Date: Fri, 30 May 2025 15:23:49 +0530 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] gup: optimize longterm pin_user_pages() for large folio To: lizhe.67@bytedance.com, akpm@linux-foundation.org, david@redhat.com, jgg@ziepe.ca, jhubbard@nvidia.com, peterx@redhat.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, muchun.song@linux.dev, Ryan Roberts References: <20250530092351.32709-1-lizhe.67@bytedance.com> Content-Language: en-US From: Dev Jain In-Reply-To: <20250530092351.32709-1-lizhe.67@bytedance.com> X-ClientProxiedBy: MA0PR01CA0111.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:11d::17) To AM9PR08MB7120.eurprd08.prod.outlook.com (2603:10a6:20b:3dc::22) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AM9PR08MB7120:EE_|PAVPR08MB9554:EE_|AMS1EPF00000043:EE_|GV2PR08MB10355:EE_ X-MS-Office365-Filtering-Correlation-Id: 1e9d8463-7e34-454a-7e57-08dd9f5ff748 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|1800799024|366016|8096899003|7053199007; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?6YbfxmsoY76QnGa1LUGu2uj7CiX7mbKgYZxoUluKIPJCDyROkzxYZqpMuJoj?= =?us-ascii?Q?T/HyMArR5nrhHprZSnoQceU+OrqvOr7/xVxqp1LNzAZhuW31mVgAAxVOxLi/?= =?us-ascii?Q?dVo1kVWivaDfStl0qhqB0nI04aHJ478nsz6zkBm/1QTItlC9TLdqrFJBTvql?= =?us-ascii?Q?BugJDqaRn2tDvbM5rm+clgDcIvlMK+P8tRv4lRj0+s+CjI4BErH+4Z+wqK4y?= =?us-ascii?Q?YN4Te6akiUbqp+HpNcClvAh7kfRskVjuNZvIaxBBnibuFUYQ0E4uMHvYxLCr?= =?us-ascii?Q?/kWDCs0+PBecnRkWfFMiq2yiBOyNRHPcJ8S0iMG5U0XoaVrQEubbVEixuz7f?= =?us-ascii?Q?NlGjqUEH4XTTGCvpxxbonipU3rYYxY6oiSDyF57cojr3ytAQdWSnBb0Ob0Pf?= =?us-ascii?Q?440ibImxDA8VuHb9W2R1TP30U77ckE1ImynGtPS3zM2uq/0V/NG4Ext5eiZ0?= =?us-ascii?Q?wP+CYVq07Gf8vIxjo+VnWZ8iXyIDyItcJXSwxogkXftJ4p1TdjqOTw1XXCA3?= =?us-ascii?Q?8lSjoqtf5DEWvoRcyDzx/LmRyUrN/4/6Xwa/CQs6tGSI2TuFnPr2TqUkfYLo?= =?us-ascii?Q?BUSCtYo+gi1esNBzYXjYvsNFn73r2dtkAzfqb8icMz0E8M3L7+piEkCFzryN?= =?us-ascii?Q?WytyZScuxEFKZ83sftoUy8MzamoRL5BlvPY17WRMmoGeRuKCyS6RIfm9foTK?= =?us-ascii?Q?YH+8mYf0lL0cOJsc79N6ukc5NHMMx8zVICbGQk34AdNzgKMsm6d87kQdM07u?= =?us-ascii?Q?5cPtHpBfbUGyqneFeaiXFYzffcn/bgf2Q67eMX2nWzVAMp46kneKMUttPyPs?= =?us-ascii?Q?79fVt2+WOXJAem4PJ1u3EUxR5grw6u//GrM+ajZB8pq1EIHh7iJObA3tC6NP?= =?us-ascii?Q?0tp5bzfJPlzcO69ugI0JwMz3dHR+Wda1su7uNwdNnFLOW9XD/edy895BP9kQ?= =?us-ascii?Q?EZJOZcGwUbrRS7yEEGQS5+ahaxw3spYINkV8QwyarR2GBKEtxquAGSV14XnU?= =?us-ascii?Q?znvCwslRV5VTOaqiavXdyZS4lRJio2AJHYaQ+oCnrQ5oR6PY+23hpwfzZ4jv?= =?us-ascii?Q?JvHSCY6hW73PpGfsp80/g8Y1n+Y3BDZXGNPzhtgJKJ8e7r+M6xlxqMFlE6+g?= =?us-ascii?Q?E1+QZ7YtUnXx66rZhVJurobjMhq2OE1IcMXrcZuFQgXpbzXX86k6L0TwyNaN?= =?us-ascii?Q?zp7lTDM00A0D44uIPPkt/muPQYkRnQKc33BB3zjjoj4f6YC9yISIu+Bc34Oo?= =?us-ascii?Q?FG6YmdfOHU7TzeTmswF6EwA8+r3q9N8QzrapiJ5FhncFGrUCxJ2MEz1pbEWQ?= =?us-ascii?Q?MvnX2Zlr9xASRtVAM9PLi408AU+hukn4O6FcU1UMOqVeKacH2u2o5z0/EjmT?= =?us-ascii?Q?bwLIYgVehiiRG0IuVYOhvQi4OXzNdJC3Wgp3qM5Xl8s9RRIvkOea2dSWbkTe?= =?us-ascii?Q?sVXr9PUzn9I=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR08MB7120.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(8096899003)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9554 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS1EPF00000043.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 9114226c-abc9-437f-b80f-08dd9f5fe3b6 X-Microsoft-Antispam: BCL:0;ARA:13230040|14060799003|82310400026|1800799024|35042699022|36860700013|376014|7053199007|8096899003; X-Microsoft-Antispam-Message-Info: =?utf-8?B?aGo4MUFYeUVsRG9GUnRCNGNPRnVMcHpJcGpNWUg3NHZTakhaOVpxbHlPNVYw?= =?utf-8?B?R1Y3U1VFYUo0V3pjK1RYK3FpTE9TRTJuUEw2WTEvMlNGQUFFR2lRR1RJWVBu?= =?utf-8?B?ZWwrRGtBRTkxNnRwTzgzRXE1U05uaXlZbXdZUmsxMmE5QTRncXo4ZENXelJW?= =?utf-8?B?OUVNMFllSHVabEhtZ2tLUFZyR2Q5NUE1MUlaRWQzYncyNTF2aVlyWG0ySXBT?= =?utf-8?B?dEF6UGpUOXBxcncyUDBQS1RSeml2QkFOeUpZN2JpajRPeUlybFA5akxHa2JJ?= =?utf-8?B?Smh1Zll5SnhhS3FVb3pDL1NmK29jS1dWRlM3eTVGQnFydTJURFpQOW5EdTc0?= =?utf-8?B?akQ3Q01uQXhUWExyRlRQTGxpaXIrVUpHcmhNeHkxZ0w0ZmJTSS9yT3M1K2dG?= =?utf-8?B?M3FSUnZVbTZUVkwrQ1NOU1ZyRVdPOU1yYVZJQ282RzJyZW9WUi9YT01seFp1?= =?utf-8?B?ZURSVXREenh1Y3crditURkpXd05zQnc5NWczR0VQNlpGUFFybzcxd0NKMHo1?= =?utf-8?B?eTByQlVnam1ubW1DUmlLbzVxNEFDT0RvV2pPa0x4S0xJUHZsOXhhaEQ4bUhZ?= =?utf-8?B?dmUrNEloYTVpUjBsYnpBaUQvY0llb3RNRWFZSmFBVTR0bjRsa3RzMS9jWDNj?= =?utf-8?B?RW45eFZsaVVRSHRZL2g4dU5oQXpYYnBBOHZjYm5pQndMUjFkTjJtTzBYUksy?= =?utf-8?B?TzRtbWI3aWwyeFpEWFpQSkR4OENwcGNnNXVQaUZadU9ERUQ5L3FYMFhSZEtk?= =?utf-8?B?bVRjY2JmbldRckJaOEhuVWtmcEJBQTMyaTNDYUN0ank4MjhzMVhXZ25NUm44?= =?utf-8?B?L25GM1VQbzNEQlA1SFd5UHZKY2NMcXpHSWtkd21pQktheTJmZ2Y1bDUrdGow?= =?utf-8?B?WTdWeWo4UTM3cWNlM3FuaS9RUDJTa2JoVmdSNkZheGl3ZE9VRk54RVFJNitP?= =?utf-8?B?WmFxRmtwVE1ZbG4xa2t6d05ZYzc0K296dUhWOWdQTUU4MzlYdERwWE0yT0Er?= =?utf-8?B?aUp6Z2FOTDA3S1BhS241WXF6WVFUV3VDS3RQVW0rUDRvZTFkQkhPWitYdlFW?= =?utf-8?B?UGpSWUVBTnlUai95RVJTZ3dqTXFQR212M3Vtd2NnSm9ySkZNVTFodnkrdmtz?= =?utf-8?B?UWFKeURxYXdBdURWNjdaZTBIaWZEeGZjSEtHUEViMWNYZ0hybGZJN3FxZlJa?= =?utf-8?B?Y3ZHcVdjNWt4RjFHL1ZVRkJyYzRtT2hMOS9uVFRmMXZuZHI0eG93ajE4VUFY?= =?utf-8?B?L1NrZTZhaTRNVkg1bjdWbkdwVHV5SE9Vb0VtV25CblhKaTZiZDNpZW9FTEQw?= =?utf-8?B?UnQ3djhZNUxFMFFFUnN0Z3VOM3h0M21qV1JLMDNNV1cvRFgxS1B5WXJDMXM5?= =?utf-8?B?U2JyMGFRK1Nzd2VvNGEzdHhpME4vZXFRN0RHYzc1VjZZandVNWNJSDFkcUEz?= =?utf-8?B?aitwMUJpMlRNV1VacUEwVkxvcHlrWW9wQlBWYnFjR2ZYQmpBQTZiQkNlK1p3?= =?utf-8?B?WHRvRCtoYmhSMzEzczFVV01vWnovWlVYRVVIelNpbGVkak0rSGR0bzNUNVRQ?= =?utf-8?B?UjlLbUhpR29ILzlyYWg4RDVFSmpic1VGUzFpNGpTNkxmcHM5eXZlMjFwZzR4?= =?utf-8?B?V2tYQWFtVnk3QnZEeWpkZGZQQXRqdjQva0txVTNzdFU4eWVhSklDejhMQ0M4?= =?utf-8?B?NG1ZUlh4TmNJYlZBdWVJUVdVSzUzWnFicGIrWEJ3bFY1VXBGTGVQRlNlZFlj?= =?utf-8?B?ZTNtWUI1SEZ6NVRKT0ozT010Uko5Yis3SlE3LzRUZmxzNEpwcDJ0NHFwMjJq?= =?utf-8?B?UXV4eFBjZUsrREhxNVpWVkxRRHBvSUhwTWs1YW9RZThGNXFYYllydElkTU9n?= =?utf-8?B?YTdTQk9GYzVRQ1JMc3ZvK2czQ3ZNbndCU0tuamNJd0NWOFA2Z0FaN0NvQlVl?= =?utf-8?B?R2IxbWFTWGhXZnZ0Qnp4aytQMVZ2RWhOMXhZSjl1dk9CSEJJRzU1dVIzeVhG?= =?utf-8?B?bWJOcDB2ZENWVUtYQmN1NmordVNCNDFTN3RwUGRqVTR1dmZxMTJuTmw3NGtI?= =?utf-8?Q?ZFaNvT?= X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(82310400026)(1800799024)(35042699022)(36860700013)(376014)(7053199007)(8096899003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 May 2025 09:54:27.5023 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1e9d8463-7e34-454a-7e57-08dd9f5ff748 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AMS1EPF00000043.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB10355 X-Stat-Signature: ku8tp7agh1a889nc557y8zsiuxzxxdk7 X-Rspamd-Queue-Id: AC88640002 X-Rspam-User: X-Rspamd-Server: rspam02 X-HE-Tag: 1748598872-996557 X-HE-Meta: U2FsdGVkX18PKdy8R9+SddxszhllXlTnt+S3voGa37JhKO3Cz8anoJgI0vt6ftbbIAFsjW5DjXSYZepU7agxkaGsd3w0QrYw9cCELyOq0cwI4gjAcjnnpk7hrakbIfSHFUdo+hXpyZzRrX6m7TIPoSliW/Ok2ihJnBA3gIrWJXJR/INNWdyz9FT/YqoRoCdYv9cVkXsXUL8rRkasHRCE/TAmycdLG8VBiqun6HP9SnkgNBtm800/6sI5l9rYWeQoXMzXJwVjq7Enk0u44wh3tzRtnHi/gnxOZG+OuLTCgUcLr5j7Et5SN5aO54fkoIhFG204Lwz55J8kSeYc5ybY6oMvM9GuiA/VbBdxIU1wAb5JjV5eDuQvRHeZjJJmkkL6sWAAmbJj6pZJOleGrvcMrWpX435M1kujuffYPXG/BA/kUfP1LVGhczl0aoIhHcpg+sQB9JVocrydBE+h++u6RXA6VUaWMCVLCZIYr9MvPAjRrVi5jsllnu9xZwj1uIElAO39SyT4PAtZGwMWIJJCCRIxUuCQn6cC3uJUqtGK6TujLue1UveF0+JBR7VCk5BYNtPaEx+x2WUnWs6n+UK4xNHEyyp4yd4pqOnmCEhgpoCMuVLgJIN5s7RtFemOBmnXeF1p9wY80OkmEeKJxw4x0xILvPl4KqlYmRKniItMCGZ46m5DUj682KL3XTobDdoGB43qobFxG/2peUdH7oB48rgGMtxYWZUK/GtjiojVURaijiIhCU8tMUPDW1s1tt66Lx9wfokkq6icXiZrf/PpCdsNPzUKddunb+cQ8kF/duBMCaBg1o/ed5ChLUj/w3cewOEOa/yB74DHpm0E+y3RV33/J4IrUQAtsgGKBY3u0Z4EhW7wkdArwh3/R8em6Qsn9d5cMR0h4xsreJYK5/t+9tw0AthVjM7dVHqtgFoA1BL+/HdIUZubM12o811Mwzj7mVKZ0OXvlHWKAngZVus hnOV4Guc Va6lnxB/f2KOUyuHu5Fn/JsseVNo309o6HWB5wFbpsp0u8uHTo0H+C3FCWmfK4/qfva4xFZsDQn3LCkErpJLluYjpHz+aCv3siPUIqNBDGGAKSENncxbnvu4oyczCy2b+nuG8gzd9vy0ByiXsoPQkqStGgiC+OaCDUba+Z6RHZ/4pwIRRC7WPTBPUu5UZmvQtoutspdSXwPaWrViZb8/AdUrvhQJBtx68lxxqoHbyTnvpk2Ce8EjGrBAMgW6ccDotEVGLLMLzJWDhTJDN+fBVRQtZSCVxf2B8c3DkQZ+ysqzbLouxAkrudgY6LZkEv7kMnohlmwZGlihi4kaSOQGkmbT0wQFCzr15L4f41YAYlYTQLRHWVaLKuBfMeAZ9SNHNXKLQwz5K5Qk0GO7/yoslLCtIQOe6tMQlrn0G9fIrz0nEUei8n58C3LQBBxZcKxd5JMZ2Jp3VRptYCTg4onZ/YtTbrNbdGO6ZdD3Y4nazkOKs6oGjKzJrRJnuCsiS5KrfHjekedCFY2hlrs/6R37zyp9n5C2tFC5h3mgYYnsHDdPSzYBbv7OWfmk01ueWw8Sr6wPduWatYOb0BCnidKS9+yUKFNRAAB1IAOkr0jYbwkr8xFWhQzD/BOiyONETExlr7MIwNOfysCQsIYINyM5xUqSMeiYDskBF2LYLhZrGXUc/2GbodzeewrdphZLss722MPyEjsMku2cMLO5W3Y1+e+QI3QAivGMNl+aLh15sgBZCXUllQKe1ETtTDEZAscrYy38Oo1YmLl6qJ1fgL9TsdwwYVUe2JtT11l6h 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: --------------pvUEaWTIuU2FTVrjrfxATBVf Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 30/05/25 2:53 pm, lizhe.67@bytedance.com wrote: > From: Li Zhe > > In the current implementation of the longterm pin_user_pages() function, > we invoke the collect_longterm_unpinnable_folios() function. This function > iterates through the list to check whether each folio belongs to the > "longterm_unpinnabled" category. The folios in this list essentially > correspond to a contiguous region of user-space addresses, with each folio > representing a physical address in increments of PAGESIZE. If this > user-space address range is mapped with large folio, we can optimize the > performance of function pin_user_pages() by reducing the number of if-else > branches and the frequency of memory accesses using READ_ONCE. This patch > leverages this approach to achieve performance improvements. > > The performance test results obtained through the gup_test tool from the > kernel source tree are as follows. We achieve an improvement of over 75% > for large folio with pagesize=2M. For normal page, we have only observed > a very slight degradation in performance. Thanks for the patch! I have no idea on GUP but in my limited understanding the patch looks fine, let's wait for more comments. [----] > } > > +static struct folio *pofs_next_folio(struct folio *folio, > + struct pages_or_folios *pofs, long *index_ptr) > +{ > + long i = *index_ptr + 1; > + unsigned long nr_pages = folio_nr_pages(folio); > + > + if (!pofs->has_folios) > + while ((i < pofs->nr_entries) && > + /* Is this page part of this folio? */ > + (folio_page_idx(folio, pofs->pages[i]) < nr_pages)) > + i++; > + > + if (unlikely(i == pofs->nr_entries)) > + return NULL; > + *index_ptr = i; > + > + return pofs_get_folio(pofs, i); > +} > + > /* > * Returns the number of collected folios. Return value is always >= 0. > */ > @@ -2324,16 +2343,12 @@ static void collect_longterm_unpinnable_folios( > struct list_head *movable_folio_list, > struct pages_or_folios *pofs) > { > - struct folio *prev_folio = NULL; > bool drain_allow = true; > - unsigned long i; > - > - for (i = 0; i < pofs->nr_entries; i++) { > - struct folio *folio = pofs_get_folio(pofs, i); > + long i = 0; Why not unsigned long? > + struct folio *folio; > > - if (folio == prev_folio) > - continue; > - prev_folio = folio; > + for (folio = pofs_get_folio(pofs, 0); folio; > + folio = pofs_next_folio(folio, pofs, &i)) { > > if (folio_is_longterm_pinnable(folio)) > continue; --------------pvUEaWTIuU2FTVrjrfxATBVf Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit


On 30/05/25 2:53 pm, lizhe.67@bytedance.com wrote:
From: Li Zhe <lizhe.67@bytedance.com>

In the current implementation of the longterm pin_user_pages() function,
we invoke the collect_longterm_unpinnable_folios() function. This function
iterates through the list to check whether each folio belongs to the
"longterm_unpinnabled" category. The folios in this list essentially
correspond to a contiguous region of user-space addresses, with each folio
representing a physical address in increments of PAGESIZE. If this
user-space address range is mapped with large folio, we can optimize the
performance of function pin_user_pages() by reducing the number of if-else
branches and the frequency of memory accesses using READ_ONCE. This patch
leverages this approach to achieve performance improvements.

The performance test results obtained through the gup_test tool from the
kernel source tree are as follows. We achieve an improvement of over 75%
for large folio with pagesize=2M. For normal page, we have only observed
a very slight degradation in performance.


Thanks for the patch! I have no idea on GUP but in my limited understanding
the patch looks fine, let's wait for more comments.

[----]

 }
 
+static struct folio *pofs_next_folio(struct folio *folio,
+				struct pages_or_folios *pofs, long *index_ptr)
+{
+	long i = *index_ptr + 1;
+	unsigned long nr_pages = folio_nr_pages(folio);
+
+	if (!pofs->has_folios)
+		while ((i < pofs->nr_entries) &&
+			/* Is this page part of this folio? */
+			(folio_page_idx(folio, pofs->pages[i]) < nr_pages))
+			i++;
+
+	if (unlikely(i == pofs->nr_entries))
+		return NULL;
+	*index_ptr = i;
+
+	return pofs_get_folio(pofs, i);
+}
+
 /*
  * Returns the number of collected folios. Return value is always >= 0.
  */
@@ -2324,16 +2343,12 @@ static void collect_longterm_unpinnable_folios(
 		struct list_head *movable_folio_list,
 		struct pages_or_folios *pofs)
 {
-	struct folio *prev_folio = NULL;
 	bool drain_allow = true;
-	unsigned long i;
-
-	for (i = 0; i < pofs->nr_entries; i++) {
-		struct folio *folio = pofs_get_folio(pofs, i);
+	long i = 0;


Why not unsigned long?


+	struct folio *folio;
 
-		if (folio == prev_folio)
-			continue;
-		prev_folio = folio;
+	for (folio = pofs_get_folio(pofs, 0); folio;
+			folio = pofs_next_folio(folio, pofs, &i)) {
 
 		if (folio_is_longterm_pinnable(folio))
 			continue;
--------------pvUEaWTIuU2FTVrjrfxATBVf--