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 2254CE77197 for ; Tue, 7 Jan 2025 17:28:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 860DE6B00A2; Tue, 7 Jan 2025 12:28:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7E8476B00AA; Tue, 7 Jan 2025 12:28:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 63A1C6B00B3; Tue, 7 Jan 2025 12:28:10 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 44AC56B00A2 for ; Tue, 7 Jan 2025 12:28:10 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id E6D6AADD63 for ; Tue, 7 Jan 2025 17:28:09 +0000 (UTC) X-FDA: 82981339098.27.AB36BF9 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2048.outbound.protection.outlook.com [40.107.223.48]) by imf09.hostedemail.com (Postfix) with ESMTP id 1D3C9140008 for ; Tue, 7 Jan 2025 17:28:06 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=jWInxsJo; spf=pass (imf09.hostedemail.com: domain of ziy@nvidia.com designates 40.107.223.48 as permitted sender) smtp.mailfrom=ziy@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=1736270887; 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=RiLPMBmfjra7Da5W2yaIK6cAn9Ff35T0aDRo+wkyKcM=; b=V5Jd73nWgmd3WQY6KEkK4DgGeTthkh7/fa9WCBoTaEWtG4pOk7T+fvtEUr+t/1JMbeN44f eq99CnqeU2tkrYvluI6j6wjmxgv9oSPtrjbIdzSsp4Lwx8B/vhn9nigPH8h6x014AmJxio 34k5RuivoDbzT8tb95j8MG1Sxii4fCQ= ARC-Authentication-Results: i=2; imf09.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=jWInxsJo; spf=pass (imf09.hostedemail.com: domain of ziy@nvidia.com designates 40.107.223.48 as permitted sender) smtp.mailfrom=ziy@nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); dmarc=pass (policy=reject) header.from=nvidia.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1736270887; a=rsa-sha256; cv=pass; b=tO1qMmjJ6V17zTEuXktsIBTIRcW5PqJVA6iiVWGRACAz5nQmOXBlDgDho4kzhI7KMcpUBs IgWTt/sVNcV4WDcPGwUI6i9cjOG4dlud5cLmDzyUNiUwyRxwO1Fqktakb0dWd4I1GEEvue Hk3rSvUZ+T4w/KQPFjenjwsK550VYuc= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gLyiKDOJf9QOAtAModHkK2mBVf1bDs7MHcXUmSCxM9aNSNkH+HLqO9DSg3zkSMXAsw+U1DxVeobA2WI/p6srhadVLghRLTBptbGaHlgpDyAetZZcJjMcIXBDJhnOallHRlut4Gyzf5brBZuakpN/FmDL5J2lhFS2PQkauLjdfE6FQReHrE6RIovYAoIxwk4TzD3VQixTYno/D9n5q9xTZm1hyTya6ly/5HwCuWaFmecaNHH+5Ckx5UFYJWASQL9kKU/M84R0ySMqCgAAQX42MoA/uufz9Q8eF2ZaXmSueEHA22NfmXx0l9XtUjQXv4edA2nBvI6vAHjA1fyveY5/dw== 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=RiLPMBmfjra7Da5W2yaIK6cAn9Ff35T0aDRo+wkyKcM=; b=Jr8Kd8B312wdAup+UD/teOQVtqI75EthleI4DHYPo6VTeqJSoBmq/5i0DmCMbDzQGvdtUFXFoyu74CjPWoB/BV1WH2XAKu0pJraBua6J7NAazKpKvSSLGzZChz2g+5VLnhbUkan+8TSUUJCo308m13CygxUo3hjjNFD5j1yXMGHMpIRemsA5fTDE5WgOYYdEv7bC5h/48qJNRQuElXU0dFu/y2l+jguGJj1iOqyKJhOyNVMwiraYnARljqpkktQQZQPXtV+Ntv+78D+SOWGdRQDGxj/6qCLxWrI8JrT2qJMwVnMGgey5Y15OJ4j+wb8EFkp28gRnYbU465LMuSzLiA== 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=RiLPMBmfjra7Da5W2yaIK6cAn9Ff35T0aDRo+wkyKcM=; b=jWInxsJoWmUKsjYv33iaiHm0MkSs6H9ABLWEwxyYXgAvZZ6iUWFOX7YsovjDa5wjvVN2fYbtRxCjQ4QjWLEw6TE3wgCO3fWy1oTiql9lO8eV3SA5PyLwEfvCXKwYFUlWP5/kK7wWotoTX1/U5kIIPmXhujjGN9vS0qXmaskqJSONfBIWCY1cWmyhcDBhd1+DMJ0Cc843JFrdvU0Zg1M0/EhgQN44j7I3nNbyf2lAsoTrz0mOmHbSLUFLJctmns1nM4+UtyEKve8jj0n5Hc59D4vL9ElbwLTqXSqE3wsO6lZVrXdQb1C9yXlo8DMWQSQJlJxR06llU4SyZ4nvrXihzg== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by SJ2PR12MB8720.namprd12.prod.outlook.com (2603:10b6:a03:539::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8314.16; Tue, 7 Jan 2025 17:27:59 +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; Tue, 7 Jan 2025 17:27:59 +0000 From: Zi Yan To: David Hildenbrand Cc: 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 12:27:57 -0500 X-Mailer: MailMate (2.0r6203) Message-ID: <35A2996F-E305-43B1-9CD6-C99AD7414DE0@nvidia.com> In-Reply-To: References: <2612ac8a-d0a9-452b-a53d-75ffc6166224@redhat.com> <5C9489ED-0B26-40EA-B47B-C034E7DACB2F@nvidia.com> Content-Type: text/plain Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BLAPR05CA0016.namprd05.prod.outlook.com (2603:10b6:208:36e::22) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|SJ2PR12MB8720:EE_ X-MS-Office365-Filtering-Correlation-Id: af84eaf4-f8bd-4707-fba8-08dd2f40a1a5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?LitbdUZrCOtjXIypVnCyBqkarQ67vaFfD3CJ3uaa14g6/ojAidIdvcQTC6sK?= =?us-ascii?Q?My0roSZ7+l2WeLlDgJ4+eSFwRdhqaOJK4onBdljPU0glpn7VbzNx4oxAJr5H?= =?us-ascii?Q?psP9ehZDKi2mrdB3FtzSQt1o+RLyuWYsjePR+H2dqmmaFlbBQBy5SjByIXVM?= =?us-ascii?Q?6NwYvZgB6/Nj20iwxAxyd40E5tlBt1GVXyh5Omc/RwphozXOx+5GEDlmQlg6?= =?us-ascii?Q?umAEUGo93EUW2Y4SqzsX6fxTkFtiKRVSPHuJtxDV+ibFE4e4X3J0t/aKkG9K?= =?us-ascii?Q?BHdPlnTJilk5c7BPBvb4wfVaverjsp0zWBmmNpMG2a4ZQwBmkPtCD4qVBYBJ?= =?us-ascii?Q?/zQjMiQpF8jh24gdL77U/sETld87B6mmpUgI89rQpQl+b99f+zCxKFGT9lZs?= =?us-ascii?Q?/trYh7f8k3s3cc1XE2UxFTMbJDNH49HtZx1JDbCxTJro9FMslPKJ+JbsWGUX?= =?us-ascii?Q?1s3z44VYdvF3AfSG/kEDcPuA8PUZoFb7j0Lk75p2su+Lszgh7u2mQMLMNA5g?= =?us-ascii?Q?ho3UO1m9hPicsVnbY50GjXxkk2aVzMNMrXe7XuoTC9n8oA5UPBO0eOdfG//B?= =?us-ascii?Q?DwRkhxPMDujTRujzB3AsMpPe0buS73fXh79FUNO/lm4VE6NmlJPuil/IurMG?= =?us-ascii?Q?CH49x88Vvpk+7JxcExz05hJD/uYRAmq7y0R7VOOZX+sSwVujXeG1Ilcv/YA3?= =?us-ascii?Q?Suvw+55zDjfLWxkpiuvL95GKj62Rn2+1tl+Psi1/aqbh1EIu3zPdZi9jekLB?= =?us-ascii?Q?/q4PSmVZ5V82bD/f+xKDRJ9/juaTYYinp4b5kZCfm0PHyWotgzBu5kpYSbI9?= =?us-ascii?Q?XDpng/Fbq4VBmaTjvZ9VvM2/Lo/M2n7Xvtt/mPgp1mz97uTqZTv07jJlBVY9?= =?us-ascii?Q?TI4l1BzmnAFYd5Rj/lzvH8XlvTMZHh4Vyh2VQ+j2HhW1aznQ6Is0rlTTPa9w?= =?us-ascii?Q?ljWz0L0zUWWSl4u2rLIboh6lfcOxik3Gde6L4F9KFJ/0AAT1zpkTTHu9IuIV?= =?us-ascii?Q?tZR6DTu/EMlrtu9y9bxE+ggjol0wuDxGNGkwXobFektDyZjrTjfY1Lex8Cre?= =?us-ascii?Q?7ZxxglCbkkHT/H8PWMWZGX+/u9+bbbB6WflhWDFuYOKyZw1B73Xu/rrR8PzS?= =?us-ascii?Q?+k6zr1WRx2MEL4VqlQV6pbpYm1EwHhmAWe3mFgi8l82i4kKZuucqbzSHnvOK?= =?us-ascii?Q?JjenSfyFDwK/d+sHIxZm8IaxKh+azagFZoskTHuWN6cBhYS77v2M1aeibsuV?= =?us-ascii?Q?MuH117dmVMc73QZEB4tPZ9vQ8fLLpBGyuHSybZK1JVYgfTwlKU51qNO3Uh/s?= =?us-ascii?Q?tUmZwQpEKmsrLagz8MrNx3+VBv4UarG/vIktoBgJBCUebhetjwlM1NzMelNL?= =?us-ascii?Q?6ZYM4oxZQek32fMbDDBpHb3kcopL?= 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)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?qGmonwU0KagL8w5HBrNK+9ihMBAMwUlZr8XyEn3c5MgLQUDNgFoCg90qoyfs?= =?us-ascii?Q?p3wsoB//6eJW+VJVoUOOK9TMG6jPmHSAimEUJCcfG9qCUen4+UYNKo8PEN/5?= =?us-ascii?Q?4uymK5XH16tpZbcoKZB8mA1shHVjxIgQxSUBaAzETGbh9GVlxH9HXHmqZNz3?= =?us-ascii?Q?cEiQj9E3ZxtjQMfpnfMoy52GNnLSFpJ8MGuO2FZ2MVd+UmgMUio5pApMbJHa?= =?us-ascii?Q?CagPwv8icCKrs+9FMUFu2UgZVyxyQiCqamg40z5bWVrQ20vLEf8uqeNzoa/0?= =?us-ascii?Q?jrVFxEXUqrjxV4SLrRG1MKdnkA69TxZ0/HiYOS7XoclWbmJcmd6ddSfHKKTH?= =?us-ascii?Q?2J8Vebummq3YfP9xkl2Xy3xY+7IF2axVSxr/DaU39AVwrmgPenLZyRMok51A?= =?us-ascii?Q?OpY3CptJyjcKcNuI1eXC1jWtKCA3EaETK8OELl5ft2UIiX8GDSBjdsdBvagq?= =?us-ascii?Q?q0JCXBahifkfc14Md5sa9dkFtDBnAndEDC9gZZXeO840pqQDFw/z/bIUs7Ex?= =?us-ascii?Q?IrmdWstC41HZeoeh/cOW917zSQ3NAAtyz+nIG7hJDFnQgY9NaE1iSdmgSNRr?= =?us-ascii?Q?hJBPYv7Nr3UDnzbfNYi/TdLsWOuk5Rg0Rm78P7YO1DNIFEHtOliKSEcxr4ho?= =?us-ascii?Q?c9TlYn3Wex5JOlVgfSLhfSTWNTw7byWxNWaDDWLWbO7dNM3X1pXjty+ILUyE?= =?us-ascii?Q?OtYraSOMnO1ijFpwUpwSizKUUqoF16e66XFdVZjYW8JFOnCMb8XQKHuwKd8N?= =?us-ascii?Q?tJqzd7e8XC4ba19RdK+68/Yrp8cHtJpzItFXQgOmvc+JeBFk4hIUaR/m9YQx?= =?us-ascii?Q?nT8CPOQWfo6IEAS68iP5dL4sXYl1GdkgUnSjQfDUbEq/h5dlSau+3r3i3xjf?= =?us-ascii?Q?9eB45Tb2yyBqLk1BO5RbTpCYOkrm85XrRxHysKbsKMqHlSzD2Uc7Q+JVSH/Q?= =?us-ascii?Q?LRO61shoHcEM5KdLi6/WgXG1zecPpNRaqlVhgGDeuV05ZrMIbB8W/kD6guUJ?= =?us-ascii?Q?QDel3h1L08S7BDX4211530UwsuZShHZJ2QUlPn4bJhxpfqI+BrwRXF5Y+bj+?= =?us-ascii?Q?4umta6n1yFD+QlLpgOPhR1FTVFb8KSnXV+m4J/3U9pEMKef9aCQXEPggPcrN?= =?us-ascii?Q?bd/Ush5izdmqIKyLW2izw9oEJfnUuLIzqKwNJK8i1yZjzDq5ITTgWK4u42sN?= =?us-ascii?Q?d/REPZRYOMQKVLXsBzh1UyJSJX6GbUrVxB2qN2rVsFpXeRbeOx/BH2i24pTW?= =?us-ascii?Q?mYLuJ/xIHG8N6eXPUD3S1nRUB7qZZXISJUq2CkSqvBW4h2ACvEhNoA+3YPE2?= =?us-ascii?Q?Rvs02T2g1PykZTvGoNcghVudV1kOnBKi4i3ULruzacdVqnuTfYY1nYqatPyw?= =?us-ascii?Q?6FGJenasDTEE7HG4Om2A5t3BXAH3x/a9nxrSdBJgbYEhI9/kvVo/DJlzpphX?= =?us-ascii?Q?pP3konEH89/0KgnwDsoXNDY2nsKeGdOAzl1xtONAGNK7zYuErEC8XeFKESGk?= =?us-ascii?Q?Qp3OTe6GqM1hhGIHr8Jkoz/hJOOlr1MtszOA3qeo3sJy7bd+FhL1b6SM38e8?= =?us-ascii?Q?2Avc51bKp9rwVvQLr5WTNRXrZCQ+GntbDrrEiQt4?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: af84eaf4-f8bd-4707-fba8-08dd2f40a1a5 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2025 17:27:59.4281 (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: QnPnCJj3b9S/Tkj7tcOliJYVuaZZYRDIQCCK97vnm+UwP3jdPlQ4vPa+BDO2zO6U X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8720 X-Rspamd-Queue-Id: 1D3C9140008 X-Rspamd-Server: rspam12 X-Stat-Signature: 8im1wups85c667a6poa3t55oo3bhdsp5 X-Rspam-User: X-HE-Tag: 1736270886-33234 X-HE-Meta: U2FsdGVkX1/9lSIcq8AlPIxY9RB4NKb1JFH7gqhHmurWKSUwv0hBPLfqHgqK+9fSmL/JnBj9nuuKFneiDgzPES4zA5OxtilRIYPC+XJIKg1k68xICiOyQhzVwfyNA4Gcli6odniMu5OLkY4/bfr+3CGXdJWKVSW4AJSEyjhPVxnDo/TgdYVRMr1YSpfdKdSBJ7Ctduz34l5pA8oMVFaUY/N8WVqBf8qAEseE2kkahIGPwlrfD9Y7qj8Bau7UsBKtAHML2ExzD2UfFdYJzVC7MgG1YhFvbyBSbSwMCk+F1jgRVWUgCzeDMDzk+id0EBbJoE+eYoqjpSUCb7Tf7OIQacrIFp+84hJU0nMZpzmnN9yBgDL9gJ1ZnklmkJP6FmdYgm8iQLuL5K7O84CHDWnaLIElLpPQ1Yr28zg9sIsbWNgMLr4aqUyzlXy6v9MxMWkrFJvDuGy914z3/49A7IVoATJ7uS11hMGSvmtoLt49qv9Z1c+2wmjDAiBQTldE/p4GF5hLmBIYsQ4tPsDzFR1MFCAWDcsauMzR6Loe3WF5Znnad+sRh0hh4qBIioeC+/zipcTORXIjsizPFH7RzD3L+4JtLh3zEXOib+WmvKHOkrI4A/ZKTJSnR3Q9yl3bajzBDGULsnr6joifOv5Khuj6lobugGoUMdlR5KvZ6+eLibQ4nXuHMClFCAgE+TBiRd7TTNhpU/WmHgpq4G3joLpsTQhPsNSCjaAoWtNygR7EwG5NVJKZErSEl0xMqKUHSDsaco1sCQEOON5jF7RcY7Qqs5zTwEUmQID90y6WArkmwGunKqupkEtjKjYzVTexXFwbjElF17Izs+IuZwFbYy7v6lPDS6aryhqxY2KOAt4v5tNwenaaeITGKqBifAxlgPVF+dCOyzETBWphNwxVl5C0LUEwMGSOIvkuVTA8F9zlDjDTUcegLiJ1fUTDlw7MK5xow69bMK2oeHzQtUDRUP4 DHGC9x1e K+aK2eJxhlzOgrGhSl/K8gzZS+lYZB+35ttuDNWzW4lVukrVQT7DPzh27kZjFOugi0uhBQBMvlXq/GMN6oOuJeUM0do79cUh9iJmpWOmwT5OSRMifPvElR4fqHTN3xXbmqniUPrPWExLlFZ7si7wkqyngKLyzIPZ1LQ9YNfCA+JpPE3EDeyqgA4OzwcDzJfxLMRlbDWaurhkCE7njWMHHugNMpz0AqkEt++xd/PpAxyN9c00FdDDyfZpecs90lQVnu5uMgj4grBfE6iYHFnF9kUy2dhIPXqiCosWw3R3SFG6pEhalVpsVsHKrf4ppqPyp0SAL 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:55, David Hildenbrand wrote: > On 07.01.25 17:48, Zi Yan wrote: >> On 7 Jan 2025, at 11:11, David Hildenbrand wrote: >> >>> Hi, >>> >>> one item on my todo list is making PageOffline pages to stop using "s= truct 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. >>> >>> For example, the page->_refcount will always be 0 (frozen) for PageOf= fline pages, and they will get allocated/freed similar to how we allocate= /free frozen pages for slab already. Once we move the refcount into "stru= ct folio", they will not have a refcount at all anymore. >>> >>> One complication is balloon compaction: we allow for migrating PageOf= fline pages allocated in some memory ballooning implementations such as v= irtio-balloon. >>> >>> For that, we use the "non-lru page migration" framework and in that p= rocess we make use of ... way to many members of "struct page"/"struct fo= lio" 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 ca= n be migrated. >> >> Then first thing is to make all get_new_folio functions be aware of Pa= geOffline >> pages and be able to allocate a PageOffline page. IIUC, the current pr= ocess >> is: 1) allocate a page from buddy allocator, 2) offline the new page d= uring >> mops->migrate_page() and online the old page. The inflation and deflat= ion >> in step 2 looks redundant if migrate_pages() can get PageOffline pages= to >> begin with and put_page() can handle PageOffline page too. > > That might be one hacky way of handling offline pages, yes :) > > (the isolation step is tricky: for example, with page->lru gone we cann= ot even put these things into a list! Also, there is page isolation ...) > > I recall that the isolation step is required because we could have mult= iple parties trying to migrate the same page at the same time. So that mu= st be handled as well. OK, since page->lru is gone, migrate_pages() might not be suitable for th= ese pages, unless we want to rewrite migrate_pages(), which might be desirabl= e. :) Then, we could record PFNs instead, like what migrate_vma*() does, but I = have not checked migrate_vma*() in details to tell the feasibility yet. In terms of isolation, we can use PageIsolated flag and make sure it is in the remaining 1/2 flags. This flag can be used for other non-folio thi= ngs too. > >> >>> >>> While we converted non-lru page migration to work on folios (i.e., fo= lio_movable_ops()) these things are not actually "folios" in the future, = they can have different memdescs. >>> >>> So, how can we migrate non-lru things that are not folios while not r= elying on "struct folio" members, with minimal/no metadata overhead? >> >> Like I said above, if migrate_pages() is aware of PageOffline pages by= allocating >> and putting them like normal folios, that could work. >> >> Or you can do what hugetlb migration does, adding a separate migrate_o= fflinepages() >> function to handle PageOffline pages. This probably can save you a lot= of >> LRU page checks like mapping and locks, but it adds a special function= =2E So >> tradeoffs. >> >>> >>> I have some ideas, but no complete solution yet; input about the requ= irements of other non-lru page migration use cases besides PageOffline wi= ll be interesting. >>> >>> ... and maybe, we have other non-folio things we'd want to migrate, a= nd want to be prepared to handle them as well? (hint: leaf page tables?) >> >> If we have dedicated allocator for non-folio things and make migrate_p= ages() >> be aware of them, it should be doable. > > Note that I thought about similar things as you describe above, but par= t of the exercise will not be focusing on PageOffline pages, but having s= omething more generic that can handle pages with actual page content, and= that have to be properly isolated :) Sure. IMHO, we will need dedicated allocation and free functions for these non-folio things, PageIsolated flag for isolation, a dedicated code path in migrate_pages() or migrate_vma*(). Best Regards, Yan, Zi