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 5CFAFC5475B for ; Mon, 11 Mar 2024 19:56:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CD0896B011B; Mon, 11 Mar 2024 15:56:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C59996B011C; Mon, 11 Mar 2024 15:56:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A84B98D0002; Mon, 11 Mar 2024 15:56:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 9195A6B011B for ; Mon, 11 Mar 2024 15:56:26 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 65D31140535 for ; Mon, 11 Mar 2024 19:56:26 +0000 (UTC) X-FDA: 81885815172.28.AD1AD82 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2047.outbound.protection.outlook.com [40.107.223.47]) by imf07.hostedemail.com (Postfix) with ESMTP id 91B994001F for ; Mon, 11 Mar 2024 19:56:23 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=M0cUH2XO; spf=pass (imf07.hostedemail.com: domain of ziy@nvidia.com designates 40.107.223.47 as permitted sender) smtp.mailfrom=ziy@nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=reject) header.from=nvidia.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1710186983; a=rsa-sha256; cv=pass; b=CmB6F8bpfw9AW6/4Cl+skUKwZDxjCbta4vvIUeO7kI9WeTFIwwoMli34yd72jLWmN9RG7c 3ig9mquw3p3AQZTcB2ZWYt7iERIW5i/Z8jPEuQsGbI/sRkEQ9+xdl/t3xjyjnHXdNyXcTi xOSz/qNZRPRNfcnTwRW93ysHaDovbzQ= ARC-Authentication-Results: i=2; imf07.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=M0cUH2XO; spf=pass (imf07.hostedemail.com: domain of ziy@nvidia.com designates 40.107.223.47 as permitted sender) smtp.mailfrom=ziy@nvidia.com; arc=pass ("microsoft.com:s=arcselector9901: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=1710186983; 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=iUE40bL1Dmr+b27r0DtVf2AdRcOOpVP1zDb4jHk3SLs=; b=x4Jgsa5KefP7ufOOpzgyiD501+G1Fp2QwefGXjVABtnLNAlXdncMJWueQ8H1Kh5xGo0L4r t6Qi7ucyGC6ixubC7H9+G3t3Mc02CVvnquW5XWLVqxy1R22wt1J6+lKyynbDfbb1x9RWmn 6eNNTSbnt3nXtyWs19bot6NUB5Kfqds= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IuqRrfC53hQ1wYc9GPqIrDoeQn8UwiKjb0WyjLHemjlC8lI4TAkYD10WFDesNVRnFtelc1zdRAGjDcci0wTIrj2/+6k8EUWp8+31WcZM4QhJwsBLKYAOMMUs8x24deR+0E750akkuSnIlmARG666J/R3uZwgGe+faSZwdu1MWyjom1RRKtbad+DVCXPz9B02uLKWn4eUMJxtinvgWDr+sSi+p5+nEQw5BHS8mCkM45Zg+FqnmwPmOtvrQscocKrHUX15HQao5F3RbUhuTbulx+ZwlIyxtf9qQRvRe2Ju0LYJgkdXCNv9aq2ZTCXGsixd7cKAitkioHVTLpatshgR+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=iUE40bL1Dmr+b27r0DtVf2AdRcOOpVP1zDb4jHk3SLs=; b=DLGVE2K2hNKGzePikuwfFw28ob4+cWGFgF3yt4lLRZtpF/EphjrPeGdeDESiRyyZL9SBxSQ5tM5Uu/XkYiIJOQH9SxyOLp8jNOlMJ9vEs4QqyOtoepa89oUzXem2//lZHkVT353BIaA3Hl3YtHYlwCEPq8jHIJLi2hg8dzfPiV8gKZL+L7MPg4ThYjbUuxSGsOdtZG71aSkZ6vPj0WYCgOWNVX1f9sQl7ZJlCrmHPzn51jl1zqJfh2b8cBwKEzYJWNDwdFQ+byOp+YCCEf3EOpUd36JtT7BHNGcl2FYlu39LmqPUXneBKjSSGFnodCZ2mwSyCFy9fX4fJ1LlbrjTKA== 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=iUE40bL1Dmr+b27r0DtVf2AdRcOOpVP1zDb4jHk3SLs=; b=M0cUH2XO4KzZxbN08zqYw6UNBBxi8tuqy+atypJQaXjsDrYbN4WsdVDjMgg/4WZzAWtsWeq/jj4fkkQoorbSJoGh8Oz/tRfvgu2P664rcM/6BoOEdDbWdd8iAFjdqu4v5LcxItTOzoMFpzeyu4lDa949NYkRp0l3Rxabxr4CcxEpiZx8LOyQ8cNEFMsAAtF9yZzws8VWbC0LmLfUiDTCgDKNa1mSO48FT/cVEyzpGflk9q5juddhFSHyjy2q5rDSDNJGZ+lcRXPgEeN9UnSSmshBHLqd/4smb7/xUO7hBCfBjaO/4sF9AsANM2CnGz36VpsaYriiSd3U7IjXzKYE0g== Received: from DS7PR12MB5744.namprd12.prod.outlook.com (2603:10b6:8:73::18) by SJ2PR12MB8882.namprd12.prod.outlook.com (2603:10b6:a03:537::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7362.35; Mon, 11 Mar 2024 19:56:18 +0000 Received: from DS7PR12MB5744.namprd12.prod.outlook.com ([fe80::dc5c:2cf1:d5f5:9753]) by DS7PR12MB5744.namprd12.prod.outlook.com ([fe80::dc5c:2cf1:d5f5:9753%6]) with mapi id 15.20.7362.035; Mon, 11 Mar 2024 19:56:18 +0000 From: Zi Yan To: Ryan Roberts Cc: linux-mm@kvack.org, Andrew Morton , "\"Matthew Wilcox (Oracle)\"" , Yang Shi , Huang Ying , "\"Kirill A . Shutemov\"" , linux-kernel@vger.kernel.org Subject: Re: [PATCH] mm/migrate: put dest folio on deferred split list if source was there. Date: Mon, 11 Mar 2024 15:56:16 -0400 X-Mailer: MailMate (1.14r6018) Message-ID: <260C6C62-1BFB-41A0-A433-AD282AF8F23D@nvidia.com> In-Reply-To: <93f05080-1a31-4f59-828e-f5294561a99f@arm.com> References: <20240311193641.133981-1-zi.yan@sent.com> <93f05080-1a31-4f59-828e-f5294561a99f@arm.com> Content-Type: multipart/signed; boundary="=_MailMate_1B58DD02-7015-4815-B354-729BBA140DE8_="; micalg=pgp-sha512; protocol="application/pgp-signature" X-ClientProxiedBy: MN2PR01CA0046.prod.exchangelabs.com (2603:10b6:208:23f::15) To DS7PR12MB5744.namprd12.prod.outlook.com (2603:10b6:8:73::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB5744:EE_|SJ2PR12MB8882:EE_ X-MS-Office365-Filtering-Correlation-Id: c418492f-c51a-43d3-79ea-08dc420550ff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5fa3XeC3A5x2fdxGrNWiP75q4WTckujLXuNcBd7iir5RK0TBQ8yqLxo4L0s/MCm5vCK54cWVFLnk4vrH6XJej0ZbUdCf6XVG8GZCXjUEuOGbujU3y2kNTlEKiVWetBZyNsuyCJVbLZmrDeg+h5LUNyfclv/DBUC2mNVjIHHVCDcNHyVdx32p5lpOVFJp6Qipd0SPmSgaByG7O10fC+SJfwBUDO7RvbqykpRrRYZtrb4R45E223OaPKukTjn706dfwY73AkZ5wxUw8nuplWkU5Nlez64Kx6J/WKXq/7xq+4fJv8gA4ch0Bg+p4GT7cDGyQY8wBhlQBX6EPCNdRVaMmfUpT1aqdV+VW7y0EamiHkF5T5asVN99tsF4vN452hcya5h6hvrNNpz9ZKM9jjZ9JYmmQUOaQy3eYDQHVv5cpO7TSachv1VcMuZyYa+i0Ocrc2fSUatc9ClKlaqR769RjmPvAg1zAcnB8VXfN4Y96VSIAru59Dm+rn70YayHTFvdDa8JZhTbU7XBvH/fOTmXg7QeHa20FsjN/X9Y+KUJ0LLeEBBZsCuKp4XXkoSroRXUmvBFsihiaLIJt0QgGtMuSBak07hbC8YJ9JEMMBw0eBMB0oETxKJnnhOv0UpbQg8CF2Jy3QMQAyPVUWInsyqUmMWPssktvLyQSDIH3P0eBx8= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB5744.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376005)(1800799015);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QN9it//rlZks1gP0UXdsAiyGrdfWn8IKdJfyzj+pyHHH1UTGDDv0qXOL7ydt?= =?us-ascii?Q?Gjn5IFmGSq12e3MxnPK4lFg8iZwq9cm732isalGyBtf8X88DPU2VB6hxPE/P?= =?us-ascii?Q?96JHbV4T8PtnfvgwpYtO4GMH84afv4YIkucjnkcm/fncBudMR7wj03eAGJkJ?= =?us-ascii?Q?HFl/XV37WPUoAKR/utTc2Ttev4CtZym+YluNtB878qdBCNIz/CZilJaRBWk7?= =?us-ascii?Q?9SPSkroGpxBl2KWB/R+cjsbiLopo2cmz/5v3RkbG5KQjVB4tCfOuHUAWtTD2?= =?us-ascii?Q?gJEE1CUyKBtI7CU7rU8Z5fi8xrQ48OZzBCG37TKZ0cqDPqTGzK+ww+jLu+oY?= =?us-ascii?Q?CJT4gHOXjlEF6NfWxnkpx6RO+GJTdBpKMKgG3Y1B+Ak2iIJMuXBM/Sq77Ka8?= =?us-ascii?Q?tURFJoDRM4nddpOHG/V8xvvihnSbkO3QD0YMR43ehdpWI6o9uUiqT5Ek3uFH?= =?us-ascii?Q?RJxa0efrholhKm9VXAC4z2ZWCjNnP1y5snRimvD2Mf78hROxnOAAJboMuNOv?= =?us-ascii?Q?YBTXpSbn0tNZyCaFBnaoiWvEqkGJw1s8SIbs1bJGV2ijQESsei2RPG+e4Ifk?= =?us-ascii?Q?cSk/8hX7cjsyoZ/ljeUa28Tt/zcGd+R3ETeogR3snOlPNKsmUQzZfRediK7T?= =?us-ascii?Q?0I4lKoWvdOCyrSJOy+lQ+EdxuuRstk8tJ8PjyhBAckKX5CWu1Wq/wQ90CSwu?= =?us-ascii?Q?H7T0LV4BpoKMR5UUaS8X4xcs42P+2DLUyNa6RnJ4EZDxvdpIpfI4ZzkDWunb?= =?us-ascii?Q?NjFpffpVl+Fq6CxOUPqXToDVLefKAW1woB0SSbv1rsJTvjA2KxPN4LYWBu1i?= =?us-ascii?Q?s0mr/j55VZaBHOAapVGUamt0WajqrQX8xN3XIj7VSqcF00ioCO2oM5jkQHX3?= =?us-ascii?Q?C2Ukr7/ms4IZXExlNnOg9crcfMteJVNzHlR6fm66nmSHb8ssxdFZkpTasPds?= =?us-ascii?Q?Bk6PT+qBS/xs4H37NqR7u54c6NE9NSzcPbTr4DoR3HxQA1ew2JdPxHwiU73f?= =?us-ascii?Q?zjWCINb5qs3h7vkczlA5zE4GgRFVHZ/RTXiRJRa/bPE4xuqjf7S/j//6mWiY?= =?us-ascii?Q?9sfHKVL+Is6RQTkut4X3XEing+CcgK80ot1/UVo314Y4qbW+UwuuojRaNRFu?= =?us-ascii?Q?QJKx5pFdtNna+zqnDmZmlleZXTACII3T2dOOSrvuHRc5JDd8IXpTFgxA72kj?= =?us-ascii?Q?ZzusKOCdZjW7O30i3okjiuWwwYsWRuxVmlvws73mWVG9loU/WVImgnW5b26i?= =?us-ascii?Q?AlRMOR7z30rSjhZqYkCWucLlp7Ka9suNew6YLeRHhiMSvc82d1PprUlFblCv?= =?us-ascii?Q?wWqLhJ6IFU1Mrs2m4LZrwKlfa2BxB0v83/wGDoRita65fgsgMQzgayJkDXSN?= =?us-ascii?Q?eLqklq5sP62LETBqXnDJ74YUp3M6+Cr4UtF6Tbv5I6+iO5hPcn/bR5tgdwY5?= =?us-ascii?Q?uXtN/LdvtXmabepcnXIS0WffsXlGghwkLn19L2NQoF7U0osGcg4AEGRQmFs5?= =?us-ascii?Q?jdtZUygfEoAj0Qhv9BCO9HrY02Rn7/OISjjQN2FbpSgwdvRQsaQ3ic/Srg3w?= =?us-ascii?Q?GfZgPGgVm/vEZF9Re1o=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: c418492f-c51a-43d3-79ea-08dc420550ff X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB5744.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2024 19:56:18.2378 (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: Fd340MTFtYCWHjojh7Yf7UPKlt9lmnl3XD7sbnePAMcm5UZAYepDDA9UKitbJDIl X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8882 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 91B994001F X-Stat-Signature: sfpk7gscj1tue5hk9fta9b1jdy6i7b8y X-Rspam-User: X-HE-Tag: 1710186983-695581 X-HE-Meta: U2FsdGVkX18jx6nOZqPLHgtN4E0zr0D9rFOjzc6YyiRZuYkAdU7/9eIL4Ik6Z6eQNyTRMUs5nd1vv1/1cu5iEH3reEhP91OGPmsci+B/Hpdl7bvuP3UASUqlwtG9wCi6UhZRC79xQFP7zgpWUQFarOATzoWroKPHqY6oHC0A63FEMG7y0yy1kEaZrsjnikj306r9neRROdLFhsP/Zq3onfhuJgdNYHzFAoJfArA8gD+FvlKOxAXj7bmAqtGktVkmAqX6XxFeZ/hAhSKiHUXFuq8BvGVocCryKGaC6eby5U17YaDAPhwHT/glI/9slVeJUXWPHWbwWtbD3qXOBlpMkbQQGg4VrWIrrszBG0e7wKIGXTX4hajDYX7tIjLJo2qI5gfAAf6PMNkO7CpMnoxnlseq+w0g2RQ0Ds9BSREoPuRlPiAyTMQF+n+eSnOAR5r9WmZlBGqb4H4sKtuTWkRjgxcLTJNZr+B/+1nizxVQY+lbKS1nlZ0maZwHqc2ofaeXkbY4p4Rd95BeSjIpPbIz+N2dFtR24nI5oQAMxcOFdHCSejgjv+TXSnvBeztdFc5E0dnkS70A1Af5WLxK7KeKXNcCMZ8nRuPoKcmdU3e83S3426ukAitIMFhuUGV0ToL9WWUIgK8GbZaKZQr4UW9GGPOH4udPt2xIHlTlIXwJyku7bb0Mo4C2lqrShh6ftPZQPoELHbKKyJq1v96urwldb2AU+YpT5i8ml1WxDp7rUcVs2iQWNwZxbnzzSWM+axHJbqipCA+FwdGL/9A3oqLFdcafA/thhHiZXGnNi4tL0r1aHgvfPIEKLvfSN9qD+dZfIYjw8PiFdwaAj1pr+m+3XSBUGs25TxOO+GxmoLdkqQdRWd3AGflPrfar6wgrQ0H0gl/FkEaTeXohTrlGmrcvSNJCQJptGoumXU5DdhlckelafMSVn/Mrp+SPmyzCCYp+ss2sLLXN2O6HmSASoMJ WDk8vtJF +D0BO0vVuiAb1R+ba37l94WXKMwVbtjd65xg2qESVk5y73FFz1LeF+f5VvnFT+zlf8qAg0egNxveeZokhKgWwvEgYornJI2SLObTbrSdWRlpT4kCJ8VedxfAaXShsyaAv995+YV9GaZjvtR5ZH07BQsXs2EBzw2JAa3kEo2oNmt4Nn+02n8CuNZWAGiR2PWhnRDEClnHOWpn86vL6IIzJKbERBRQU6Ls6lMsntSQgermQQy2F9zNffCqwIn9y/vorMlJnw7NBDXloos2eLxidZrYsj3NSBwd3rfhQNK4gwHoi+j6L8yd27Q5rCtazudIZTk1jz7qks0wtTANNqTH2jULakz/xHa4mF+RQ/LsHdOET7pYCLW/BgGY1cY8Pw5J7mAGTyIlHmwemu4atqcYEGj7O/6mCYukxV31c 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: --=_MailMate_1B58DD02-7015-4815-B354-729BBA140DE8_= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On 11 Mar 2024, at 15:53, Ryan Roberts wrote: > On 11/03/2024 19:36, Zi Yan wrote: >> From: Zi Yan >> >> Commit 616b8371539a6 ("mm: thp: enable thp migration in generic path")= >> did not check if a THP is on deferred split list before migration, thu= s, >> the destination THP is never put on deferred split list even if the so= urce >> THP might be. The opportunity of reclaiming free pages in a partially >> mapped THP during deferred list scanning is lost, but no other harmful= >> consequence is present[1]. Checking source folio deferred split list >> status before page unmapped and add destination folio to the list if >> source was after migration. >> >> [1]: https://lore.kernel.org/linux-mm/03CE3A00-917C-48CC-8E1C-6A98713C= 817C@nvidia.com/ >> >> Fixes: 616b8371539a ("mm: thp: enable thp migration in generic path") >> Signed-off-by: Zi Yan >> --- >> mm/huge_memory.c | 22 ---------------------- >> mm/internal.h | 23 +++++++++++++++++++++++ >> mm/migrate.c | 26 +++++++++++++++++++++++++- >> 3 files changed, 48 insertions(+), 23 deletions(-) >> >> diff --git a/mm/huge_memory.c b/mm/huge_memory.c >> index 9859aa4f7553..c6d4d0cdf4b3 100644 >> --- a/mm/huge_memory.c >> +++ b/mm/huge_memory.c >> @@ -766,28 +766,6 @@ pmd_t maybe_pmd_mkwrite(pmd_t pmd, struct vm_area= _struct *vma) >> return pmd; >> } >> >> -#ifdef CONFIG_MEMCG >> -static inline >> -struct deferred_split *get_deferred_split_queue(struct folio *folio) >> -{ >> - struct mem_cgroup *memcg =3D folio_memcg(folio); >> - struct pglist_data *pgdat =3D NODE_DATA(folio_nid(folio)); >> - >> - if (memcg) >> - return &memcg->deferred_split_queue; >> - else >> - return &pgdat->deferred_split_queue; >> -} >> -#else >> -static inline >> -struct deferred_split *get_deferred_split_queue(struct folio *folio) >> -{ >> - struct pglist_data *pgdat =3D NODE_DATA(folio_nid(folio)); >> - >> - return &pgdat->deferred_split_queue; >> -} >> -#endif >> - >> void folio_prep_large_rmappable(struct folio *folio) >> { >> if (!folio || !folio_test_large(folio)) >> diff --git a/mm/internal.h b/mm/internal.h >> index d1c69119b24f..8fa36e84463a 100644 >> --- a/mm/internal.h >> +++ b/mm/internal.h >> @@ -1107,6 +1107,29 @@ struct page *follow_trans_huge_pmd(struct vm_ar= ea_struct *vma, >> unsigned long addr, pmd_t *pmd, >> unsigned int flags); >> >> +#ifdef CONFIG_MEMCG >> +static inline >> +struct deferred_split *get_deferred_split_queue(struct folio *folio) >> +{ >> + struct mem_cgroup *memcg =3D folio_memcg(folio); >> + struct pglist_data *pgdat =3D NODE_DATA(folio_nid(folio)); >> + >> + if (memcg) >> + return &memcg->deferred_split_queue; >> + else >> + return &pgdat->deferred_split_queue; >> +} >> +#else >> +static inline >> +struct deferred_split *get_deferred_split_queue(struct folio *folio) >> +{ >> + struct pglist_data *pgdat =3D NODE_DATA(folio_nid(folio)); >> + >> + return &pgdat->deferred_split_queue; >> +} >> +#endif >> + >> + >> /* >> * mm/mmap.c >> */ >> diff --git a/mm/migrate.c b/mm/migrate.c >> index 73a052a382f1..84ba1c65d20d 100644 >> --- a/mm/migrate.c >> +++ b/mm/migrate.c >> @@ -20,6 +20,7 @@ >> #include >> #include >> #include >> +#include >> #include >> #include >> #include >> @@ -1037,7 +1038,10 @@ static int move_to_new_folio(struct folio *dst,= struct folio *src, >> enum { >> PAGE_WAS_MAPPED =3D BIT(0), >> PAGE_WAS_MLOCKED =3D BIT(1), >> - PAGE_OLD_STATES =3D PAGE_WAS_MAPPED | PAGE_WAS_MLOCKED, >> + PAGE_WAS_ON_DEFERRED_LIST =3D BIT(2), >> + PAGE_OLD_STATES =3D PAGE_WAS_MAPPED | >> + PAGE_WAS_MLOCKED | >> + PAGE_WAS_ON_DEFERRED_LIST, >> }; >> >> static void __migrate_folio_record(struct folio *dst, >> @@ -1168,6 +1172,17 @@ static int migrate_folio_unmap(new_folio_t get_= new_folio, >> folio_lock(src); >> } >> locked =3D true; >> + if (folio_test_large_rmappable(src) && >> + !list_empty(&src->_deferred_list)) { >> + struct deferred_split *ds_queue =3D get_deferred_split_queue(src); >> + >> + spin_lock(&ds_queue->split_queue_lock); >> + ds_queue->split_queue_len--; >> + list_del_init(&src->_deferred_list); >> + spin_unlock(&ds_queue->split_queue_lock); >> + old_page_state |=3D PAGE_WAS_ON_DEFERRED_LIST; >> + } >> + >> if (folio_test_mlocked(src)) >> old_page_state |=3D PAGE_WAS_MLOCKED; >> >> @@ -1307,6 +1322,15 @@ static int migrate_folio_move(free_folio_t put_= new_folio, unsigned long private, >> if (old_page_state & PAGE_WAS_MAPPED) >> remove_migration_ptes(src, dst, false); >> >> + if (old_page_state & PAGE_WAS_ON_DEFERRED_LIST) { >> + struct deferred_split *ds_queue =3D get_deferred_split_queue(src); > > do you mean dst here? Right. I forgot the case of migrating from one node to another and though= t either src or dst works. Thanks. > >> + >> + spin_lock(&ds_queue->split_queue_lock); >> + ds_queue->split_queue_len++; >> + list_add(&dst->_deferred_list, &ds_queue->split_queue); >> + spin_unlock(&ds_queue->split_queue_lock); >> + } >> + >> out_unlock_both: >> folio_unlock(dst); >> set_page_owner_migrate_reason(&dst->page, reason); -- Best Regards, Yan, Zi --=_MailMate_1B58DD02-7015-4815-B354-729BBA140DE8_= Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iQJDBAEBCgAtFiEE6rR4j8RuQ2XmaZol4n+egRQHKFQFAmXvYeAPHHppeUBudmlk aWEuY29tAAoJEOJ/noEUByhU41wP/RjMyagVKz9Hiy2G3hVuFs8G9cOSJbN/eFVa sswnMcwDeMd99476Z18eATbaeGXcQiXAQ8El9o+fmuHCSjc4Su2DwBZ/mNuo1WFc XdP5Up8f4yk03HhEArfx7YsrFr0yLN98sLOPfJjhK3dEyfDsu5bgqz3IFisFg0W9 0ylpWsBYY0TTrCM0UmRG4kbsn3OSz750BRe79NvyvHMYCEqhuq40kS1i5EiElWlc QgFdnbqpcgSwGHWI7R+ouu6zw2hIFVh+pB7k5MfyBMDp1JDWtSVS3OLlOWTP2H09 Q0cemN4zkNl5P2VdWj0H9FLjc2FCkRURrl1CNIWTf3dSzPtwMCU1PDQSBstTQyKX nU94hvSUq8uGnP9ZW9ksEAKC2wn1fWuSanVuLlaYPA/4kmxnOLnxXSCCqxizlt41 dF3m1PvY4LAzgmeIg/gdEu2a0bKFFQc9JAdUCfVn7uspzYx5vOshlqzCTz0bojXq LCLbjg/wU2rzrbOcMbuqXyyCxH+lljl5HyY6cPIhc5wVnuvyS0iq+/WvB/CXdbvZ NSLXrttsToommB7kSQk+ZViGHJ1QtC7D1U2SvwPC3I5h1fl4JJTdukH/Rj/4UOLT W+KxAuPTxK4+QK8ltr8eF0lMtudQDUDCjmuinYWUPgAu1r3U+34rTW4Z8W/Xblt2 KRYK7rWn =4oVT -----END PGP SIGNATURE----- --=_MailMate_1B58DD02-7015-4815-B354-729BBA140DE8_=--