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 831B4E77197 for ; Wed, 8 Jan 2025 03:39:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 14D606B0083; Tue, 7 Jan 2025 22:39:40 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0FD8B6B0088; Tue, 7 Jan 2025 22:39:40 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EB8616B008A; Tue, 7 Jan 2025 22:39:39 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id CD93D6B0083 for ; Tue, 7 Jan 2025 22:39:39 -0500 (EST) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 8BEAEC0EDC for ; Wed, 8 Jan 2025 03:39:39 +0000 (UTC) X-FDA: 82982880078.13.768CA2F Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2078.outbound.protection.outlook.com [40.107.92.78]) by imf05.hostedemail.com (Postfix) with ESMTP id B6F36100002 for ; Wed, 8 Jan 2025 03:39:36 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=kGzju9DO; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf05.hostedemail.com: domain of ziy@nvidia.com designates 40.107.92.78 as permitted sender) smtp.mailfrom=ziy@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=1736307576; 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=cCwYt+kzK/MvIA+rhR8khhg4ufraIorpdMyaftos02I=; b=H4GsOHrBN1z/NWCMGJpMGFX+yRlpwz4PTSv8YxuhcFzDy5O9GBivhoKGx7qlTmsSuA5cLQ T8anrR3cXfe6qTZWqt9RB+tn8wJF1G0BT1b4p0KlusYux+cQ3FStY/8Ceruvj2XmmcaqY8 6g09+M/0Tyl0c/hkuOCIACgNrNjR3W4= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1736307576; a=rsa-sha256; cv=pass; b=oNXY5Xof+LHazolampawmxZ+B1/qioo1PaR+KC6i7UWTMq6xFZxoE4kqDZLG+Q+c5mvM8D 0rLdlxA0VCD5U5jMybGf03tXwiflI21FBg9yLfaL2UP/6j7kF1xJFLg2sBQasRO1PgH54N RyVmcpjx34VyZCpxM/2cf2OnlBjkMuY= ARC-Authentication-Results: i=2; imf05.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=kGzju9DO; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf05.hostedemail.com: domain of ziy@nvidia.com designates 40.107.92.78 as permitted sender) smtp.mailfrom=ziy@nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=x+5GNLeC51/MWpFIugR56FI+dPJ+4Lu57oBLXgx0tPoh+JFU7tA9cC2E6NHRLSP+r+25dzmkF+oLKa6+IHOWiIAUkVA/OcqsROG54GSKeng0DZ+PwSj+9qFZ4tackTT6XTOPyoxaYZjAqKKmDhGMQK8EL98qtj10D6JpvW16KlfBGTF/RIWEHsl6x3XU/0A45ebJxBjGhpELQMxu6cBy5Zy9N75tYBLIfDn1N60DEa1Wfo7vKEiTNdFgNihF2cbMVeP1exFOWokq/iFyYfsvu4s/RV6wuHkCiRl8kPZaENYfIxd2YouiAuxlErcwnySqevf0HnFflaL49vU7KmYZfQ== 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=cCwYt+kzK/MvIA+rhR8khhg4ufraIorpdMyaftos02I=; b=pqO+lob4NhqiN3uZQTkzJYdOVQZN47ldv+UXQ1QTkY8LtMXqBsNeRGPQVUuBFrSUMIqejr+oQKgq2NhXvzqGuDMzl9AFY/vtBhyR1VP4KDpNF9s0IvjhDeIxCZzrI46OvXvlz6fudlwQMuvX5I3R/fsiB7h8GSvr5g6XJDTO//PSbee/3MGw933scVLnQoPb0jKEl4wtcCrXtiMWYGsSLso/d40pDBj8H8eEGusZwzD9d4rMrLZ/5N4jUCZs+sd0KblFGb5sJSaZt4VIefmj442dDW0V4v/Jh37/r36/Lpca0q4ZlXPOmbbURff0f1c1gZk1MwT0tB/Qeh4Fr/ipqQ== 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=cCwYt+kzK/MvIA+rhR8khhg4ufraIorpdMyaftos02I=; b=kGzju9DOwEMdcYO9mvS6inXw7KHPu2scwFyLiddgqZeC6CBO12m0uaIlL2kbrktBSPuiCd5EVlFNwqxJ2UymbXwza0iIARxcn8Jmg+cj2Kzvx6VBnYCwEMG6YAQNeMPKcuE03F7s7Uv3pkqWteXSutCZ8CoKPCLdBzZaBkr1UVRVZ/aVE8+jGjVMS5IVdOytTS+1sx5wkEcTxwQZHVi19YU6hxy4XWNoA5SR19C+g/IQWqmDtji9draggPtcUzfFqtQ52tszM02fXpM65cyDtkclETF39HIRhIMGX2qeRwEhjMHWIC/3cWK4tq+vRsstSYC8bSUPvXoWzu9Fnb0ydQ== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by MN2PR12MB4408.namprd12.prod.outlook.com (2603:10b6:208:26c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8335.10; Wed, 8 Jan 2025 03:39:32 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%3]) with mapi id 15.20.8314.018; Wed, 8 Jan 2025 03:39:32 +0000 From: Zi Yan To: Matthew Wilcox Cc: David Hildenbrand , linux-mm@kvack.org, lsf-pc@lists.linux-foundation.org Subject: Re: [LSF/MM/BPF TOPIC] Non-lru page migration in a memdesc world Date: Tue, 07 Jan 2025 22:39:28 -0500 X-Mailer: MailMate (2.0r6203) Message-ID: <4267606F-9C90-43E7-B5EB-4298CDEE74E6@nvidia.com> In-Reply-To: References: <2612ac8a-d0a9-452b-a53d-75ffc6166224@redhat.com> Content-Type: text/plain X-ClientProxiedBy: BN0PR02CA0035.namprd02.prod.outlook.com (2603:10b6:408:e5::10) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|MN2PR12MB4408:EE_ X-MS-Office365-Filtering-Correlation-Id: 3b13cdb4-9e34-4ba6-2e94-08dd2f961053 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?uLQIXRTWUjEs6uTpgVDxP7sqDDRu4r37IGYOb58s8hyFIraZqncOqcYdN0KY?= =?us-ascii?Q?pYNpoWcbNZ2fnbkBTgdwORbFhIjesWi9kNgft3ZYkAGHJn4nKbkxZxTYFDxt?= =?us-ascii?Q?lOrPj+zjT9y/ls6oUp3nBc58KNBHkJG8ZLZfc8PAL3lrB7GVv/Es3oUS7I/0?= =?us-ascii?Q?jQQjq+zY7B8OGOh4JzyVry95X7CPOAZg0bdpvYvMvSVFWweTQW8FtTJzDcby?= =?us-ascii?Q?HW3umo39NSPTZh/zmw7ddTgUQbQ5VMuMvosLCjMVm83azDfYC+96qzal631o?= =?us-ascii?Q?lz7T9sRm4g43QWzoeT9mkhpOMACQxNlgSTdmqxKGgXgj0TKgopi5S/r2Wm3w?= =?us-ascii?Q?eAJPqBhE9bzQH/ou5eBYn/nBVH1jFN6w9U9Jddgi5CDHHZsDyozetpfzRBEK?= =?us-ascii?Q?dY5dnb+F7q1g2/Pc6525Jqo9CQWSbxWyEUeBvvoxi5ms/AUcV/DkvH4B9RMt?= =?us-ascii?Q?FzoCfabQQo7eutfrKFqpm81wXXUlIpCKXUY3yKjfHWsxexGm6ZL7XK0LGUqP?= =?us-ascii?Q?8pkuPLvBqS3jNkb/AXDNhu7gsan8Otv+BWYnvFstr7mYRRdGiAnqnjkdJv9M?= =?us-ascii?Q?8m9KYmsbW+E0KI0tt6RS5wgRyo4hd3DxBlDt4Y7HFt/Pirx83CffV1cdRBtE?= =?us-ascii?Q?kr74wZfAPuWzB7z3Pq5mYPOzUw6LMJVXEf8fMxAPcVIy2syAtB+8SCP2LO95?= =?us-ascii?Q?V5r2mic0pG4q4fSmIqO0yZaFs3VNQUxx4KlK2p+PchooeqSjrSyrQbQeRSpW?= =?us-ascii?Q?PHkScJrV1rdTMnAQxA437bGyRq+OQHKKj45r0yoDFJAhoHU1J23I5etq71iU?= =?us-ascii?Q?X6y4pJ0wK/eyoH7fWAuymWc3UaC//ywLcYmR/rHFXEzUlZm3QkBolsfAkwl/?= =?us-ascii?Q?xzsXgkrYFjUJ64FN3QxcQFrdIHAejwfowHIpbN+dutJSeg+mdZ3PPmXBQFDs?= =?us-ascii?Q?r9+qfxFNKC19pm7qu0R08//NTy6d1LYowsm6Dz4lPMFFVVI990SjCW0LDQeA?= =?us-ascii?Q?N3IHqeeeW+5UdVgfMKCtWbM5KAecsSBnehOEmn5yEf6sgbmXj3IKCJ3qXrbA?= =?us-ascii?Q?2KYWWk5MLJ6NybhtRfif/6Y+Q4uIoclRp9RDb54zG//aLLuf7vadizNorItB?= =?us-ascii?Q?Cdod+gmNLMQjTru1Wl6s1UJH1LoR/kfOiE4/fJsLD+roiuJNleXOxl53PcAV?= =?us-ascii?Q?3OfIkrc1kz7lQaN/BZ7Ago+y75FIpIVOZL27jq3dsp+NDVidyIZ9D1X/s8qZ?= =?us-ascii?Q?Ur75ZhDVAhCutDa476ziyFjM4BP4mpCby++TZfxHsk/FQkZa9LFyKpHKm8qq?= =?us-ascii?Q?NC1a8qQy7+A/OND5AYPTTssG2N6Ni4SlbJ4AE/jVrf+4RY3t9U3IwLZbMi/M?= =?us-ascii?Q?yv67an15GMTbmG2Tx9tBzSUgLAKv?= 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)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rLgiwDTQ/xsNKN2PWoUU832NsGFSblZC3qpgsZmDfTIQCBUm+kUsCYwUgDNh?= =?us-ascii?Q?Tbwq9wKKyYcWm6HEdNoMYZsb8elXaLH8ytXMvpnMjjaw3QEzOElafT5ZWolx?= =?us-ascii?Q?QM7PqSPTURK91ZROBLhsEG/T3w+Na54jjTIDyIVa6nJRLbumvF7TE9TcEaeq?= =?us-ascii?Q?CrOG9nMlwzvBaoowqnIyeJyI9wN6lAg0g880vg30OyY+8ylbTcBSLqlfiEIN?= =?us-ascii?Q?j1AeJFxh+H4IRQcFxm3D+vI65dcLGfgVofpoL5Wxhcim0zQBu/7rJlkhglKI?= =?us-ascii?Q?X4zc2KPwoP6zYjZZdhY74HIlDYt29FncTGvWCbQjaRuYqI2ofp0hrAIs9pVo?= =?us-ascii?Q?hxWWOWHUGYDi1CCGRwyzQ7lgZjmQW5/BxRa8kTMu14Rd/nv4FYPN/ZSJQEyK?= =?us-ascii?Q?a8yKRz7y9jHEKu3XhbbXQV3xp+oSjciBJl/J5IWhFP6mY5rDmxtnhxFPqkWe?= =?us-ascii?Q?+neuWC9oP6mLrTbipn86R/ucDnQ/oqPkkJ8WNkPtiNDWe53QWyLAIAGbks2N?= =?us-ascii?Q?sVzKmce8xRBVNPxrztFpD367GmjeWdlCYvTbpRkjGBcqYLrcD/duE0FiIpkV?= =?us-ascii?Q?xppuoCOvAVr1HuVAsdz/PksQ9nv80LuTc9YEjpdtfnqjEglorT3U7GDyS6Yc?= =?us-ascii?Q?eZ21CLQmK213XbXi3fJXkmcb8sUPluri+qBu0A2YpwIpC9O9W1AaiEX+ILp6?= =?us-ascii?Q?4XUbU5vIa0NTa6QvmVgl4Nq7JuIaaqigbGV1h4+CBCLXMLaRJ41dVovpc2MI?= =?us-ascii?Q?7b4FVXWX7fqbSk/Kh44WQb1+URhLQkhrbxcGYCYqPkN9dtNYP7a4Rx8o2x54?= =?us-ascii?Q?tWBvAeqZfODaSsJpPBdjmeSjH/PgBsN+ZGqV3ENQfWLb4PAKEQIAYF+Nv2xn?= =?us-ascii?Q?/nBE9N1LUbe5sI4Al91ODAh4xBnx2pTu5eyweXCKRQE2IbzSbCe1VXSfTHyI?= =?us-ascii?Q?sSe1GidKtVH/zfSb78RkACOXGucR3HqeR/wqFZbdzhqcjWjzcBmGuKPD+kyh?= =?us-ascii?Q?25pf900zmWgiCd2O4q4uuZrwLwHC7w4zhm4FUfkpjTdA22yBfsIEvssjk2Fr?= =?us-ascii?Q?7e6aR2FKZbjUTOU1+UheGsmj+0lJf8qu6skKlxsTAzuMDBTQVGySDjJO2nNk?= =?us-ascii?Q?5m142JdmoH6GBWTaIrC7EZM2Nr0SKPYjJGRemzTR5jPBrtUZJKvBXsh8z4WP?= =?us-ascii?Q?AssHHg50blUSl5MD1tbWywXyRa8hnWovg/x2NjMAUOPn7PA6qJk5qX9cbmEr?= =?us-ascii?Q?zPm7sI8DEdpZZSvy0TEpGObwufKUS+07jOMbuqo4JWontDSAWa9jBsBZqNW+?= =?us-ascii?Q?jZndm56cYlb8UV9VUXUDdi+HdZytWKGBdSVaI4UNhPhDdPgWZbPmx4ZXh1f0?= =?us-ascii?Q?nHHIJ/7jcqTDceIRs5tMtlyFvNJssHSpH4lTsqESA3widWKx9/prnjTi8+18?= =?us-ascii?Q?bAwEMnStbbemMjf2cmwbD20urbmKHuUliy8mYslK7p3pNznnw+zb/JvEZBOr?= =?us-ascii?Q?DvZv+yf0ys3ZVsUx1LJGsN7/Sqm+VT8TkpwWtGCGU6Q02lxBXDLpy+JoYKVm?= =?us-ascii?Q?noFFDTBMRMxZVCOmJrLMkzKR/e8fmCM6YqL4dGZ4?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3b13cdb4-9e34-4ba6-2e94-08dd2f961053 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2025 03:39:32.3001 (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: Pj/R34BTqBi1Gr1bw+zumz1sJ4hsa8pMvBkFi88xWd8Uxwulx/dUnWMFr/M4fJ7b X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4408 X-Stat-Signature: it9fqwdsi4uuruifycynqbm5i6xy1x6y X-Rspamd-Queue-Id: B6F36100002 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1736307576-652535 X-HE-Meta: U2FsdGVkX18sj9js4YlmEHMnj19+6mO2PkBt2yTLjw+FRdzJ13Z12X4My0f+dkkBccQr0MEXIoWsbVI//z+dq3HC2rnueNGwl1kmm0R0qVJGN/GaleOja4g7RSrvHPT6dJneq06MZLQ8hFDmo4QUsamIl1cdD1kchtnBzbZTH9vebdc60yu2eav+98yjwLt5StkGU4Ydo6CZ/IRydIMuEfbRCdM50qj3UiUx2gQ4MaBX+8hqgojf4KFti2asMkDXQxF/Z8rpf4rd191e6AoV2qpTyAVvFuuT8pFA4Uokl2vsJSIaWAgPPBqxo0uZp/gdN40A43Gebnno0/EnrkxLl4LneRzo47Uzc8q2lY4HbIcPyl88x9RU1+CbBUxxqUgUtjFdIWpnFZ4MqqJe097+nP+qV9pFpAgAw/TKXFSkDzTR4Cn7ZhFvscDIS7APVZMnuGLELnl19UXS06XFVaF1zj0NfZd84aBsRKI0gXOGqzgyD6jo39ekxFtn9O+Y5chseoducpWN5ZoVhU9NWiGJzrMyLRzSO3Ayz4U3NzcrzDYL7yB0WmvZmUj0Ho7+Gtt3i7py0CgGWBend16j7lzJolc4d4adWh6Dy8Ap9mk87jJkMzN14DAhfD4sBJ+PLEnGwVCEobOcjDQCOYLZzj7smy9f/v06SXkA67qf6BX+WDLRm/M8yuB0Qyqgx8pTdcx0wNJfo9FLnkHTxCYVFSqBerqdsiU9HUFUQzThpJksf8yNmO6cZ3m9oAGf00XqkcOfrVCthDdyJx+d9lyG1ZDhPR88dHxyrvYXal7BFW5CjZkl26YOWROZOjb7b180BVRYzdllOzBDHSj9wq1FxzX7V5P8IZEfdYdIUG1ihuBOP24HP0aXjQ5hkXq2lpdTFcVyqbz+LqhmZnq5LMwxjqKRP8xab5OyOazth5owDPNyWOfQksSDvXUF9aTZYT0GX8o4hJoDQexN65qQ+JilHaY 3gTV2Vrb L2YH5hOXvRMXVMkIA8oKqNxkgghmKzlnydAUhsmG4nES6qtK+P1lEWPAhCOOYRucj+tfPmE2l563tD1r5lXCGDW7+5fQALDQmJBP/UBsalYM9nnYOyJu7pwXM9jQlCn5Bjg71PZcwJEDAXRYaQ1oqQB1SGisSK8GyiHWwcL6NbqLpxawEcGuE6ip88OWlSI7c6fygZ5NUDPuwfgHNFa+jxW9minGmPiukIa+gzccUvCWy8Pph7gGzh0ADZMlNQX4Yly7hQ8XawUCK9kZGi2jTnJAxXQ== 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 7 Jan 2025, at 11:49, Matthew Wilcox wrote: > On Tue, Jan 07, 2025 at 05:11:02PM +0100, David Hildenbrand wrote: >> one item on my todo list is making PageOffline pages to stop using "struct >> page" members except page->type and 1/2 flags, to prepare them for the >> memdesc future, to avoid unnecessary atomics, and to resolve some (so-far) >> theoretical issues with temporary speculative references. > > Well, thank goodness someone's working on this! Because I'm stumped. > >> For that, we use the "non-lru page migration" framework and in that process >> we make use of ... way to many members of "struct page"/"struct folio" and >> rely on the refcount not being 0. For example, we certainly don't want to >> allocate memdescs for PageOffline pages just so some of them can be >> migrated. > > I mean, let's start with how we migrate pages. > > int migrate_pages(struct list_head *from, new_folio_t get_new_folio, > free_folio_t put_new_folio, unsigned long private, > enum migrate_mode mode, int reason, unsigned int *ret_succeeded) > ... > list_for_each_entry_safe(folio, folio2, from, lru) { > > We identify every folio to be migrated and put them on a list. But once > non-folio things need to be migrated, this code is wrong. > > We could rename this to migrate_folios() and have a different function > for migrating non-folio memory. But now the compaction code starts to > look distressingly complex [1]. So we need a way to pass in a list/array > of memory to be migrated that doesn't involve a list_head and magically > trying to deduce what the memory is. How about something like folio_batch carrying a list of pointers to the to-be-migrated folios/non-folios? But it consumes memory if the number of to-be-migrated is large and that is probably why ->lru is used. Allocating memory during migration might not be desirable. > > I'm actually wondering about a bitmap. Generally when we migrate memory > it's to create physical contiguity so perhaps passing in a base_pfn > and a bitmap that contains, say, PMD_ORDER bits; then it's the job of > the migration code to figure out what to do for each pfn indicated by > base_pfn and the set bits in the bitmap? > > Although now I write this down, I guess NUMA migration doesn't behave > that way. So perhaps compaction-migration and numa-migration end up > using different interfaces? I think NUMA migration always migrates But both use the same backend to unmap old pages, move metadata, and remap new pages for folios. It is actually non-folios which have a different routine for migration. We probably want a dedicated interface for non-folios when ->lru cannot be used, so during compaction, when a non-folio is encountered, the dedicated non-folio migration interface is called. As I am writing, how often we see non-folios in the entire physical space? If not often, is it possible to just migrate one non-folio at a time so that the list problem just goes away? > folios, so it can keep using get_new_folio() and put_new_folio() while > the compaction-migration might need a different pair of callbacks to > allocate/free memory of many different memdesc types. > > [1] OK, it is already distressingly complex. But we're making it even > more complex. Best Regards, Yan, Zi