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 3D07DD5AE61 for ; Thu, 7 Nov 2024 04:57:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AA8556B0089; Wed, 6 Nov 2024 23:57:50 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A58226B008A; Wed, 6 Nov 2024 23:57:50 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8D1276B008C; Wed, 6 Nov 2024 23:57:50 -0500 (EST) 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 6F7956B0089 for ; Wed, 6 Nov 2024 23:57:50 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 1DFC8C037D for ; Thu, 7 Nov 2024 04:57:50 +0000 (UTC) X-FDA: 82758091164.29.1DCB8AE Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2051.outbound.protection.outlook.com [40.107.220.51]) by imf26.hostedemail.com (Postfix) with ESMTP id 719AC140007 for ; Thu, 7 Nov 2024 04:57:20 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=NmDuaeBL; spf=pass (imf26.hostedemail.com: domain of jhubbard@nvidia.com designates 40.107.220.51 as permitted sender) smtp.mailfrom=jhubbard@nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); dmarc=pass (policy=reject) header.from=nvidia.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1730955382; 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=CUEoSiOSst9JkNifn00xI5TE3pWfd+xO+FyxjfbPKuU=; b=CWgQczl4cA7czphs+DZXg6RTGgBkIgtGjfCDhQcPDDGQSi3cwsQJxMUYwHFWHExaZeZhyF +JU9B67kr5ufd/JUhfz68u2fsmvTL4Clfk+H6zILt16xV41NPvjQH5fFtnBGOiEkFZH3e2 uT2U/Sj/CS4ieed1pBwWJnALynwd4iw= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1730955382; a=rsa-sha256; cv=pass; b=5hS454+wWWDG9Bjf6AQVuRncTDG3d+7XawZOkY66jHDCv/+ahgWPZmjZeUaNy+Wams5gjr YlQHgVjtD55vacX/8G2l6Ad//b15Hp4JDbbbymbe8SQNpBst1aGd5a9ecJO/iDoV04ovdq af1W+mD7boLFXcIjq2RVaBR+7C+ZO1g= ARC-Authentication-Results: i=2; imf26.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=NmDuaeBL; spf=pass (imf26.hostedemail.com: domain of jhubbard@nvidia.com designates 40.107.220.51 as permitted sender) smtp.mailfrom=jhubbard@nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); dmarc=pass (policy=reject) header.from=nvidia.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KCtFWJFj8mQYOXeg8p/Gd/W/rz4RmwLORVmK2NwS32xOOAmRLnco1e8feQk876oDMSXjYMg24QKVwcuQ/WCqzWntcTNelWmygxOa72zlA7JS8pT4fAWmsrovQv1D5VNd4cdzxEKf7n29cxjlyZ41UPGepoN3B6LjDKGZH9m2TT7UZosTQX4sBysD6Nwmov9ICBP4DKVhsB+UDo+wZ/LrQg4j9ZqlL4DXRjeG46H/6ihDm2/ltEDi4Si2CeZXSwRDoCifqI6s4oz05cE4T34uNwHgw83+cuA1xwDJtPb8fjXNyuo/2l7NNBXDyuf+vbavL/34K5DyuldOQPmmaECDfw== 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=CUEoSiOSst9JkNifn00xI5TE3pWfd+xO+FyxjfbPKuU=; b=IFcooKF7h0QJzUsxYIkeS8qZATTt/GVeuBU2+/DNy3KZIjxSP901rkc9wq2L1IjFCgZidzz3OBbQ01VvNKu4xM9aNs95+yJf9O/w/VGmcnqLgpPHyIh4GOzWFDHc0TS0qXO9Kx7quBhZGnEpx/tlgkhQuv04hDYTvwcJ/jq6fJH2I8oyDDv4gEHI+zMIXFu4alNNdOllrRHLuZAjhrbREq95QX7wtw/sqfSW1FZMzTdFjuYASRt7Dl6PZ2KDozbepRvyozqkfNqKVYtA8LCtCPLf+vIw+oy24CSIIwo0cmNpUXFLroA4kJ5A+TqHOZgZ+TuBoQYvdRaE1cLk566Pqw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=redhat.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) 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=CUEoSiOSst9JkNifn00xI5TE3pWfd+xO+FyxjfbPKuU=; b=NmDuaeBL+nCc5hfjoNHAQLMfj15LEkxcjz1VV8lWSAQd27zCeXPbhoLAXiM1en734G4SbL0DLG2KzCSGSVyPrpSR5SuwKyYnNv5NRTfqMoZTIoRxSwwFUcmxZzsJEMzXces0UQT1vw14WG+NNUqoCmKyHsCBS94jZV2VaXfialvf2jLmToLuN3Oh5q6zmjVrPzy0SLHiNyDdQr4VZtlQUjMTnu/BAgxdQcaRgY37kIHKvlJvkgWjSQq1Z4iz2SepHNn5gsz822JfGHotmPisQsaKOWX8dShEneegNgf9ivTn7nID/vPkCPL+8kEF68mJ5FSV1YkeO8lgIfOatoqkZg== Received: from BL1P221CA0026.NAMP221.PROD.OUTLOOK.COM (2603:10b6:208:2c5::27) by CY5PR12MB6203.namprd12.prod.outlook.com (2603:10b6:930:24::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8114.31; Thu, 7 Nov 2024 04:57:43 +0000 Received: from BL6PEPF00020E64.namprd04.prod.outlook.com (2603:10b6:208:2c5:cafe::c9) by BL1P221CA0026.outlook.office365.com (2603:10b6:208:2c5::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8137.19 via Frontend Transport; Thu, 7 Nov 2024 04:57:43 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BL6PEPF00020E64.mail.protection.outlook.com (10.167.249.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8137.17 via Frontend Transport; Thu, 7 Nov 2024 04:57:43 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Wed, 6 Nov 2024 20:57:26 -0800 Received: from [10.110.48.28] (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Wed, 6 Nov 2024 20:57:26 -0800 Message-ID: <8943a8bd-644f-48fe-8502-6150c993c445@nvidia.com> Date: Wed, 6 Nov 2024 20:57:25 -0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 0/1] mm/gup: avoid an unnecessary allocation call for FOLL_LONGTERM cases To: David Hildenbrand , Andrew Morton CC: LKML , , Vivek Kasireddy , Dave Airlie , Gerd Hoffmann , Matthew Wilcox , Christoph Hellwig , Jason Gunthorpe , Peter Xu , Arnd Bergmann , Daniel Vetter , Dongwon Kim , Hugh Dickins , Junxiao Chang , Mike Kravetz , Oscar Salvador , References: <20241105032944.141488-1-jhubbard@nvidia.com> Content-Language: en-US From: John Hubbard In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF00020E64:EE_|CY5PR12MB6203:EE_ X-MS-Office365-Filtering-Correlation-Id: 0e7265d4-568b-44f0-0621-08dcfee8b6f6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|376014|7416014|82310400026; X-Microsoft-Antispam-Message-Info: =?utf-8?B?L043dG9yOWlyemUvSjlrbW83OGFyempxUFZPNFV3c1VvK0hLMnUvUFY1S3B0?= =?utf-8?B?T0ZUZ1Bqd3JSazlGMllDeE5qblh3bTJ2VTZucWtGNnF1dDdRSEtqcXhwbGhQ?= =?utf-8?B?N1dpVUhMYzhXRnNVVE16akJXUTFGUEVoNklJOUF0VitGcVUxOHU1VElyeXc0?= =?utf-8?B?cnE2clhVb3ZqdTVoRDBjRFRTY3BBOTFaYmxEeFdxbm9yTitsL0Z2alFQZG1D?= =?utf-8?B?cDQ2M29jaXpUZSsvYU1PeVJBK2gxeHEyQm9VZUlsU01oOUNNaHA4WmRCQ0pi?= =?utf-8?B?SXFOR0RJelBvZkJwOVh1UHZ5Zi9rbldIelNvRE5aVVBaNDZOV2JEalB3NEhD?= =?utf-8?B?Sm4wRlhEVzhaZkp0YjlOTXRJWGMvTlRIVGRqLytVeEZHU3FCRjMyK2FMSWxs?= =?utf-8?B?d1A1eTZXOThPUnBCVmhnR2JJRWpCV2c1NnJTSU1TSkpqQVZ5UDVib0JMaDRN?= =?utf-8?B?L0RpSmlFbHYyTmp3YS82Z1lSNGI1VW5zcjZtVEVKd0xiV1o1Yk1ZbEVKVVdC?= =?utf-8?B?T0hGMENEVTR2d3RObmNTckFjdEpjZENkUmY0cDJNWFRHZHdZa2QyUnFLOEht?= =?utf-8?B?QmExMDdFbVpsSGpiVVdzOWtDUVg1TExSaURrenhLVzNnRmY2MUtnekdPZnly?= =?utf-8?B?L1QwWUY3K1o1NkNxeno3UHYzb0V3c3VnSUxxenBRMGRmMXZ0YjlvcUUwdkRV?= =?utf-8?B?Vm5qelJWSTZhUnFhR1c2L1BYMFRkSkJYQkJONzJpWVhLRktJOFBsSExNZFl0?= =?utf-8?B?ajh6ckg1K1NmVWlPRjhnYnNCeFBHc0ZTdW00SzRhdXBKOE9yd0ovWmFjWGZC?= =?utf-8?B?TEE2RXE2V2ZPTU1NN1BPNURPWlVjVG9RL1VsYzMzb0ErMEJtaUFEV1p0RVZq?= =?utf-8?B?RE9BUHByWFN5d0dKY0p1MHppVnFuVExVTnNQVXNtQmc0MGYyZ3p6Nzhrdkoy?= =?utf-8?B?RWU2cERFWU0rT2NlTlMwVStFY1A5S3lORDM4b0pudENEQmFYNmVaWWJuT2dT?= =?utf-8?B?dlNCeVNyYUJScktaZ21hS1ZuZXpBU2ZUMFJLYVA2L0RlS1BYbmNuVXE3THVT?= =?utf-8?B?Wk12OGNneUR6MVcrcCs3RTN5SEc4d2JvWlh4cXlPSG1kZTQ5UVJ3UTBUYmoy?= =?utf-8?B?MWFucWVUUU5sS050aHpUMFg5SzF0QUdtTVF0RWd6VnNVTWJ4V1d6VTV3SnRv?= =?utf-8?B?WG9LaHlmNkFmdXJUcy9yNFNyVjc3NnFwV2tOOCtBcWJtYXFQSUMwOGhQVjJY?= =?utf-8?B?VWxXWmZHVHplcm9GSlJKcFlrWVQ0dGxINXRHdW02Nkl3dmJZbHZySCtYeUJN?= =?utf-8?B?aVllVGlINjFrNDBSOWJLZ2dBcDNpbjdQaGJhbXhaWStWTDV0d3o3dnRUb0py?= =?utf-8?B?WGE4OC96Nk9lcVh1NnJ3d0RpTWhkNUxpWDd1c3N3a0tCZXZWQzA4S2x5dVhO?= =?utf-8?B?ZFZUcVM1S2VaY2RNcGlCOS9kTjU1anZCOElvSzR2MGxIb2t3dkV4Z0dveVRR?= =?utf-8?B?cEJGa0V4NUtQTTQrUzdQN3Jwd2o1cVk4MFNXOWM1cVVQNURPZDRLdEc1bnlF?= =?utf-8?B?ejJMN1FhMm4raDFxWk9vU0hub01KcFRGL3dsQS9OYXdrdWRQaE1nSTl6VkxY?= =?utf-8?B?STZvd2ZYcjFzQzdMdTFpWU81aFUyc2pLQittSFFvclY4NDM3Tlc3Z3hIbXI2?= =?utf-8?B?Q0JWVVJBT2Uxb1FneHhkSXE1aXEzN3NaMS9aRmUyeGZ4RWVZckloV1N6UU5Y?= =?utf-8?B?L2NMMHpadW01SDMzcXFwRWdqOEtYOUdzSXYvUlBmUFlJQUVaUTRMMXNoRzJl?= =?utf-8?B?NFBwM2xxWVVpUTg4cnNsbG0yb0ZDdFErQ1VqVldCR0ZQNDdBYkxDUkJWQk1Z?= =?utf-8?B?M0cvOUhQTVhnUnVhbDRuVmJtN2xQbjVyVGlnVnJ0TXQ3U0E9PQ==?= X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(1800799024)(36860700013)(376014)(7416014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2024 04:57:43.3181 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0e7265d4-568b-44f0-0621-08dcfee8b6f6 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF00020E64.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6203 X-Rspamd-Server: rspam10 X-Stat-Signature: reiownmzy6ewy4toymsdn7j1imtjxrdx X-Rspamd-Queue-Id: 719AC140007 X-Rspam-User: X-HE-Tag: 1730955440-10083 X-HE-Meta: U2FsdGVkX18UGTy6wWnincrdtPgARlsDgoJHyYcPeXWYgUWmXD8CbGWY5GLiy3zLZjn9MMyBvpY41cHQGd4coAl2oxkH+AHyIO843MSNmFsZjlkY9PyCJTXQ03kQgTM8o7tWkYaqqslXrkwDUSi0VFf/gqORinsxErxNzwNETpj4Q1ctWUkjMZqc2N2StZUo/+yA76EO1DfJYhYc4M1EOVoeTFNjqLbV89lNvkWVQPVk2o7pSI890mxtxgb32wwRS+Fi8tdXWJdrIfmbFSBLyz+tjOjNE8SWEgIroizeh3sJSUc6v+pAKkI7XF6FyAFcsyo2nl7v2KjvOcetuM8ThdVnYP001MsdYGoagf/CDFaghjGkDzrR50dW3Hj+Ykyj/cgZkSBvKTztlxtBfJF2Bf2NLqbiuuHpePZpVl1Xx41YBpRVPZaXbzAj+PCVETt3Qp1aT2R0PxKXxotxyy+UVEUQN/tRVqjtfRCa3PILra3y4g+v4ISeApTo2U3uddqKqNgtZVLT2W2cOvuHvQztrdxIx7fsxFUD+uA9RVcji+I/L9erlr+JWd8gox0mPReI/TfdAxO1+ck2Ku8MMH+SszsvXPjczRyZsoj9szqCSvkof/17AC77u234nrjrndfQN0KxGbD4J6WqyMgj3ASThdf/Zz7qO/T4nyODZXQY5jjQlAOj7x9rFCVmqlFllrKBtx1zPaNipfSm9tC1m7OEjkD2gj8U1xla5GsXjUmuKQuGgq3PdwxFy9mCinR4zwyZsOK83ZDusUDrsI3umVipu5+ibdjsaC7+HrpAVPVBwKbOiWQpliVTjSgyKdlt4QQJph+6kZZS47hrLjkeCgtJ+hCmnk29YvF2AdiXYVJl+M5PiKfV5MT/vDrPZdSWvIWtWPuSJDbRiidG323kQ00xdEkRD/NzL2qIdc/z27d+WNetaaq9jRlpaAwJBxmZtBmtEfYCkV229X6GqfKgbo6 /TLtNc7K qhfWA2zneQ8+vdfOtw8fQBpR92f+fGHINSEdNYsL+Waj0peBTMa32oP9GsPN8gMIv9ZtrjaNSLfvJwYspOnI6LhvDCSTFCz0xC70RvVnI40nw6YiY7sddQTpZs1bBqDHG/OiR8FpVdiV+urbFDnNLbOlOpYQZBopxD9Hsw9qYlEKd3jA+GKMB2geOe6dqiofX2eSSQVQqdnlVEoeVyINyYaNy9joshjDXkAh+xrD3eYrfQcl0Tpft1OvPbKSj7k25jx1KjC05Av1VahVl+vgFR38uQ4zXZLThEavi2Md0LdiunSjPDn+M2IMRpuqO0G+BCPAIIrFiWRl4ndQ4ahyc6aGxnY0D4VOeUexzIPaDKsU/ah6+bi+eU68H/V4KswW6+FlUG+VU/0HvLuZ1vua0Z3oArL02iKTk3u7fbKGbBApdg+zWUK26B6zbfxt4qqhuDwpaXiUepP+yYgBoiwALKEWXLoGp7Rxv1OarUrW1wCGgT0P5Zs0PPm5ag8mc7hpKgkaWbiAv4O6kPXr1Wi7ZqdNYvQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, 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 11/5/24 12:42 AM, David Hildenbrand wrote: > On 05.11.24 04:29, John Hubbard wrote: ... > Yeah, I was only adding it because I stumbled over it. It might not be a problem, because we simply "skip" if we find a folio that was already isolated (possibly by us). What might happen is that we unnecessarily drain the LRU. > > __collapse_huge_page_isolate() scans the compound_pagelist() list, before try-locking and isolating. But it also just "fails" instead of retrying forever. > > Imagine the page tables looking like the following (e.g., COW in a MAP_PRIVATE file mapping that supports large folios) > >               ------ F0P2 was replaced by a new (small) folio >              | > [ F0P0 ] [ F0P1 ] [ F1P0 ] [F0P3 ] > > F0P0: Folio 0, page 0 > > Assume we try pinning that range and end up in collect_longterm_unpinnable_folios() with: > > F0, F0, F1, F0 > > > Assume F0 and F1 are not long-term pinnable. > > i = 0: We isolate F0 > i = 1: We see that it is the same F0 and skip > i = 2: We isolate F1 > i = 3: We see !folio_test_lru() and do a lru_add_drain_all() to then >        fail folio_isolate_lru() > > So the drain in i=3 could be avoided by scanning the list, if we already isolated that one. Working better than I originally thought. Thanks for spelling out that case, I was having trouble visualizing it, but now it's clear. OK, so looking at this, I think it could be extended to more than just "skip the drain". It seems like we should also avoid counting the folio (the existing code seems wrong). So I think this approach would be correct, does it seem accurate to you as well? Here: diff --git a/mm/gup.c b/mm/gup.c index ad0c8922dac3..ab8e706b52f0 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -2324,11 +2324,21 @@ static unsigned long collect_longterm_unpinnable_folios( for (i = 0; i < pofs->nr_entries; i++) { struct folio *folio = pofs_get_folio(pofs, i); + struct folio *tmp_folio; + /* + * Two checks to see if this folio has already been collected. + * The first check is quick, and the second check is thorough. + */ if (folio == prev_folio) continue; prev_folio = folio; + list_for_each_entry(tmp_folio, movable_folio_list, lru) { + if (folio == tmp_folio) + continue; + } + if (folio_is_longterm_pinnable(folio)) continue; I need to test this more thoroughly, though, with a directed gup test (I'm not sure we have one yet). thanks, -- John Hubbard