From nobody Sat Feb 7 18:20:59 2026 Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11011041.outbound.protection.outlook.com [52.101.52.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EDEED24887E; Fri, 30 Jan 2026 03:52:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.52.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769745131; cv=fail; b=DhUPD6E5bwERFuHi6s9r+9q9+sdspqCDXuaHcCBIb5H05gy9tXnWm+Xzon9t5+4X+UAlkYM2R9JBzLSeGYJoEuKEalgEXb7fjcUQZyRWF/Re6ZeGAfMZxCHp/f67cg3jeDUAoBWSBxzf5LGiTHM7OmnjRMtgBw5SBhPT39vPCqg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769745131; c=relaxed/simple; bh=rY10aBNv+hVu8RWIqM+k1t0xpEIM22BrN+4g+GVr8FI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=WDtCFPVekYcrGO1o9WqG60nI2YQL0SrWy+qmeB3hMXGp6sLzmTeTIMFlvS5W0JKpffcC20mzDe8ond4nB24OZyS7fdvhxEHLbwmws3J4aZxuKlxMH8efEZLZL4b9WgOeC3gNvqZHVhYX/MFxGZ4eiwiU1rHQp2Jhy4qcFmF+kiY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=qekvfskU; arc=fail smtp.client-ip=52.101.52.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="qekvfskU" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TEru4vIlnwdOz3JjNxXz4sVIq2b0D+WeoR7gVBhQ0Se8UZfjyW8iHNgz6RVn9xI24Z5GcVdS/loBFdkLaE9Fn/qyvrIpHBZwMlvrh7JVERvY/wmZqsuFFarB5GE+JAom7ZM6EOKlqQDIvY+riUWtNvCbHjNvLM5EciVnznRZSU1tud8YOR7VCNlYuXtAobDPfjgORGkWFUKCsDucJVJbC8yVDNJpfAMX+gDcDn4flq0SBKqjMTtT9SAAdqk59Rh8LkGD1JS/rQaPyE8zpyN7nHxQfBjv+ewS78+yIydnx3TuzssqexdWzbHgLmn9b2SPEDQQ3Uc4D3/63YXgF5JFfA== 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=ByddRn+hZTXIUhIdIcU4QiWLDoE1Q3I3QIy7y1cPKTY=; b=htf3lWXU/XK6+UnfjJjc6u/uvebpWCx/onLtbJOH6sqCsvMbn7jMgxMjxgnp4jnHkegg5zukjXZEkXSdwN4jgzxwdYJCxPe7TPzocTj/AfemjWLty2W0D4AGrkw3a0+kyVa0qDPCS4TIsBAN3H0nLhkSRkZVGhHnsvcXYEsEG0caYtLHIi66VJFGlYrzrttlIE3llPpla3ug1t0agl3wnD/oRtTyxPy41vsgN8jlJqTOZG7wSf05hZWSCN42kjJBnSVhLY9p3RFca0wXl7vP6ZWNtjdofNQCNnJSA9WHlfqZfmPrN3aDOjzu5tl7oRHkZXMUydwYoF6unzTt+aoOJQ== 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=ByddRn+hZTXIUhIdIcU4QiWLDoE1Q3I3QIy7y1cPKTY=; b=qekvfskUE4uKEW0e1x6rYbtzhQjF81hif8k8wVRuriu7s123MKEmsbZg9E3FtCIeSVSxBLD+T69fInEf6ghGQN5pKh/u9YbWFprzOqDqhpNKG7DI2HO62MDDO+C9D23ITjrv17BL38H7Nb6GPRww2W+HeFJcQIeMsxIzBmzxZKX0ZmNvYXWFEIAqFY9mCwEIZBTV1/u44xtEJoTxPHsYDgCeS3w7OA+HY7OcrDkIDbM9kVaI8v5kTeScvlDVjKfEGb+pPr2utTpkfmJUu16uME9hndaJYT7rY/MDeVPLx1F/VrICuS2EB6HkoXKDYj3xqwtQRNx8kXnBflGyWJaezA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by IA1PR12MB8312.namprd12.prod.outlook.com (2603:10b6:208:3fc::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Fri, 30 Jan 2026 03:52:05 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::f01d:73d2:2dda:c7b2]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::f01d:73d2:2dda:c7b2%4]) with mapi id 15.20.9564.006; Fri, 30 Jan 2026 03:52:05 +0000 From: Zi Yan To: Jason Gunthorpe , David Hildenbrand , Matthew Wilcox Cc: Alistair Popple , Balbir Singh , Andrew Morton , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jens Axboe , Zi Yan , Baolin Wang , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Muchun Song , Oscar Salvador , Brendan Jackman , Johannes Weiner , linux-mm@kvack.org, linux-kernel@vger.kernel.org, io-uring@vger.kernel.org Subject: [RFC PATCH 1/5] io_uring: allocate folio in io_mem_alloc_compound() and function rename Date: Thu, 29 Jan 2026 22:48:14 -0500 Message-ID: <20260130034818.472804-2-ziy@nvidia.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260130034818.472804-1-ziy@nvidia.com> References: <20260130034818.472804-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN2PR15CA0047.namprd15.prod.outlook.com (2603:10b6:208:237::16) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|IA1PR12MB8312:EE_ X-MS-Office365-Filtering-Correlation-Id: af312b66-1add-4f82-0b59-08de5fb2ef56 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?khti+3crQVF1O/I+3an1z5eLuOCgk9qwg4eqeA9YmWUUVRSDXhcNwCn9Sc3u?= =?us-ascii?Q?hpfB7s2GR9VYuL+bAzMt+1UsmP4tPRTyqj7db8oiQRhL6iZYqC8p822oCrIA?= =?us-ascii?Q?zARd75kDt00fAb941duBaiuBo4+mtcSAH1hywW8a8eA4z9cv4/rfFJZjuxA7?= =?us-ascii?Q?cF0TUEGn9kg68QZosC8R85X/HyxU1Ie9GoCboqKiP03+V3+JMsOZKyPlj81G?= =?us-ascii?Q?MWTOlKKSGA6JDBVPOwwi7I0fkKuOMb+fvxjiPljrgjVXNlxwK034A/6rxTVj?= =?us-ascii?Q?ISE26I76PYn1Z3BBgVbOuxbgbd2GGEMhkVx+RilbUzB1veLAyLUI6YPHPXB2?= =?us-ascii?Q?42Y+FS8XPLRvrNIlnk8OL8VVoJWnimWtVqp8kTGdffe/HnY/Urda1Ij0VOuB?= =?us-ascii?Q?+SryxkfznF7PbK64dc4VW49LyKy+nh660V5lDw4aSOhXH8hdVJSz+wDWM6Vs?= =?us-ascii?Q?cRpMxn2nwtgi4ua4y0JlUOJJvjVYzqAO0grolnYbDSIQdCdJzlBldwNykVpf?= =?us-ascii?Q?mVxTfi1imgIU4nWOJHcWqlYxiUMtGo/KAR3Pd5aXtLCFPJMOeH5cg0z/rWju?= =?us-ascii?Q?cgjk0XeMBdB81S0R87FqwMmp14pcqUyvrViFWZUqk3x8pg4wlC4DS1yx3ej1?= =?us-ascii?Q?Nba6pyKCx62O7c1/3iYQgOVajBQDuthcACU1H3FdXcWx/7bA1E77ItWqpJnS?= =?us-ascii?Q?txZxoUbRuiXOTDOi5G/FMAMXQzsUTuR4EMx5/XfeDgIP/cacv6Y195SVJS/+?= =?us-ascii?Q?dKQBpwftJYOY7FQxoxt+4t1nMxhR79ggn/CzGkMZgrf6SbwKlGVvPJ/tFGvn?= =?us-ascii?Q?ZSnFuWxfdVRXgZGKgnYR5z9mqrPkLWvdCNMNiFpyxJ1nJa3a1qIJnxlGqCC4?= =?us-ascii?Q?YtKCNxaIKIl92rLhDN1IDBubEy1Njykb/iL9fmonMu62HWvAdaGCkhzSwpqW?= =?us-ascii?Q?hhry+rNbPm0F+uPnqbwF/XlI3U/iNnQRp11xifokZvMMD/jvtLiOZqx23M5L?= =?us-ascii?Q?g5FYDxSRRGPYVSdI5EG8Yl2zdKv/o7aa8pwvR6pntENLiZg7mtzVsNDWU6eg?= =?us-ascii?Q?Hp7WV2qHAeuOlNpwUZM3NoOd8ABIi06kWdhtFhcmKU6K8OGY6kL9EDH2Jty+?= =?us-ascii?Q?SvvwhhZtfIwN+zKA4JYSLmvPPjHl+1Mnceq+LdEsgrAw2B5zM1ZtnAVtV9rB?= =?us-ascii?Q?5jDGdUfaBC0LzUm/aZjYT3lM3m+tE2fIBvu2AW0CURLRcOuYAylZk1SlF3PQ?= =?us-ascii?Q?c/+jqzhIkZzZfKJ7SbZYofguKg8SJx1xbb+cwVNHNGCzbkAOQdCx7lwY5L2P?= =?us-ascii?Q?ccQbfINWHXBOP2iBX0g86b/W5x2aeyNZteoZ33z7KizQCMmX24B7US0MSJ/H?= =?us-ascii?Q?M9A/jWR6/aNW9p/FplZpIRw3S6qzIrJldWcKXExb3o46G/c3iDnauhgL0fSg?= =?us-ascii?Q?6yY7TkK/OJbxWmmwG+3rZmc75VWEgrG6rXq7zFRgnCaW31nLsv13EyGhzGbF?= =?us-ascii?Q?NLwfnnpQliTsGFguXCzTGJ/Z1Lzqbz/ZMNOPQABPbiTjEIOn5UocQHVp3Zrw?= =?us-ascii?Q?TaYqTPsadr01CDZh9AE=3D?= 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)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?VX4BSDT6tKDn4oKPkC9vH5WgB8oUGHTx0NTTarWYkM2XfdtL7hzvJ+/tiVlk?= =?us-ascii?Q?LyDHuN0sqezgKf6mo9PcJNJUf7r8OWFPeXdnd0MfZ57D1kwSJp0YGXwNwQMB?= =?us-ascii?Q?CD51n4qC1tOo+780aAVToejle55FaD90qyLzx+zROnajvlmoIKLQNjBzXfYO?= =?us-ascii?Q?T0h1EuA8IYho9RjhzafrhL43Bqze5B1TCB0XeAEyiN8PiGQLX7VfcgmZTSVt?= =?us-ascii?Q?kKPQDtfR34DOnLPtilfAT/uFB6tvCJOXfrqDbzD6QIuhilZV4VABLWR8DR9Y?= =?us-ascii?Q?oGLf1ui/b/c/mhOXBaqO58Z0geWe+a6YZKGod9yye7qhgc5G1XCn9mSljjoT?= =?us-ascii?Q?pNdSvWsKif9IodOJFFLPiqK3L+y52/LBilQ1DJnFZ3eRPgDCbgKQVGhD0+Kh?= =?us-ascii?Q?wsI1nmel9NX5aLQBFGJQiytIb9LmMRdmAXGFB2S8CBvj4S4sLoJsvmT6IRft?= =?us-ascii?Q?PCVewX0ynYnicK+bRfXBf8DpyXacooWJTMWNB3n3Gpa07REyi0f5GjfD3QIo?= =?us-ascii?Q?cyE+1L08gHn6ejEVk1I7Fs2ue6YFvjyagfaAiPD/yXoFD/WDtoItGL0ZakYD?= =?us-ascii?Q?gJtVTga7QDo5pWita+n+8y7F/8XP5EVmKZIAscF915Qx+mSHv3sfDKKX6jj1?= =?us-ascii?Q?oNnjF7o/r8gr7fBupNg7yFNY36QaPIAQaQCrfNUdeU56PklDOrn88Rf0/oaV?= =?us-ascii?Q?l8+CB0tYMywlHnwmevz83nvdkiMo1P5DsyzmvYN+gWvKrJ1DTZK677lVESnj?= =?us-ascii?Q?czQbyNdX7RgYxIoYAMSWUdAZjMGvLiXJcWE2KuXHK5UI6cm3noBsSHVDe2FB?= =?us-ascii?Q?CveDiIjjlTcWUMrRPU8A4wMjuKGShwZPidRMxj+LdbL3YvHOKlMG5GgBhkJc?= =?us-ascii?Q?9kh0/MpSFWi0xuxboZoeC7RdyhXoJzKKuoDaqVwaO8Gu1D6lhhOt9ZdJJP66?= =?us-ascii?Q?dyL9DiYVCpDNUprDyWjLcLpa20U4wFnuUmueYfeCTnaUkI2dprSgZHULwA5N?= =?us-ascii?Q?yYIL4ZdhoSd1T3tQcKeZntaeSJEaCa+TtNu/uVDH31RxwpZfRY/S56dYFfSM?= =?us-ascii?Q?LtEwMHKLnccITiV5T1ytbRp3YaB4NUEr/ljQ8uStKQYUA6RBh1BSTR2WFDR5?= =?us-ascii?Q?uukL82CetcJ+QYQvLnOkRs1iwInhfNKZg1855cC8MwFem2eISNOLnBaXPqSI?= =?us-ascii?Q?amRqgw+BIIUK/hpARf+QVii1auQSi0QGWtEUwlDG0bSoqjsdHg5R7qpiy/Bc?= =?us-ascii?Q?QHOcmfrOy20DDw7kRjoH/zGGxYuKKxuQllyT++N/Tzl339UIk0toUIBEj2zD?= =?us-ascii?Q?P8HDhWckOT8gXf9feLB6+9lZTLW5xsr9Pso+PtEu02dc1ceDJ+eUsZ4e2UDr?= =?us-ascii?Q?BYE7ev1iXZZgB5poRbvnFLLWp6GbRzWe9iQnJDD/snwRB6XjQDA+H8r0LgXq?= =?us-ascii?Q?lJWgYPDBUV6Ie9eeVNXant84xzjYWYOnnDGugmMF51pymU2thRZ5UYz3bHBw?= =?us-ascii?Q?EzjOM2D44G4Gj06KbBlUGjiFB3kOgfYO22CqY3YwvweAMb7UMu0Lf0AX27qI?= =?us-ascii?Q?fUuX2KupL7IzxA0HVRIkz0wZ0mLiYBoHpC6+Hpf6lg0H3V8bu940IUl9vlwa?= =?us-ascii?Q?f/5WDP81YPpMuJETqIKOBBQkeuwecFaNSLh5CZfgM9ZTRBpvVgNusZA4KeST?= =?us-ascii?Q?SyXKo9WVArJaJdAqaIHyRMPs9sBeP1aHg442DO23YBsmQClR?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: af312b66-1add-4f82-0b59-08de5fb2ef56 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2026 03:52:05.8551 (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: Q9uqps7Z2zHCOisK7OkVhsV0uooiEaqWDgGzkTDY3I8Jwn742VcQVAQJbOOEfxaA X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8312 Content-Type: text/plain; charset="utf-8" The page allocated in io_mem_alloc_compound() is actually used as a folio later in io_region_mmap(). So allocate a folio instead of a compound page and rename io_mem_alloc_compound() to io_mem_alloc_folio(). This prepares for code separation of compound page and folio in a follow-up commit. Signed-off-by: Zi Yan --- io_uring/memmap.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/io_uring/memmap.c b/io_uring/memmap.c index 7d3c5eb58480..8ed8a78d71cc 100644 --- a/io_uring/memmap.c +++ b/io_uring/memmap.c @@ -15,10 +15,10 @@ #include "rsrc.h" #include "zcrx.h" =20 -static bool io_mem_alloc_compound(struct page **pages, int nr_pages, +static bool io_mem_alloc_folio(struct page **pages, int nr_pages, size_t size, gfp_t gfp) { - struct page *page; + struct folio *folio; int i, order; =20 order =3D get_order(size); @@ -27,12 +27,12 @@ static bool io_mem_alloc_compound(struct page **pages, = int nr_pages, else if (order) gfp |=3D __GFP_COMP; =20 - page =3D alloc_pages(gfp, order); - if (!page) + folio =3D folio_alloc(gfp, order); + if (!folio) return false; =20 for (i =3D 0; i < nr_pages; i++) - pages[i] =3D page + i; + pages[i] =3D folio_page(folio, i); =20 return true; } @@ -162,7 +162,7 @@ static int io_region_allocate_pages(struct io_mapped_re= gion *mr, if (!pages) return -ENOMEM; =20 - if (io_mem_alloc_compound(pages, mr->nr_pages, size, gfp)) { + if (io_mem_alloc_folio(pages, mr->nr_pages, size, gfp)) { mr->flags |=3D IO_REGION_F_SINGLE_REF; goto done; } --=20 2.51.0 From nobody Sat Feb 7 18:20:59 2026 Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11011041.outbound.protection.outlook.com [52.101.52.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7275434CFDD; Fri, 30 Jan 2026 03:52:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.52.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769745132; cv=fail; b=JjtpgbmsxXwa+Xejo+5Y60oQr8rZfh2mTw931JrnmTS3yNGcrNbwy3eE1P6KnkFZrXXfAbYM+vnlngB8PavUM7pFH4RukLpbffb6mBCW/Vf9Nq2U+u01kVQOCorXEJ9yCsLebCD8/goZoCipKzcwZTMc8oTvFcTERszVGxgHs3g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769745132; c=relaxed/simple; bh=NWDWL+OZsk0I88OuXyEYk7lWENAmgeQjoDLWBRPlnoU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=i3iYKLcD0eZaoJeMFIGbiT7uKhoUzC0197pLo1Z9TiIYYhbmAOgV9hHujtSqSqtnpc3CPe1HKInSCUPG1oT6uQVTHAYkAqIxA1CRkxMUSCDMGYJRJJeByeizVtACoTm5jdtY7anogFVFniTtyLlVUw3u19NZYSJNHL/mheBKpwg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=Cl0iBwR/; arc=fail smtp.client-ip=52.101.52.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="Cl0iBwR/" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=y/ZW0SB8icM0WAqvP/MlyCyBEKE1gkdoGwbq3xa6vit17uzHzo/JbdxpRdcOz+DhqiJHWXjlurqK2ewjhdBP9ugCsPq+UgrNxfriNDZsLuSWstwHCt+sR/hzetBG3Fh2sxTGA6P8a2ByJFJtsHrc2sJG7m7Hao2+UwTPefoVXHV1nqIxFAYwP4mIPZyuGGOQ0nWPYmz65OvSstZcoy1h+WzV4b/U+G7dfC6hGax9CwGgnggOLFBMIe+3bAMHXnlbJvgofc3Mb5kJN3Zv/QEjIL9yQX7Hv3xcplOD3/4FRDXRUIf/Bdas8PcRL5qQrHn/q/moaGRM7BA0nY7UpMYWJw== 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=fGmtYMB7wSNXy9JriJgwExQCsUxhIMaJdhohoIIAxVU=; b=u4kOy/JPaygKlVBTWcmtxTkhdNw2x7SJ/tcqobteJGNOYni0jQFXBmhiZchTmdick/vhwzeH8oax3LSfjbeJYYwlRasyBUygNiey552huWU1X6HLzQM73C6F8dKH6cdy4EkOh/Poy9L8TUmwRpyxSPHVkyzE6+aDjWHtsAH376NPYEAkJ7oP4sLmNmEqxPdHgIegMKGp8pBQd5lNJ5QnU4L3RdMH7PTBXhmEGeD+5v7ilE/AW/CUMNYh4UClrSeH/b8bP7aOVamMLh8nKjfHrLOrrGV6PumXz8OyUl47REgVIKcuIFAVKHZMvwUPBbRUvD5vFUoavJ7f8HMP3hbL8w== 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=fGmtYMB7wSNXy9JriJgwExQCsUxhIMaJdhohoIIAxVU=; b=Cl0iBwR/SSRkhfGHmIi3j0md5s0c7EZI/0BaY7CrCaM7Dm4++jImpybf/m/YBWYBW1cLtqSA06FBLGjwXzrJDduIe92ArrK7p5rgjg+B8fkCyopc+2ch0uCRDZgjB4uSFVoEl9RKICbz99a44mgjUXmM7LzZ+hLvCttJdVrCEMtdscFR3+wdAueZFk2tyiOhapO56mhzl0Xu6MeO8SlVOgXy9D/Ak9CuEszrYx+tVf5thkUxKiXvJsoUB8cuhidsGFkfBUl8Ps8x8Z/U8WOipmTAJWy6S9Fmyai+qMNAnDxqookgTETqbkcTJNAVJ79qvAwp18NB5BURy6EPwKdfLg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by IA1PR12MB8312.namprd12.prod.outlook.com (2603:10b6:208:3fc::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Fri, 30 Jan 2026 03:52:07 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::f01d:73d2:2dda:c7b2]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::f01d:73d2:2dda:c7b2%4]) with mapi id 15.20.9564.006; Fri, 30 Jan 2026 03:52:07 +0000 From: Zi Yan To: Jason Gunthorpe , David Hildenbrand , Matthew Wilcox Cc: Alistair Popple , Balbir Singh , Andrew Morton , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jens Axboe , Zi Yan , Baolin Wang , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Muchun Song , Oscar Salvador , Brendan Jackman , Johannes Weiner , linux-mm@kvack.org, linux-kernel@vger.kernel.org, io-uring@vger.kernel.org Subject: [RFC PATCH 2/5] mm/huge_memory: use page_rmappable_folio() to convert after-split folios Date: Thu, 29 Jan 2026 22:48:15 -0500 Message-ID: <20260130034818.472804-3-ziy@nvidia.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260130034818.472804-1-ziy@nvidia.com> References: <20260130034818.472804-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN2PR14CA0017.namprd14.prod.outlook.com (2603:10b6:208:23e::22) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|IA1PR12MB8312:EE_ X-MS-Office365-Filtering-Correlation-Id: ae0f97de-8c1f-4169-dddc-08de5fb2f032 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?lPUps5xOKGByx2rtszCqYy60B4QHlNcKbzWPVCUj3fTcTwDhxIC032a/EFlI?= =?us-ascii?Q?AAEROsfjCbOIzJZ7HhgzipCr8DMOIiYF1/051GCXAKqaiVFbBLWZKABW+TLk?= =?us-ascii?Q?91HfWn9BqXhSODwG+D0quBoPAxIQub1jnhvckZxf76zjNtTXapS+IpcCLs+t?= =?us-ascii?Q?lbzdHaNHVtCRKKIZOd/ldGyd9oOjeNPtSZxDMcdNBbHIJY7vnfiGc9tzxqAl?= =?us-ascii?Q?YOhbLntiA592peTjBIkiLN4j+nyzDlxlMeB3VjaRWdLjM5utYvrUpn855M3c?= =?us-ascii?Q?JUj1UF2sJyG622Ej5NW4WNTk9q7KqepGvG+xsW1phwk6JGrVaxGvsIxkYRr4?= =?us-ascii?Q?6Ozabul02Srl527tB0OJT1OxnEFatfeI8gHOlyQEh79vgP4AT6Hh8SOVo1E4?= =?us-ascii?Q?Fodoi22YqY/9stoXgwCWpB87Zz1SNhlZIGKCQvpvF0umrxMvVgJme6JPvOlo?= =?us-ascii?Q?1Gn8TnBW67BCT6aGn/j8j26u0fXUlIUCaW4RRabG3ds9OfimKwniLtVU+lCS?= =?us-ascii?Q?665olu5Q6SKLzywHUXweBGSyrK4wlu1db0B5vWg90F31wqFAvMRiMEjtiRtQ?= =?us-ascii?Q?FcreBR5TSpYa7k2nHOvDNx5TjKt7pNu2ZERC56Lvc6mVQzGlGfzHPpoDlclT?= =?us-ascii?Q?TSqJgxaowUB6cdvEjp7CpZNIcp+avc7YCu0LQW4dGd6Sipg2VI/poBhdF0H3?= =?us-ascii?Q?mDhpNX7aRhydd9xkCC/dYhbjoURveiN1RX/Qk9RP78VvNZDkww9rQVNESzAJ?= =?us-ascii?Q?0YDn9l0rOXdZsxYEgIPAHFf8JxXUeCSejgWltCLR473QZcy/YApdPMdXdk9A?= =?us-ascii?Q?wuE8VxX/ezx1N6UTgh4X4ly+Z5aECbzjnlNkxJpLQ80UMZgHApGBUkcn7qhA?= =?us-ascii?Q?XtULno4zzGl9z1qT08oGeHO3FWQTkVkI+mxHlbl8MZd1IEOZuL+/soFVM4h9?= =?us-ascii?Q?xsfD9419nh+IcCDzHJedGzWYduuJ0+W6s6reHFfwvS6sRs6+YVN23J+YNjXJ?= =?us-ascii?Q?FXV9VkZFwpehX9rW2ti9rKUcxPMSrF3iQ3QvSnOQkZEzOUXEWA7q2q1tMfYa?= =?us-ascii?Q?WCGLcV5PRK5Pgsy884opeHTVG7rX+N1TxNJkjACIHncLUDV6gwX9L7aFSQQh?= =?us-ascii?Q?6TzJ85LaX6BF8lMpuIVMFhf+2Hv6vnCMtGhFl5Zk3wcO6bbV1pkdWfdZjt20?= =?us-ascii?Q?qXXkBL3UEv94I0Yk14rL2GXamkEP18l0eDt7SQmaD1h+JPA8XHD4YX41O9zs?= =?us-ascii?Q?L0JmpOPzSLzIEfqkAlyGDnyKVuvNVt7Bh/JGkmyOFuBdC273EG46mLttkK9z?= =?us-ascii?Q?6ef4SuLfG00i4TrMHOm/Ky/7IfFDRC6lVDiTgQKAnkMhnomJh8bbny7iQ2pt?= =?us-ascii?Q?we0vA0+KKPUW7uS2dBAgPXpkf5+YSXtkn360KRxnbX/Zoy6FUVUkxd1S4GPp?= =?us-ascii?Q?7FMrOFR0IS2LGyqXJ2uvPlQkngTgUitoU7P4Ehb03wLmXgZRjaQ3gJGtik9a?= =?us-ascii?Q?2fDY5jPv8fzx5OIGA9tfOpmXE2HqFbu/15+Y4Ny/01Pcl0rrIUEVW8oJM55E?= =?us-ascii?Q?IJibDD7qBTVEN/rQ0qs=3D?= 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)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?wWNKk+OZ3v+4WCYc//0yi4CwzPiLa0KfWERtYthAjuQpL/OvN/jOVSTEFh05?= =?us-ascii?Q?U4lVHSFSdmEujpxbq4zymTMez414IBEmfZr29Z5o/jvUx9vRyiKhgJQESO/b?= =?us-ascii?Q?RQpj9NoBSgAo397/AZrNXO55l5IYOLn31h5WCIxpRtJshDAzY+SQMPNVTkTN?= =?us-ascii?Q?86vvx3QRAhOSqGtvo9yly19SwNh2bHeJLHv94yT7c7vcaBOAB5V60mJAx0ac?= =?us-ascii?Q?BMirZSmtqlIIE+omMvlRh42e4zcdzMo21tFZAsNLMg2aUHx1tjDlzsF87jSn?= =?us-ascii?Q?RUB3aQhN0+AXnX0CW0zumjwTkkFOTMOSHWQzaxXFwHpqt5sOVycipDp1jIxC?= =?us-ascii?Q?t770ME5tvWzJ7QJzfCFoH613z6PeATWhJ4XjcKk0NZXOhuhIlGbBu2GPTe+S?= =?us-ascii?Q?oDMHtQ7UYpkU3Awqunp355NBqTaOB7ryQmM11VHoysgg4yZz1yPEquoOpUrG?= =?us-ascii?Q?C444kxCIHo0uAciM5NLx9wR3ZmgJAi2KzgRKFdKrFJu6dPSLs84GqtAPM8GO?= =?us-ascii?Q?tRdSmfU/4+mjioCa78B7ihcOBf5RTz3ripGhAlo/c3PkCdfSRVPkDLcVu/O/?= =?us-ascii?Q?kXw96etKVvkVzccM+dnQMYOlvD6Li4HVMQrLTPd65shZuZ4SoZgbEq0O3UnJ?= =?us-ascii?Q?m74PohxiQjau/SroLDF/VNsOY/SHRhQZ1oLGvOKykCjM97CqWDg7rtm7CBGq?= =?us-ascii?Q?pyCbOrShxfy9eQyxsMjTuFYfondT4m2cQxZb4dkBKzzhZqQhGuWvPELEnVUo?= =?us-ascii?Q?Lbv4DU+bVk8VHTzWioHC3fMCerd7BGVcWc7NfL81bFBL2esYemfPyIK6iLIZ?= =?us-ascii?Q?cjxOvLCxANxhEOeFzq0cGG2vG1eLLrLbqO4a8hDDkI9zPjW3OS3cpmWGVJSk?= =?us-ascii?Q?IjaAkXnz6lQR68g5q/LXF4glOvAnz+Bw5Dy5ZvE8iBKfUk9WxLd3T4yYa0bw?= =?us-ascii?Q?bkrt4K3evCuVV75jd8L9NXvORUj6bAm4bQQjEj4khclf0cirTi2C5toHJ1cB?= =?us-ascii?Q?CI7mrrPP4sR7xj2Lzd6EZer1N9c9Il1d9gynV/Slf6c6N7NWsAGGp6aFYuQM?= =?us-ascii?Q?PMsh3V44IJDiN4tNaKbbntJzLMDFYZz/3P06ma2nGwkN1orevKGTQOdcqbzT?= =?us-ascii?Q?reL08rHRrZvxohc1GPNpuHW0vtZtrUNYH1bXQ/+OaCxiXQBXFgXefnr6A/tT?= =?us-ascii?Q?fvABcykuyZ5KPYLnMTOm6sH8ROotcrYuoeafmenSsnQIY8gmK9UzftAFxDsS?= =?us-ascii?Q?UGNmy5N/pB0HwcSuQbWCxsqisLupAlr3nG0tdMx9TEtM1reg5RrSr8Mgz5Gu?= =?us-ascii?Q?IWGWThBrRE0APbFDIlwVgXGs0J7QhYJj/O0408lA8DwLojYkKYSlVXpgDcJC?= =?us-ascii?Q?pctkpD/1Akw9l0i6zxKIP8uoJ/VNtXlvvRt9v4mdn/t6PY+D8UTM3lcpL5Iq?= =?us-ascii?Q?Ub6JJpENwkqesxNxpFsJfggn6fvHyaFJM0CclOG1dpvCbhBuwjjke0i1gPUM?= =?us-ascii?Q?dUqAy43f9MtOq8q2Oudfq+IzHHTmyAP2oXo2QB56pJskLuIAcFgy/FRLKKxa?= =?us-ascii?Q?ci1616TEzui3ge3+8Aqd5f3S8/Vy61Ep9TtK1JRUrkgG2fUAizrGrT568Y03?= =?us-ascii?Q?STOypehXDtGkIwGxYE+eE7ohzzALLqlHb6A85qbAra/d33T6ndOj+7r4W1bB?= =?us-ascii?Q?oVBUKkdO1qJgf5SfIitPBnEDYDoQ3xu8LCk8fbI/iXmyqcG7?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae0f97de-8c1f-4169-dddc-08de5fb2f032 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2026 03:52:07.3383 (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: zEZ9NngOfNgtqJDLKJja6/icM95Uc9QLK5TyurZ5SsMr7RDgO075cpReRSPtExpv X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8312 Content-Type: text/plain; charset="utf-8" Current code uses folio_set_large_rmappable() on after-split folios, but these folios should be treated as compound pages and converted to folios with page_rmappable_folio(). This prepares for code separation of compound page and folio in a follow-up commit. Signed-off-by: Zi Yan --- mm/huge_memory.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 44ff8a648afd..74ba076e3fc0 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -3558,10 +3558,9 @@ static void __split_folio_to_order(struct folio *fol= io, int old_order, * which needs correct compound_head(). */ clear_compound_head(new_head); - if (new_order) { + if (new_order) prep_compound_page(new_head, new_order); - folio_set_large_rmappable(new_folio); - } + page_rmappable_folio(new_head); =20 if (folio_test_young(folio)) folio_set_young(new_folio); --=20 2.51.0 From nobody Sat Feb 7 18:20:59 2026 Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11011041.outbound.protection.outlook.com [52.101.52.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0704736604A; Fri, 30 Jan 2026 03:52:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.52.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769745134; cv=fail; b=IOwmqrB2NS6e5P07PvpB1cHunhQZhqlXziRcz8ETIhWqTUssrTVZskJyb7dUqi49ClM7sayY8W7Xg7K3Q9ZZAjZdnPPS38hNaW3nMlmyK3a5RYIggmswgeGJn5IXMuYMDrlOjcin9beCKwv0mM/EdDepeNybXXqZ9+W4g0uZSJw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769745134; c=relaxed/simple; bh=nrzb1JRcIUVH+iR6WagN0jcWM/4u3V7PnGXYMAvWnfg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=eyofkPjUwzkGz4Fuzqurbqt0y2DD55JTgDPJqO3vgtCEYSczxY3PI8R3qBEwLWsUFIT1KWbHABiTu6tpnGSd/u9A5dvZo1iS+AhstZO40PIO1cQDzurqCfwPUjhf9+NKBAqAHHNxDDRXg9srVmD6WDRmdGUJG5S3TM22XQ+5MOs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=QDkCUEWM; arc=fail smtp.client-ip=52.101.52.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="QDkCUEWM" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=so8dx4jnoP+DBMNQ2DId/7nFCgzVYqheySm0GOTsnCEMYBQrtybyj33SOuKmp6axJMuEc+sDDGRfY2eu7+6NFzEbwep9wZ/ihODXXQGJVSKU/4QM50dGB8kbVp1pC1DwpsadSwTRMLmkKfAodkkXgRY4zhXNwNGsoJPD7SR62dQTaepDNLoct5kS2arhUBKeF65B5NEvkfxlNgRwWj6QgIWH+TXF06UfId7GLu8AhqoTO1RFGgOXD+B758dnpilKgMCkVxFxbBwgDnrBLN2chRzB0dZ8IGClxZtysisNZ0UW6Jz8h+ba222GrNCVpUG0wp5tttcvsat+jOn9t06IsQ== 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=Qi6a0fURhrPurifYpDQgewVQSbIOADWal2Rw1rBiNCE=; b=e6Wa6eHGfefqj1W+wOWayioNJ/AkdNSNmIHnrd2F2+0uGRjnOWiHk2XzNMxIQHnNiOgbigW1o37oh6KJVhj+7E5K4Hf0/ppA6U/w1K2i6hfMA2p5dfPXP9dF1ze8G9sKG7TQT0RlaY4GGrccIL3TeQ8J0h+tqyYxKBQ+uJDtBeL/K/nU0xaoPU4w9dTQMPJS72fr63IazyEuq2CW0AW/BfMGUaAs/bdOGVYRSR5Qpc4kgnVb1/cFrbMGukuXN0sR6PIZILg/V5AxxXbEjuMsxISbkzQ+tnRLpbp6dvV7vpbwffEnixwkWOJB8tOo+VPQfIGzFdqCflWP7ScisEnBqg== 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=Qi6a0fURhrPurifYpDQgewVQSbIOADWal2Rw1rBiNCE=; b=QDkCUEWMU4/iQxMHT1u6cFgbvZasCTLrXLl0us9mKAR72Xov0sE0eo/05vYZx2EslfaybtG/pCeteZzRZqpfJNrHa24K9RHr7exNAuh4ITguXSiHbBlf3pAuPr6SxILyuxsEFfXYZ8wJqKdNunBZWVUh+WPF3XukU/OrEgafar9dN5MNoUxOVx3xgHz6wU0IYsKx9Ai7Ka1hpj3dFbkAlk1uCXCemo9wCJaKzZX3TEtIWUE5HlwJdWr20nrz5JDp7tmCH02BEvZqtJY+Dl5s6uhAP7kzP0vKHLhPcA1lbEj8NRYiZP9VJz5zHvUDrNkMFqzPbWePsoTbGa0YAEDaAA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by IA1PR12MB8312.namprd12.prod.outlook.com (2603:10b6:208:3fc::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Fri, 30 Jan 2026 03:52:08 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::f01d:73d2:2dda:c7b2]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::f01d:73d2:2dda:c7b2%4]) with mapi id 15.20.9564.006; Fri, 30 Jan 2026 03:52:08 +0000 From: Zi Yan To: Jason Gunthorpe , David Hildenbrand , Matthew Wilcox Cc: Alistair Popple , Balbir Singh , Andrew Morton , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jens Axboe , Zi Yan , Baolin Wang , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Muchun Song , Oscar Salvador , Brendan Jackman , Johannes Weiner , linux-mm@kvack.org, linux-kernel@vger.kernel.org, io-uring@vger.kernel.org Subject: [RFC PATCH 3/5] mm/hugetlb: set large_rmappable on hugetlb and avoid deferred_list handling Date: Thu, 29 Jan 2026 22:48:16 -0500 Message-ID: <20260130034818.472804-4-ziy@nvidia.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260130034818.472804-1-ziy@nvidia.com> References: <20260130034818.472804-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN2PR03CA0002.namprd03.prod.outlook.com (2603:10b6:208:23a::7) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|IA1PR12MB8312:EE_ X-MS-Office365-Filtering-Correlation-Id: adea936f-b09c-400b-4e5b-08de5fb2f112 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?HEzxbo7AFjHt/H/Hkz4TMmYQeM9cVqtbpwUJ3jfnu0jWqYoRYRnfPCqMJgHT?= =?us-ascii?Q?C8rvcXiwehybzyENxnwbbTBp4NLIfgVy69GDEXwE/CiMbPWTRic1At1MMyJJ?= =?us-ascii?Q?Ah8T5/eXHL2mO84vlntobC53u4Vm42yKVbCEAprfZToh3EHpoewc3zCmZ1sB?= =?us-ascii?Q?uR9ZjrfL9e7DxwvheTyMttnbwyR9Do33tK1SUoEGCKWNM6BgHWklK1OaegDO?= =?us-ascii?Q?bPyhaqIc9BZFWMjQXmtNtMVnib17EKfWlh836AKfonEBBhAYfWQwQ86eNWIb?= =?us-ascii?Q?bA4lt3EOoJvehIGlMTBWqslat1R1gTqQ7DI00+vC3wkG+BINhID2OUaqrwhk?= =?us-ascii?Q?hJf/ssHSuSfwXZ721P0Xo69L+2y9gfmhkG15uf9TRQe8LDXy2uC6dmG8lmSE?= =?us-ascii?Q?n5J0ya693yAoY4Xe7g10yR3yZzrCCEzOax/N+hFyJOmA3RDlZLLTWcUlVFWY?= =?us-ascii?Q?Q1kF7vMGxJh/ne+Awp3dmuhjxpKMvud/5/nP41GQyLcCYwAm7JpvM5PuvKGe?= =?us-ascii?Q?hwQVe6uC79yvA0fLIYI6X4vv3Y8uRkJtRm4VuXWgVc6kf8E7EMYXCaBHKOt/?= =?us-ascii?Q?HVAaYkE3KSsPHA6jDh9wF8AxLhm1prQlszuG45t1Ow2F2kpfSVfE6qv4Idsg?= =?us-ascii?Q?0hj0jVkBsqm2xNPxviBOzpwKgch7H0pj6YJ4cNiFdKBrFsM7N+vn0qnlsWFa?= =?us-ascii?Q?I8GR702DoPG3CjQY+8UFJPbroljnp0nAjAe7NyVLKFsp6VT5tESQ6HHbozyb?= =?us-ascii?Q?sWuB1Qodx8zEvSvWgyOcUpupBYVvTCBFZU60Zcx96XZk9fpQoUQBqOee0398?= =?us-ascii?Q?cIo2wHCpjWrHVwL5mJf40sd9atfnJAcHyJMzjrW6iKaSfetd/8YDJfVBZckT?= =?us-ascii?Q?z1G1y4tGzvRP2B4WvV2UVOLGv5PhE8V2MO/y7VERf8O6StPdwML7jSbuIryS?= =?us-ascii?Q?1F/QpQDKF5Zq2JYDm0mjJ74yUVQSte6JOlAt654ZKaKOJKoxva8x3px57GQ3?= =?us-ascii?Q?dFfbOddVomlrg9GzTK0bwCkE09Js8KoiiKKdk+NAedYOlswytduf5pZpb+Zb?= =?us-ascii?Q?0WP1K9RRLTwihlEM4hC8Jqdxove1vZcPf7PRIm+Q87Xs2vUEEx6Ye4nWm9Rr?= =?us-ascii?Q?MOaVFJuUb/3xMJT0PuFJ+btQ4L/2R0Hq1mil/9z9j8vs/vann1mPmANUzNKD?= =?us-ascii?Q?i3JwUt+3qYQWLRb6Q2izRiV2/f1z86SG0Yl2oZ1pMU3l2IoJpRIkjcv0rwXC?= =?us-ascii?Q?RkeRcx3wG58tK7FSCMOd5YmGjt4qqMFSO6Bc+VS4DYQabtppONdwahqEfO0p?= =?us-ascii?Q?FZiiwdJsJmOpTIQiw3odg05+KPq45auqMWZ88Lpd6jsk0ycHwMkiFXi+mvxZ?= =?us-ascii?Q?u5d4fCLfOAYncKp6OUKIB1minuM+U+uH8rSpELnYQix1ji1ruTbqYNVl1525?= =?us-ascii?Q?Q3ucX/BW2n4tuETTwObwtUWLtRE4R9UVzhTiVBtvXyC5CWPjKLGSF0HiihrH?= =?us-ascii?Q?SdzOUAE80OqKdRdd+ZcOAv2lhBLFCXFnlu5Hb2m/dNbDHHz6uNn04y4cXzNb?= =?us-ascii?Q?D0RUwgZKDyiOvqRzf1I=3D?= 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)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?sdQHu7zbgwQzFRo48cD3gyx0ScqGHI+IFl6aaZPMCow1OyBa6fEQZAhNOlAc?= =?us-ascii?Q?8vtT9D60zvD+Wyxjl1n8RnYjhjdQAGxEqS4vmqqb7hq609UuqpXmEiHKxIGY?= =?us-ascii?Q?XOgdEN//Xs3s7tHb3IDoWkhxm9qjbN6ORUVpCIPjEY8DHIOz41nayE5EHL90?= =?us-ascii?Q?bbo349cPypJTAcMfJjE4adpoPeg8C+Zy8IRbAAcKN617SHGYbgV78Ca2BDk6?= =?us-ascii?Q?+VciEuxWAg1hCUukao6zTNWS81pzGFrUqwpo/qf+6ZKsis+t8oW/5cC2EHuA?= =?us-ascii?Q?KkmD4IWmpI6VosM4IDP7xz9EyI5m4OBtxU/8Jt/T7W8r+GNgL/yDJ9umy8NR?= =?us-ascii?Q?/jEC5mIQpKknLPpMIJuuT6Wgwb/iAgMCDJfcm0QTwdxpJQa+A5CYwk4stWs6?= =?us-ascii?Q?AWmsbHSdXilVmJgC2mw0j8HNj2pDhefEEsGuhzYqU+6Gx5ZH54xL93+4s13n?= =?us-ascii?Q?Jw1dZiHu2m53vbXVfj0oRk1cOlF2jlBsc12pXU7G2faT1sVoMeqHaeWFnepY?= =?us-ascii?Q?9HC4Lu2ngxi8CX+PxXkVDUGB9Il6RWQ7v2LSKcIKwIB5wR3kDB8ZAMHF//uu?= =?us-ascii?Q?2zrjOtIGemIzbwcOURGPJEoAY9oZqtDV1q/7ydELWR/ifwYxWnYgZLM2iTZ+?= =?us-ascii?Q?AYg3e201sGRyuQCB9050SpxmdxI0FYMw3J57tN1+bSOE/cOyF6ju+JgUe/Xp?= =?us-ascii?Q?2zvhlF24wIDRhSfVcxKcBgfjOwCYqgtbsYoE3Gxiz+t77M+1dJQUjjegBcod?= =?us-ascii?Q?WW3lGFDPQPenlMunuruKQwlE0wLYLzwk9zkty/2jNZulOL6GAC7LWyoXa4kc?= =?us-ascii?Q?0e86NZpl9kOZr5eMwsTiNNzC8UdfhnWoXJOdGhi2/01yQaOC41Va/hFG6Ky0?= =?us-ascii?Q?uU8nPyNmoNltZW12me1GR6Ed2dvC41gG/t+umQtvUJbcC1A8y2HO4y33l/2f?= =?us-ascii?Q?6gn1y6wq5vUaN1HiW2zpd/Lm+0IJHpKGGL+tqVjZZkgNcYm4NuE0nJuS7nnb?= =?us-ascii?Q?eZZNwSR6CXqhvSIBRfJGhRBt9vKnDY12gr6SNsQUqEql9lnexQpuXP2BOG6Q?= =?us-ascii?Q?6OY2Ago5pfcE2e7mPpjG9LAri2UCcNO4VBXpf6jjSjBLqWpBUzj6CwP5at4m?= =?us-ascii?Q?ctUcmcywSDG8U8gwwxRXhO2KO+E5BWETlGwXcu892HDfat2ego/daRKEyh4Q?= =?us-ascii?Q?7yW52toTKVxRjt1bR1TvPzX4Hnzs5gKizXnIWEhw4lwRP/o8b14QQvC20LoG?= =?us-ascii?Q?DwfFXUUMssQJe+sHds9kz8pjGVRu8kXJANyXVzazfCC0K0jRNvj/G2+5S8i1?= =?us-ascii?Q?RlXqxZOvtrZZubXpiIeNYtjZPbjVEPq2Ri/X/W8pZCKCJGYrvLNx0jtzw4qb?= =?us-ascii?Q?zhwEAvunQCtTyNbgxE1X57cSLRRYvR2xOZOwmmWCv/kjq2pO+rsLDygxmfOa?= =?us-ascii?Q?CDLcXi9DZ1QAT+cdqyWtfWZfK3mPcG/czCfOVnjh1B884O2ZXSn8qlH48aR7?= =?us-ascii?Q?MUNxAEO1RucHTEn0JrkqLy5uPuECvJkJ/6s+AV1YMu9essOXsOyFuSB43oKl?= =?us-ascii?Q?q6I6QaKBvIZIwJmr5R+7Gh4VAZcVLTVvgKTbOwwnpqrcNER7EgTH+a/GB4hK?= =?us-ascii?Q?tExpdHueB1ozAnlLzfXcs8G6jkA5TZ0GZqnT9lKiwHEq0GtEpG3PJUApQMdJ?= =?us-ascii?Q?lfCJnQjDM3C50ss+O6bGYC7E15TvmGyUkui/MADLLBt0Pbiq?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: adea936f-b09c-400b-4e5b-08de5fb2f112 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2026 03:52:08.8202 (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: 6FzJb7LOXCWxVIHWfTNeb/mdBIZ/jDw7vI/XMUYtzoB9g9rUixq+wQRd8cpQ7k36 X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8312 Content-Type: text/plain; charset="utf-8" Commit f708f6970cc9 ("mm/hugetlb: fix kernel NULL pointer dereference when migrating hugetlb folio") fixed a NULL pointer dereference when folio_undo_large_rmappable(), now folio_unqueue_deferred_list(), is used on hugetlb to clear deferred_list. It cleared large_rmappable flag on hugetlb. hugetlb is rmappable, thus clearing large_rmappable flag looks misleading. Instead, reject hugetlb in folio_unqueue_deferred_list() to avoid the issue. This prepares for code separation of compound page and folio in a follow-up commit. Signed-off-by: Zi Yan --- mm/hugetlb.c | 6 +++--- mm/hugetlb_cma.c | 2 +- mm/internal.h | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 6e855a32de3d..7466c7bf41a1 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -1422,8 +1422,8 @@ static struct folio *alloc_gigantic_frozen_folio(int = order, gfp_t gfp_mask, if (hugetlb_cma_exclusive_alloc()) return NULL; =20 - folio =3D (struct folio *)alloc_contig_frozen_pages(1 << order, gfp_mask, - nid, nodemask); + folio =3D page_rmappable_folio(alloc_contig_frozen_pages(1 << order, gfp_= mask, + nid, nodemask)); return folio; } #else /* !CONFIG_ARCH_HAS_GIGANTIC_PAGE || !CONFIG_CONTIG_ALLOC */ @@ -1859,7 +1859,7 @@ static struct folio *alloc_buddy_frozen_folio(int ord= er, gfp_t gfp_mask, if (alloc_try_hard) gfp_mask |=3D __GFP_RETRY_MAYFAIL; =20 - folio =3D (struct folio *)__alloc_frozen_pages(gfp_mask, order, nid, nmas= k); + folio =3D page_rmappable_folio(__alloc_frozen_pages(gfp_mask, order, nid,= nmask)); =20 /* * If we did not specify __GFP_RETRY_MAYFAIL, but still got a diff --git a/mm/hugetlb_cma.c b/mm/hugetlb_cma.c index f83ae4998990..4245b5dda4dc 100644 --- a/mm/hugetlb_cma.c +++ b/mm/hugetlb_cma.c @@ -51,7 +51,7 @@ struct folio *hugetlb_cma_alloc_frozen_folio(int order, g= fp_t gfp_mask, if (!page) return NULL; =20 - folio =3D page_folio(page); + folio =3D page_rmappable_folio(page); folio_set_hugetlb_cma(folio); return folio; } diff --git a/mm/internal.h b/mm/internal.h index d67e8bb75734..8bb22fb9a0e1 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -835,7 +835,8 @@ static inline void folio_set_order(struct folio *folio,= unsigned int order) bool __folio_unqueue_deferred_split(struct folio *folio); static inline bool folio_unqueue_deferred_split(struct folio *folio) { - if (folio_order(folio) <=3D 1 || !folio_test_large_rmappable(folio)) + if (folio_order(folio) <=3D 1 || !folio_test_large_rmappable(folio) || + folio_test_hugetlb(folio)) return false; =20 /* --=20 2.51.0 From nobody Sat Feb 7 18:20:59 2026 Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11011041.outbound.protection.outlook.com [52.101.52.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9F7F236656B; Fri, 30 Jan 2026 03:52:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.52.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769745136; cv=fail; b=cQVuallK3rGEVgIF0DRjUENkuQnapSQc72tjJ5TAF0l4PisRuIb0THt8xjS6dKoeuYPlIypE5UzWhPMlUKw9X0wwhQO/9jI1jauiUeXH00MDLbgdFHB0xUA90uedrzzOc0troqdQhzIMHcLeaBLCQ6aqcNHVhFsxtwxsWjse+sc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769745136; c=relaxed/simple; bh=dj41B5sI/6F4jjyUQFJ8KfDepgIW3zGZPg95eqWcBtU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=P3mK73447RGZ1OqILJdvldQYCWuYVQvbgTy1U/5LIzLPiF5G7Tf+eWyLH3WMiUGizvkx8I4IXrep3xaD2b8kXmpEVuMKNQ2JJuq4cJGlx9OpLSP4U+6SZ5sorcOj3qJpHsZ26wATzPj8gs+Az/rlINDkbAi8MmJkH7UMJYoufVc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=lICcBcOe; arc=fail smtp.client-ip=52.101.52.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="lICcBcOe" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eqJLu1Kc22TjYs/aMSuCOdAc1XPj377P/iV4sukd1th/dR9WsVQRbpu5CVrhe7tE0WBAIgDrFRVimvojLQpAQTBO9inmUq/1Oi/KxxGUB10fJRlRon3KF8FVEF+Y1aDVfpK5Fa6Uzui9955bz3kPFG+DsDS7PpcUV4j6PyXxaLF58LzvY1sGKiV1mAIzRaejXJIYr71w5R6a8jCjiLYzzNMF5jt3vVk/A5kkd/yo2RVzRHTxL1WLNK+9hNXbXFWg8Y/j4tD4ZQcI3qaXpa/T7AOnLuBSy/n1o1crCGasu45e0xkid9GvgQrFz+GxzOFlIoGApe/x1KqkadyMhJL82w== 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=L4QaHhwuZyYRo1vThHw7667LfULyy3R1hHQFyr1poY4=; b=BGaEdL5ym9N/MzYoHk14BBCocqS2Je8V/+iFot3X//NdfOL7f52YzlPsrv8tlR0qs49tsmtVk+/WfEeq6H+/W5R1FKkLq9Z6anXuDY2PMqbCTggIJaHwNAjHu47wWo3xWudql8xcxgAD1GV+8We2gzzxbSoMhgswQwT2yaBYsdqj1Ep6VP5Rc/cT+7WK8H6BSkGiaq1SbxX4BNu1VJEcj5PVQmIpIo7Gk3KHd7x6rgIwDjMwl7fW0VAyILfrBY2rAhlZiVhdrBMi6t7itx5EHUsDJoRTYd40rSdAtSJ5OEcYk8G/bFTkhNS9YgDe5ovLngIC4X8sRJFCKSzObLyw8Q== 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=L4QaHhwuZyYRo1vThHw7667LfULyy3R1hHQFyr1poY4=; b=lICcBcOemomcqLMmFEH/1BS81DHKwFNR9OwIcVYVEaqv5Cktnh1PVPZ3Wny8m60WybK/21Ef/KXcS7CKWb96W0vq2hpVIq4UW47ReP7hvcNG6Hpn2FvMzAxY6VYJhc7u1/lknMYHnhC7JEO90SmR09qiHr/QLyARzEV3R/DY7O+tom6YrFwIQCKQTVrcYLnJO7uHak3F+RTYp6Agk5gJZM95m4ArybPhfQ94jklfoVlo73PIJXZ74TPQNLlZjcftOAuWCXgAbUTcovT9ec7cwtMMlZeCh7UagYSKXHqZhpDy4QJnCYhB+X1C/H6tWIZH93VMycNfRhBucW8Z2r2guw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by IA1PR12MB8312.namprd12.prod.outlook.com (2603:10b6:208:3fc::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Fri, 30 Jan 2026 03:52:10 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::f01d:73d2:2dda:c7b2]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::f01d:73d2:2dda:c7b2%4]) with mapi id 15.20.9564.006; Fri, 30 Jan 2026 03:52:10 +0000 From: Zi Yan To: Jason Gunthorpe , David Hildenbrand , Matthew Wilcox Cc: Alistair Popple , Balbir Singh , Andrew Morton , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jens Axboe , Zi Yan , Baolin Wang , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Muchun Song , Oscar Salvador , Brendan Jackman , Johannes Weiner , linux-mm@kvack.org, linux-kernel@vger.kernel.org, io-uring@vger.kernel.org Subject: [RFC PATCH 4/5] mm: only use struct page in compound_nr() and compound_order() Date: Thu, 29 Jan 2026 22:48:17 -0500 Message-ID: <20260130034818.472804-5-ziy@nvidia.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260130034818.472804-1-ziy@nvidia.com> References: <20260130034818.472804-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN2PR03CA0025.namprd03.prod.outlook.com (2603:10b6:208:23a::30) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|IA1PR12MB8312:EE_ X-MS-Office365-Filtering-Correlation-Id: 350d25a9-9552-4671-971a-08de5fb2f1cb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?7uuWkCaBnMw+jYhgVPLkT8jkd7fJOaNHXTSNXrcqDbcERIdqQ08Q/+FKEpwR?= =?us-ascii?Q?Id+e1bsFwdNg5mguOSRssXMWEgVRC8PutAE+C4sszkLu5pePU04CAHJ6jzZg?= =?us-ascii?Q?gymXFiL6XNxDeTx7NrthwVA0t3yncuSDgIxGlMmI/ycU0fUEAwtjOzUCcnmx?= =?us-ascii?Q?ttyIxTolYoD/uxs1La6KUhOvmi4NdnLNqvsjExwsgL3hEzC4cEflipi40aI7?= =?us-ascii?Q?Piymlt2vGCopme2GYZZfWB2EqJ7KYi3bVRof9Q7XyWd5hYoUkWHHXzj8e3Dn?= =?us-ascii?Q?B79bhj5Y+wR9l1HuMruLo7G4CceF7hRHNt8XICPecl96AtWNvtJdRBAX5N3/?= =?us-ascii?Q?NV4oU9Obh+kloDeICq2QtYy3557mzWC40C4RM6fsc+TWME+DYyP7xKH+3CVQ?= =?us-ascii?Q?ndryw9/Ls+AK0nNuDoVFNp5X7uMoKjbRcfHVyoTVcO3HrtlH8dwQcb3C5slj?= =?us-ascii?Q?5FE8TfASfxIu57NC3OwPTWowCvsaye2hODmbUEarMdQUVpBaMbQC06/O6frJ?= =?us-ascii?Q?kvqQgQ7xK2dcEy/gdr4rwGCruXQsNQnYNSHuPDZpcgvWr5N05YtPRO2T6U/M?= =?us-ascii?Q?6CZyf1MBgM8PoLH6dxDF2QudihhDIdQ0bKgzdZfaB8IsuZtRj5UbM9/QNn2b?= =?us-ascii?Q?4NbEDN3Xnj7Gj7oPlKW/1Wtvcb1ivRenXROL7KiIQMqTQwciwP6Ubn92coc5?= =?us-ascii?Q?A0d+3jeMbIBH0456BR+stIdgqNxYYxRqVALL1U7TAxhF2/kYMil0hPoJ3gXs?= =?us-ascii?Q?1cgMyU4WnqZmsv8tUG1SUrMSJEz6MCHNlk5+x73nUnxOZ0SpAMba+Xu5YCW+?= =?us-ascii?Q?5uysKrKzuBpmiuVaeQ9ykogpjwkDVO6bC8GynS7mVJGjIxbuwt/oOsJxzyo5?= =?us-ascii?Q?UTczziM7d86VcSJl7K8dJBxP/EZ7+sa8SfHjUsvmkrHCOz5XQ20emF5ah+tS?= =?us-ascii?Q?FjXNQ4pHuSd1DZK7rf6+XT6s8zmzHkyidJOuY4LyOUyrVFCPFop7hR4efs3B?= =?us-ascii?Q?V+h7ig2nSM90olGqef1nSxol1EALA598c+m5LOjtoe+rBr1iYqken7Nledb1?= =?us-ascii?Q?E6B4gKWNeOSsmX7ZwODuQNiiTfjjd/EYbetSnNjKjYDgjpB9GUOHbWzzbtXE?= =?us-ascii?Q?VPB6L00nmXC9FJZqKRqCuk1Vo0lyj5eQR9islnDg2wEEzBldQISv6rtes40e?= =?us-ascii?Q?1WQUCeoXQnFP76nTjrMHUzO27Xsp/pvWJIfOoqc8Hs/EpplSTdbaACEXc6CB?= =?us-ascii?Q?Sy+YA2JS3IH0L5q21UuHEqcORHu4iIdggPBCuiT7ogo88/xnX9FZ2A7SDl4m?= =?us-ascii?Q?Zbs4k4ctEM2U1Y7bEy1G27QgFTOstCo2P7oJKDzGFRdYZYFeV+LDhhLymQSj?= =?us-ascii?Q?Vho8/lAHtP36Vo4XKo4eBMAX+r/zrM8FW1ALjs+S0HPvPJujzKXbt29Dj5IG?= =?us-ascii?Q?KaNGoolsWtZjWN6AN9uXIJ804JYw4jboCB3r9p4E2PbS+MC5MeFS2IsGS7Ro?= =?us-ascii?Q?sw0cmIx412F9knKHyK/97WHmLcjQFtVIT7EUhrkcp8zGIUQkYcbmi13f7bwj?= =?us-ascii?Q?TeU4Z33ZwuCRryExxCk=3D?= 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)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?auiubOjtTr/3pnRg02l/mFFzeqZkV03T41CApq9/USKBAsb8I5LFt/0kxQSD?= =?us-ascii?Q?a3mxq56EAW28p5ANP7xOKIpnf/MJS/AwIO5xzf7xY9EkWh+uPStfsbcuT+Xe?= =?us-ascii?Q?2w5wayIVFdiG79q7zWm5nZSPFovw0M1UJuLgHO8XmfnX84DbTwiv2qmxoHCL?= =?us-ascii?Q?kurzcRf3gM18kcTGsvD8MrwrMyfSNKZtMJz3WJJ37p05WKb1A1Yn8KC1NtsT?= =?us-ascii?Q?PaS5D6VSqvohBA38T2wLYvagUW7xIczS7H6TplhryRAvSh0hPYWs2C5UwIXd?= =?us-ascii?Q?ApOFGbKOK750g48L5A9ocaJIvl8dLzBUNdCtnyEJZchjFACQ4PgCO13FJT/b?= =?us-ascii?Q?Ev6o4e74J5oOC5C4OWPmEE0PHYlS5SAXMN+01SIPklZepkxulldxlOEbytr/?= =?us-ascii?Q?Zr20BDnYft3TUYE+44mLZfY5Q52yc2m9SAY9qIjKB7mPYkUJFOd251f+tmdr?= =?us-ascii?Q?lbIZz0Dqjbh+0N7LCOYEUk+W7le1IR/ow3o0Jng8t0OfElWFB/Nh7S3HN8Le?= =?us-ascii?Q?itzSacIlPL1eMwlMuyElTRB0FnMJ6eG30ARGfZWzFq9M72VRDTQjCqDF6zGP?= =?us-ascii?Q?l9Xq3F6uYEXut1Bj0ECpzptM82FWce+MlsSGkapwT7kiBSnc15pUbdTMwjIS?= =?us-ascii?Q?4xy4+VYNetoDIUsYfx/96E4WVSX5iQrrNi64RKkH4fEVyhPv7KG9IaZBrIt+?= =?us-ascii?Q?J+pl0KuPpkoiZtHDKGqf7AfSZukvs1d1Bcu3jQQqTJkZBoffqY/5bU1bSLfC?= =?us-ascii?Q?3e6nwUvGG36A0oTdTPvbnFSuDPLtShNBjCEM85pTe/SDLE5t3qqeYKvLQdK0?= =?us-ascii?Q?eauC990w3rXFu2RsG1ftuFt3TNthc3foaMvCJh0TOTsxArGZhd4e2pgpqBbi?= =?us-ascii?Q?MHASjI2akhqV4JrH8rbUJdxgQFJ8FhnR/GvDh869fmJYR7IEeD6ucdgR2VlO?= =?us-ascii?Q?dGkwQxMjVNdiknBx8xMu+mTrs12CDXChcZnbgYzU8rL/rSvyZvV7I+KYYd40?= =?us-ascii?Q?EjbDr+bawqhFiC3dsb8OHNFSLY/tux9fvLORakJJPmcuJ6ZlQMg3N0nTukFa?= =?us-ascii?Q?BL7hfP3xFdMHGNQeksarpzg+0ykLQKWa9R2z1C4kYhD1PvopN5J5pJ2iM4LS?= =?us-ascii?Q?5/qVVYvLIVRvhoBnpNOl/WdhYwNoAb4Pd5eJnYK6eSlOF118AURC72FUV8ig?= =?us-ascii?Q?f7kNiHkYkn8km4iGwROce3RhMQ+bqToPhHKjpXK1uNxx+30yFakIi0ijPRTd?= =?us-ascii?Q?sg6kJ7AgF3murqWxV1jDzXNTKSY9Edlbzl18g8u4bmWWrvZdMT6masLGM7RS?= =?us-ascii?Q?8aBKke8vIiXDesKrNiPTCFLPaaq4AUHuLQkZfK7lzf0i3cGcvMZpAsKHqAD0?= =?us-ascii?Q?nf3VTP/mLRSSg5+maHTDWDX2FH5gEcOixfd72H+XqSUK7PI3NusN5orhrqik?= =?us-ascii?Q?VZkl+kIWiFNoAJinEeGeRNOjBzYuvmNBAEuaJa1/AMGA0Xq4+lPnJqp/hbI9?= =?us-ascii?Q?6kAWPG76ck5ERM9Mm2cq3t9rAhBaJzRMXAczC+PnVFiV5XQJTQbNPKVGOJKh?= =?us-ascii?Q?Qug9vOavL7xbG8AHPPsAgPd61uH57/dAwTwcxZVtOxwQayTtA9HUc9gfCWxq?= =?us-ascii?Q?wTEE07Wengsesg8MR5WLh4dCIpk0gaLucISJ0XCMjbBI6DZrcY7u46Nmevgu?= =?us-ascii?Q?kRjiwoWXst2/v5+P/pCnLDQhfwwUtHfH64xZV4dS3GO/9cgy?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 350d25a9-9552-4671-971a-08de5fb2f1cb X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2026 03:52:10.0046 (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: rZBH98EMAkhUzQDRZp4LmKiv2MSTSYR0i+SeupccTzcOcBL5dd+SgUdJfPglkijW X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8312 Content-Type: text/plain; charset="utf-8" A compound page is not a folio. Using struct folio in compound_nr() and compound_order() is misleading. Use struct page and refer to the right subpage of a compound page to set compound page order. compound_nr() is calculated using compound_order() instead of reading folio->_nr_pages. Signed-off-by: Zi Yan --- include/linux/mm.h | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index f8a8fd47399c..f1c54d9f4620 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1428,11 +1428,9 @@ static inline unsigned long folio_large_nr_pages(con= st struct folio *folio) */ static inline unsigned int compound_order(const struct page *page) { - const struct folio *folio =3D (struct folio *)page; - - if (!test_bit(PG_head, &folio->flags.f)) + if (!test_bit(PG_head, &page->flags.f)) return 0; - return folio_large_order(folio); + return page[1].flags.f & 0xffUL; } =20 /** @@ -2514,11 +2512,9 @@ static inline unsigned long folio_nr_pages(const str= uct folio *folio) */ static inline unsigned long compound_nr(const struct page *page) { - const struct folio *folio =3D (struct folio *)page; - - if (!test_bit(PG_head, &folio->flags.f)) + if (!test_bit(PG_head, &page->flags.f)) return 1; - return folio_large_nr_pages(folio); + return 1 << compound_order(page); } =20 /** --=20 2.51.0 From nobody Sat Feb 7 18:20:59 2026 Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11011041.outbound.protection.outlook.com [52.101.52.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2D9C434A767; Fri, 30 Jan 2026 03:52:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.52.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769745137; cv=fail; b=SA+u8zSHWzgGtqqglfd/0fo5XRRjesFG9njCh1/Tyw8zYTWQaqC87HIrNF3xLJNkAAncrZpE58sEGalnT26WkwCtd8v9bf5I9kjxlMvbqxpKLBk/sGm7z1XyBzHRUimr8HXqXspqg7y7Nuw5W/Tmsb1SAroox7TsEqDJ5sG2T5M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769745137; c=relaxed/simple; bh=dfH0P/L0zwlHP3/uuHg0BloE3tjungRR0NYRrFKlkRI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ZQ+CJibva6LP/ZqBn5kQikRxcgvCBME6rDBaM8/BPOvhpJZYfrwO1laOcnG12HE8jytCYrNdBbS737/EEXKh9tJPVJHuNBAM/KKh4T/pE2cg+ZDRwj8AHAVGUXh2XF29wXlIrcca+I2UiVVuvP565CMOMcU3wDmVjwagQGX3Rmk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=JnAB038d; arc=fail smtp.client-ip=52.101.52.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="JnAB038d" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uMnzlojQKsIpVxYyadQNEswJAD3WFY7NuTMODysJi3RSPgCYm92oAnyF3ZSVH4DWdoBtpFR4x0eGCvSKFclkyYrtuabXW+7zDNEoIurLPN1o/DgG+th+CiRrwCXeopuEJjKIyNdJZuoVCW38dAMYZELHn00TkfimkbR3FnCa49zL9Gzl4+mUdPKdVttYM9bhYa0znWZFzsRYHft2n4EBGxLRIK8aKTmOfYqz7cCHoWFAOrkE7Kx4AmOAfsWY0sVEIMiNY7m2bDXqg74g437aa2ujmFkLg9kg3rvMICv7wELL3z9oTFT+oTYVrgspu1n1gjW6+gP75hd66Ezt8kqEIg== 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=8QkFb4RYKNfRLy0oKunZW6vYQkKk2GE+D9M9vROfh/k=; b=DrDPOD+X7nDpd2aOi3Pkg4GM+Cy51O/sQjLAnh18lz6sJPwRXI3StGV2UPIsGc9Qnlv9pehyXKg/4AVM/GIRw4LgXq4nPCT/FhzxdcPcQbSMZcFJodu3csi8OEzz3Fmz7uxrYojlza9W00zzg2PmAVdG1LDMv7qGZemHzPIGVK+j6sUK+U9EMUB4g+ZpVILJwMaOY4X4f//aCIqzJ2JNTVsfo8uR2ZiUUP01fxFOgL3sA58qEHo9Bl6KKBl+pvhO5wMqAuYufnaiI/1OpMvFLTGkvWwvzhTUxL8ct8eWb6cVaGbWKRX6AB5/4i77eDwAXHhRGTnryL0wzBCm8MaqOg== 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=8QkFb4RYKNfRLy0oKunZW6vYQkKk2GE+D9M9vROfh/k=; b=JnAB038dWXu8v+UBwQSNNh0uwo/NwwuPRxPlguFOUNExmAfNWeR6yMPZZ2c6aHu1JfH4eDBw9StejfC1++iNaBN50COWXd2oxXesrxLwnCOQxhgfXlXqO5H2O4HrUX6rAXdlYnxgqEU6NvHxx8pw6SOzWTpEhbgIyI1q9pnEhrG3CnxWqaCAaFAI/kQ79QeXIhDnZ3us7ZuoT6QylM7C5WsKceOIVaFUedHhjxxBbCXI+ERpfyYCXAqpcxHol3RLqhPuSH9bf6yB7jAroGGkOg3U4a+ocIPX2oeY7rikOa8jHeKLKvEapA2bIvcO+R6P3FjeGW+B33WudYK+a65SZw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by IA1PR12MB8312.namprd12.prod.outlook.com (2603:10b6:208:3fc::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Fri, 30 Jan 2026 03:52:11 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::f01d:73d2:2dda:c7b2]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::f01d:73d2:2dda:c7b2%4]) with mapi id 15.20.9564.006; Fri, 30 Jan 2026 03:52:11 +0000 From: Zi Yan To: Jason Gunthorpe , David Hildenbrand , Matthew Wilcox Cc: Alistair Popple , Balbir Singh , Andrew Morton , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jens Axboe , Zi Yan , Baolin Wang , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Muchun Song , Oscar Salvador , Brendan Jackman , Johannes Weiner , linux-mm@kvack.org, linux-kernel@vger.kernel.org, io-uring@vger.kernel.org Subject: [RFC PATCH 5/5] mm: code separation for compound page and folio Date: Thu, 29 Jan 2026 22:48:18 -0500 Message-ID: <20260130034818.472804-6-ziy@nvidia.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260130034818.472804-1-ziy@nvidia.com> References: <20260130034818.472804-1-ziy@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN0P223CA0007.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:52b::27) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|IA1PR12MB8312:EE_ X-MS-Office365-Filtering-Correlation-Id: 7a47f5ae-a86f-459a-7ff3-08de5fb2f289 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?J5oeXgKmORtEb4TrvfjfHkpopzxLqhKuqts3Bi+4Qe2Fso+vRMWbREFIoDic?= =?us-ascii?Q?nxoZ3fOnOsJ9G4PWFgNez8LRLwxuTHUSSuVO0YQG3Ofda1jAYOwnIzTABWT7?= =?us-ascii?Q?YBNZzb2wDmVBXHe1dHBfvbSjvNwbP+9P/Aegn1ps6ybxqzPYWj7Y/3NfkDyG?= =?us-ascii?Q?rs6chINCTKbL7ODFVij3mJU1VEP5CAZlGuxJelAgqErqCcw3HQw5JCYwGIqG?= =?us-ascii?Q?elPTgq48Lpj3MlLUuvpHUXTmonc6NTS0G7LeVqHg3PvPNs8sVG+W8hejI+QR?= =?us-ascii?Q?fyJrNhdO0J55mXc8BLEV5skqsncVfgaSZT/+mHsnWUuxBd4chnccLAudaXML?= =?us-ascii?Q?Dj6bQRZB86nxa/GmBNzEL3OWK8i47M6JeIv0BY6NxzKediCHsWoOPEPxs9Q2?= =?us-ascii?Q?B12p3pz0edy2ZNi8iKVnNRWMVROKspq1g2weGRdAfbSGbEza1cRAPmiVYxSN?= =?us-ascii?Q?tpk/G584xl6cavmpBa2ZALpz4GXphVf6GDGep1s8f+7KEGAqnuhWI72itxyC?= =?us-ascii?Q?LZ+arMXrat+BbozV3WVHwONUPN22+fiaXVQqEo4uRrmIBqVmH95+KL/KzKu2?= =?us-ascii?Q?Dqp34sB9xV4qk7scRKIWrzAjqw6ewagEvg+lI+FKawcMKqyRUTOlN8WNo77o?= =?us-ascii?Q?kEWTAHNpUEZ6Ub9TLDYy89drJE6/nddjJHbxQZ57WuQWg9+aOVOUs/QVZJ5Q?= =?us-ascii?Q?qHxkl3tQsz73UrX4GnCc0R/FoaCO/ru/k02jrAdrEy5IgxgsNRq0SbmCRxSp?= =?us-ascii?Q?9ZB6mgjVHI9Fz4Zq5KowIpxkayK5UJvisi8ORuLhAMAIuWyz6DgJ+GoQzPsg?= =?us-ascii?Q?marbXCqkBnfsL+WNLxNP3LzgVldyxRuo7vqLu8S+QUVwfP9UJl5hMFZBLlNQ?= =?us-ascii?Q?L92HDfBiC34QwMC8ydNYgRhyy/JNK3KgeVxCjX7q6ycLuQOkWstQ13TJ2A35?= =?us-ascii?Q?16La0vB4oD+0f+DGXJ/h7gdr5LtYjl2WltwBHvLnVP9TYxFUWlNz1iEGTXSG?= =?us-ascii?Q?aP5aiDzDKOoLgln3V/FbqwZLAWxerLtsfI9xHp7+ElB8wxrwIKPnSSVyRj1x?= =?us-ascii?Q?yBt2jFYQn/tXPRDO25WHYqNjrZZ2gBsdPSwFzm8SLBz6n828KgbyDUA8uWDq?= =?us-ascii?Q?SRGOdmxZjyPL0kLE3LrJirZTM15ArNea7Rx5qbp/NalicXcnurnpL8Orrw6l?= =?us-ascii?Q?dnLxHTU4t4TtXBVkqHuo2QBeLMF3ERzx/y5lmwe23KkR7W8s0cCcR4iVMEwx?= =?us-ascii?Q?GuYWrN4QD1ZMGk68goDH0taljiDqtMtWAg0h4g9/svrT5yxXuWT6pvh5+NYs?= =?us-ascii?Q?GvyhlFXq0ZbBGcY6OfR/6h6V8zA0Mpmuh3nJCQqYIBrwQ0pFxQiqyplJRAOE?= =?us-ascii?Q?PotXn3dnUGq8ZMX/qLIiLedRNlY5YxZuP/f8YtcGsJ/A3seP5siXpFGB9sV6?= =?us-ascii?Q?8syj7BUM/gsO8h2LO58rT5axdhHZKmFMWvCK0VseeMzh6ow5XQrrxkI+WEBJ?= =?us-ascii?Q?a5UDE1xlNZCpH2iqfNZI9eceiN6g9zQRBL2AhKV+lVdYHciDzrwRGyIJcD/t?= =?us-ascii?Q?Lcg2H5A2xmA30fRMy7M=3D?= 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)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?b1/0MliG55/5eLJGSecjf6emk9kfdfeCtmKGHzuO6DgFhnUaxbbyZqWsH7Sg?= =?us-ascii?Q?eiVu1/Ic734p20919m7aTnp77t8LwnpMMbcO3FurhkkApOJCIRWPJDx83VqY?= =?us-ascii?Q?K2MHc5jEM2Xmy7hjjlB8f5P1CJiLaLpKDXtVe907dpp7hUoqQJKGiZhHDgyC?= =?us-ascii?Q?xOgkx7lqTUqg/7cSqHXhlDAdXn9mm9WXRLM9bKGYGgoH3AdISNLqV1NM2ChK?= =?us-ascii?Q?v7PDeL15w4+SYt17tz+Eg1efLimgeq8cx6Nd4mciCpdt1Rr8UDmMLXaxCLlT?= =?us-ascii?Q?mA6SFuXqSoTu493pjSygXnj8mxSaUNGjELOUHsHRsStXEcOdP+GQyu9xqxrC?= =?us-ascii?Q?ACC5vgIy0DXVJf559nvRMGFhH+ENECCVqV4QiAxiPFfahqmBzdTRJI2plwb2?= =?us-ascii?Q?NB8EO3Pml6yE8RJ3MZkh8TokkSB0NbnN/mkV+Wx7qALmAbd4kD33AkqyW2gO?= =?us-ascii?Q?wAyoy/RTKn87A+qcf+nHEk1D74B37Zu435O5eDVI/hL4GT3pMMpt/iXhg36x?= =?us-ascii?Q?jcWYFXTpR5FKkC30S/I5ugvOT1DzmGG0xAXWkqjSdDr6TaSHAZP6TIsXdoSW?= =?us-ascii?Q?GkktUS0G+sI+GIRUZ8wdYjo7ispuxMApLqoH4ji93SOmmnkV5lGKdQ4bo+za?= =?us-ascii?Q?7Zivt2S+vXscG1vHJCjKYuZ7kuAAuCBaiBRHTE1EmXKyt3yZ3zceWEwyi0Vu?= =?us-ascii?Q?iVvCTVdnfP6rnpJEA/AwYEJlybegIwMHNbwwFsZu3lZ2EXtmRVoN4C5hA7jH?= =?us-ascii?Q?NbYqR2tG6xupIbmBhnT5xZDxZvikDyqulVJYPf2djzy2ypJ7wqxqVMgF7BsX?= =?us-ascii?Q?GUrljlIKER15Gm1I/nTOJo4NaUKuxielhSgqWEmkRB8b0oXY503elijpv9vB?= =?us-ascii?Q?s79jH0JQWus/gxCUFc0L2bzD+XDqZVjBzlYKB6WjaiA+4duJ7J1ErLXMJhMu?= =?us-ascii?Q?DWmgBnHrFvz94iaxQ0BlrsjsqjDsdqD+Ucdc5XieDsk1HmttMh5303B7T9pN?= =?us-ascii?Q?+MCRNz64Icyj358OZa0LoKhzUycOK+TcFWOY9JMKXcVVfvQaWxcT2S3RuKrw?= =?us-ascii?Q?OpHZicYe/EXLw9RPwGjcBjSc+ZiBeTmgT9rx27K+V9dh48IM+Vjf6L1WY1tp?= =?us-ascii?Q?iTxn66bVlNL95KH9rbvXvEVg1ZWvCtqhBfwDCkUMccaeT71vOwG2x/PUOGtA?= =?us-ascii?Q?CalbG5fPW4UAVuPUfxjlOOuA69TO/fvSVpmNJKN20r0dwKb8rGbVIREC87iN?= =?us-ascii?Q?TCE3OUQ7mhq+Yhq/VfOBdPhH3dy2WzhJw76V/f446BAjk34REvWVMd+qc7H6?= =?us-ascii?Q?vxW3RCwS2p+ZJqbKnngmEQ1/baclI7mJzOsnxropaloV2rr0DyXh2Y1GBkuJ?= =?us-ascii?Q?bAqOh2Q+isd7UunZ6tvoet/c6BuElMRBRmi+3pCe7RSvXJAtABc4x1d92Vwg?= =?us-ascii?Q?LSXmaVftQ2uYviEKOJBz2S9K3yoae8UwF/xMlpTmjDPT8HGYSGaFIv3K+yE3?= =?us-ascii?Q?2Gghn8p+gUYQYDZbddsa1N4PAdlhG0FBF3X938XUHFY5j6CHL/ahmAUbKx3s?= =?us-ascii?Q?j/b6DyzUnUCOTbMSxWpoA7nVMA+Iryil3RGq3RUDnxvcLfQqGJvR1Rhb8KdL?= =?us-ascii?Q?K8bslG9Xau0s1ZUdOjwCpTQt0JFzeM3vm5AKab3G3Jbg7y+xn1vQ7swNctyS?= =?us-ascii?Q?FSTX2fnsDEPXScXtSARPSM5SQfGqw1MF4Z+V2Tnm73lNNUV5?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7a47f5ae-a86f-459a-7ff3-08de5fb2f289 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2026 03:52:11.2683 (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: 1OeSusg6e1g9+MqO+iJqtGigT6vdL0tVD4FVVwv2BX1LGm8Ghu7w2i4l7ma1guK5 X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8312 Content-Type: text/plain; charset="utf-8" A compound page is not a folio. Using struct folio in prep_compound_head() causes confusion, since the input page is not a folio. The compound page to folio conversion happens in page_rmappable_folio(). So move folio code from prep_compound_head() to page_rmappable_folio(). After the change, a compound page no longer has the following folio field set: 1. folio->_nr_pages, 2. folio->_large_mapcount, 3. folio->_nr_pages_mapped, 4. folio->_mm_ids, 5. folio->_mm_id_mapcount, 6. folio->_pincount, 7. folio->_entire_mapcount, 8. folio->_deferred_list. The page freeing path for compound pages does not need to check these fields and now just checks ->mapping =3D=3D TAIL_MAPPING for all subpages. So free_tail_page_prepare() has a new large_rmappable input to distinguish between a compound page and a folio. Signed-off-by: Zi Yan --- mm/hugetlb.c | 2 +- mm/internal.h | 44 ++++++++++++++++++++++++++------------------ mm/mm_init.c | 2 +- mm/page_alloc.c | 23 ++++++++++++++++++----- 4 files changed, 46 insertions(+), 25 deletions(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 7466c7bf41a1..231c91c3d93b 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -3204,7 +3204,7 @@ static void __init hugetlb_folio_init_vmemmap(struct = folio *folio, ret =3D folio_ref_freeze(folio, 1); VM_BUG_ON(!ret); hugetlb_folio_init_tail_vmemmap(folio, 1, nr_pages); - prep_compound_head(&folio->page, huge_page_order(h)); + set_compound_order(&folio->page, huge_page_order(h)); } =20 static bool __init hugetlb_bootmem_page_prehvo(struct huge_bootmem_page *m) diff --git a/mm/internal.h b/mm/internal.h index 8bb22fb9a0e1..4d72e915d623 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -854,30 +854,38 @@ static inline struct folio *page_rmappable_folio(stru= ct page *page) { struct folio *folio =3D (struct folio *)page; =20 - if (folio && folio_test_large(folio)) + if (folio && folio_test_large(folio)) { + unsigned int order =3D compound_order(page); + +#ifdef NR_PAGES_IN_LARGE_FOLIO + folio->_nr_pages =3D 1U << order; +#endif + atomic_set(&folio->_large_mapcount, -1); + if (IS_ENABLED(CONFIG_PAGE_MAPCOUNT)) + atomic_set(&folio->_nr_pages_mapped, 0); + if (IS_ENABLED(CONFIG_MM_ID)) { + folio->_mm_ids =3D 0; + folio->_mm_id_mapcount[0] =3D -1; + folio->_mm_id_mapcount[1] =3D -1; + } + if (IS_ENABLED(CONFIG_64BIT) || order > 1) { + atomic_set(&folio->_pincount, 0); + atomic_set(&folio->_entire_mapcount, -1); + } + if (order > 1) + INIT_LIST_HEAD(&folio->_deferred_list); folio_set_large_rmappable(folio); + } return folio; } =20 -static inline void prep_compound_head(struct page *page, unsigned int orde= r) +static inline void set_compound_order(struct page *page, unsigned int orde= r) { - struct folio *folio =3D (struct folio *)page; + if (WARN_ON_ONCE(!order || !PageHead(page))) + return; + VM_WARN_ON_ONCE(order > MAX_FOLIO_ORDER); =20 - folio_set_order(folio, order); - atomic_set(&folio->_large_mapcount, -1); - if (IS_ENABLED(CONFIG_PAGE_MAPCOUNT)) - atomic_set(&folio->_nr_pages_mapped, 0); - if (IS_ENABLED(CONFIG_MM_ID)) { - folio->_mm_ids =3D 0; - folio->_mm_id_mapcount[0] =3D -1; - folio->_mm_id_mapcount[1] =3D -1; - } - if (IS_ENABLED(CONFIG_64BIT) || order > 1) { - atomic_set(&folio->_pincount, 0); - atomic_set(&folio->_entire_mapcount, -1); - } - if (order > 1) - INIT_LIST_HEAD(&folio->_deferred_list); + page[1].flags.f =3D (page[1].flags.f & ~0xffUL) | order; } =20 static inline void prep_compound_tail(struct page *head, int tail_idx) diff --git a/mm/mm_init.c b/mm/mm_init.c index 1a29a719af58..23a42a4af77b 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -1102,7 +1102,7 @@ static void __ref memmap_init_compound(struct page *h= ead, prep_compound_tail(head, pfn - head_pfn); set_page_count(page, 0); } - prep_compound_head(head, order); + set_compound_order(head, order); } =20 void __ref memmap_init_zone_device(struct zone *zone, diff --git a/mm/page_alloc.c b/mm/page_alloc.c index e4104973e22f..2194a6b3a062 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -746,7 +746,7 @@ void prep_compound_page(struct page *page, unsigned int= order) for (i =3D 1; i < nr_pages; i++) prep_compound_tail(page, i); =20 - prep_compound_head(page, order); + set_compound_order(page, order); } =20 static inline void set_buddy_order(struct page *page, unsigned int order) @@ -1126,7 +1126,8 @@ static inline bool is_check_pages_enabled(void) return static_branch_unlikely(&check_pages_enabled); } =20 -static int free_tail_page_prepare(struct page *head_page, struct page *pag= e) +static int free_tail_page_prepare(struct page *head_page, struct page *pag= e, + bool large_rmappable) { struct folio *folio =3D (struct folio *)head_page; int ret =3D 1; @@ -1141,6 +1142,13 @@ static int free_tail_page_prepare(struct page *head_= page, struct page *page) ret =3D 0; goto out; } + if (!large_rmappable) { + if (page->mapping !=3D TAIL_MAPPING) { + bad_page(page, "corrupted mapping in compound page's tail page"); + goto out; + } + goto skip_rmappable_checks; + } switch (page - head_page) { case 1: /* the first tail page: these may be in place of ->mapping */ @@ -1198,11 +1206,12 @@ static int free_tail_page_prepare(struct page *head= _page, struct page *page) fallthrough; default: if (page->mapping !=3D TAIL_MAPPING) { - bad_page(page, "corrupted mapping in tail page"); + bad_page(page, "corrupted mapping in folio's tail page"); goto out; } break; } +skip_rmappable_checks: if (unlikely(!PageTail(page))) { bad_page(page, "PageTail not set"); goto out; @@ -1392,17 +1401,21 @@ __always_inline bool free_pages_prepare(struct page= *page, * avoid checking PageCompound for order-0 pages. */ if (unlikely(order)) { + bool large_rmappable =3D false; int i; =20 if (compound) { + large_rmappable =3D folio_test_large_rmappable(folio); + /* clear compound order */ page[1].flags.f &=3D ~PAGE_FLAGS_SECOND; #ifdef NR_PAGES_IN_LARGE_FOLIO - folio->_nr_pages =3D 0; + if (large_rmappable) + folio->_nr_pages =3D 0; #endif } for (i =3D 1; i < (1 << order); i++) { if (compound) - bad +=3D free_tail_page_prepare(page, page + i); + bad +=3D free_tail_page_prepare(page, page + i, large_rmappable); if (is_check_pages_enabled()) { if (free_page_is_bad(page + i)) { bad++; --=20 2.51.0