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]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2AD75CCFA18 for ; Sat, 8 Nov 2025 17:09:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7E7198E0026; Sat, 8 Nov 2025 12:09:48 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7BF9D8E0003; Sat, 8 Nov 2025 12:09:48 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 611588E0026; Sat, 8 Nov 2025 12:09:48 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 4A4868E0003 for ; Sat, 8 Nov 2025 12:09:48 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 04B7C13BBBE for ; Sat, 8 Nov 2025 17:09:47 +0000 (UTC) X-FDA: 84088076856.21.7257691 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf03.hostedemail.com (Postfix) with ESMTP id A0E0D20005 for ; Sat, 8 Nov 2025 17:09:44 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2025-04-25 header.b=pfhozLsY; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="V/R4nPKW"; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf03.hostedemail.com: domain of lorenzo.stoakes@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=lorenzo.stoakes@oracle.com; dmarc=pass (policy=reject) header.from=oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1762621784; 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=hnulhczD3XQkqRXiu7lNvxRJz88HMl5Uk5p8sHNK2Ms=; b=bbzQYgU8QQ72BXBgr3WN83RrRMDbdxZvWTDLWAL6yotP7BcG5UsP8IqNNgIq4KJ9qBxQOB /X3J8BjDb6+2fMRmgC8Y6CuYKvlsMQfQazB9xBwlGc5FILNLtbl/NieOSlzPYm9s+KwCMO k/klk+5GdW2GOU8sWeP8u+fnJKuZ94w= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1762621784; a=rsa-sha256; cv=pass; b=BslBnjgB7x3OOJGiojlKK0prG8/COQdeqfk8tevFzHLRtAJdZSvRXuxUpZHW7B8TDQjd3m xtIeZipXqgpSYeGYPPRU6PNdvniUDvlrEoWeYzwGv8K+9wP9WHwR3tzR3UvzGQRnq3C+rK 4Pa66miIvldE2AAOiZn8PDN3tVxVXdY= ARC-Authentication-Results: i=2; imf03.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2025-04-25 header.b=pfhozLsY; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="V/R4nPKW"; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf03.hostedemail.com: domain of lorenzo.stoakes@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=lorenzo.stoakes@oracle.com; dmarc=pass (policy=reject) header.from=oracle.com Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5A8GjT51017275; Sat, 8 Nov 2025 17:09:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=hnulhczD3XQkqRXiu7lNvxRJz88HMl5Uk5p8sHNK2Ms=; b= pfhozLsYLuo5vUIzEyhlrv/2tuKzgVI+sWy7TWDNIwMcj8FcFGwdBzC9FfdCMlAg Ghcnewisojj4R9RtgxT+0/VjMiIchW4pSoild2sqftMWCnDALKJOSzoSjgI7UkIN 1umpU3hvjUbOm3lCOAfs7bXx8yYMDT76CALjKFiZVmqmvUyxm7XOO5kri2wLgkQI ZXN2KMGHuypkQnYk4VMbdNKyfoUllEGYPgKmPhYlUDLj5d3uflpO67kZVQD0nvYB coMydkb72+6pa98+bIEXVqDKUTvFUJSTtJDvX0+NnHw8FXY/sXrKGH8TIrA6GMVg 0knC3gFh0n+64GXB3Jb59g== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4aa8se01uw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 08 Nov 2025 17:09:25 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5A8C03c9007618; Sat, 8 Nov 2025 17:09:24 GMT Received: from sn4pr0501cu005.outbound.protection.outlook.com (mail-southcentralusazon11011047.outbound.protection.outlook.com [40.93.194.47]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4a9va76n25-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 08 Nov 2025 17:09:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IYdhFT9QsanE2SrngLg//h1qLd/XQJjKb7rZfpmvvXHTolXMsrnQtXLmBsNmUgw2bTkmnijq08hPGTDJZePe+oGTv4EHjwpPJoocyTCPXi/XbmJHaQBfkhUwYKfnl2wmtxf46K6NlpLFfxPFqWpgbhf+xctzX9PC0U3F6u7+P9uR/MmC5pQBCQvTosY2NNrij5w4g/ZGVtLsSuw2jlDIybSB6S/FuJWCwDwzyGFyWXBdgfgTRP0XFkQWE2yz0bLUaTooieFCFJwk9Lsi9vApS5oQ+FQNQNbkBQlRZg/mM095nwxaGEnSLhMsuaF9PoHiFpCpT5Txn+55oCPDl6fMig== 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=hnulhczD3XQkqRXiu7lNvxRJz88HMl5Uk5p8sHNK2Ms=; b=SNCl66Y9m5TGc6Uck/oosQ4UA79V84eLUKHsoS4apkI7/jyRt4IcAwlapvb4e/cEIojYrCWQzPOiXcHk8rpK6jc8/HPqukeIQ2jKmYUHeuabG9va/s/fTbCvp+e5pH3z4TbNFj8W29cU0FL+CyEAJ6s3ZxwO3lT9asyvqyGcxBKrcxaMVPwR2Vb4K5yrBGXnlqyJo9TL8oDG55EAd0+pLMbJkuTCyZuccCvakTCmjYScl/3B3G6fZRUg/2D1DZ8OSwzN3xDwTNy+HBRBtL3CAPBEVgvkhCfQm8GrAGuD4CdUmBI4rzDAMCdy4a02XHcuGFoULgnDKrTTQFIxw5HlkQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hnulhczD3XQkqRXiu7lNvxRJz88HMl5Uk5p8sHNK2Ms=; b=V/R4nPKW9D0P92YB7zoJJ4mzcTvjU+kx0aH/iKmLv6f4rukkwi/YzHCoVv1ov5hkAFhT8/fS7y+VKfNrrcGyNrr6Q1UaJNkRf+Tv734Tbzlx/yNYGhKjCEOJXA6eMaYUuYFVXg1V7bYObL6HiRyZs6Z+G463O/+2vdEq0kB8PIs= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by SJ5PPF04D2D7FA7.namprd10.prod.outlook.com (2603:10b6:a0f:fc02::785) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.15; Sat, 8 Nov 2025 17:09:21 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%7]) with mapi id 15.20.9298.010; Sat, 8 Nov 2025 17:09:21 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Christian Borntraeger , Janosch Frank , Claudio Imbrenda , David Hildenbrand , Alexander Gordeev , Gerald Schaefer , Heiko Carstens , Vasily Gorbik , Sven Schnelle , Peter Xu , Alexander Viro , Christian Brauner , Jan Kara , Arnd Bergmann , Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Muchun Song , Oscar Salvador , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Axel Rasmussen , Yuanchu Xie , Wei Xu , Kemeng Shi , Kairui Song , Nhat Pham , Baoquan He , Chris Li , SeongJae Park , Matthew Wilcox , Jason Gunthorpe , Leon Romanovsky , Xu Xin , Chengming Zhou , Jann Horn , Miaohe Lin , Naoya Horiguchi , Pedro Falcato , Pasha Tatashin , Rik van Riel , Harry Yoo , Hugh Dickins , linux-kernel@vger.kernel.org, kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-arch@vger.kernel.org, damon@lists.linux.dev Subject: [PATCH v2 11/16] mm: introduce pmd_is_huge() and use where appropriate Date: Sat, 8 Nov 2025 17:08:25 +0000 Message-ID: <5a8bfdf0f2018c3fa3b10171df7cab469dd3f259.1762621568.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: LO2P265CA0506.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:13b::13) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|SJ5PPF04D2D7FA7:EE_ X-MS-Office365-Filtering-Correlation-Id: 7e03f98a-4654-42fe-dfc9-08de1ee98eff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?rbf8wLMMMBW+My2lJwQVN70GNmFH1RP8V8OdLI4xet0fwIIU/ulg4nalQ3QL?= =?us-ascii?Q?/QdMnLvTl7/YaVdMmgm3P4Nl4hZn0RuVkNjx2t68KpYFG9sw54kJiGaiMLl1?= =?us-ascii?Q?dWVTrzy15yCg0sHH7JdHiEd1XDHji7K1fAPwOWyHVuKuDEpOOCY7+ERn5RA/?= =?us-ascii?Q?oeIMtSHXO5LeGRlKh+kEF+FB7N7vue/xFB6N69Oww8LsFluXhtVTwuu0ecwH?= =?us-ascii?Q?s/3o0Vo5oGJ95NkL81UhJFX0z9kcyizgkA+bAd/sSAp1NMJhLX7NUZH9+n8l?= =?us-ascii?Q?/uO/Y4Lws/gVpE79m3+2Hgv+/hZQ5R+ldTTyDzVKmkBi5uJM8AYUqt+BIFyP?= =?us-ascii?Q?EafSX6tsE2wnDk9F+ClNJAZmV4g36hvUoTcGrPFsAo+1WTbHxfflqJtL6O3Q?= =?us-ascii?Q?6JaT8FhBKLDIGTCSCV+MUwxRXPyvhlEUnwhI9LL7AQbDm+vK01HzvjtWPlzn?= =?us-ascii?Q?yHotZmVYmNDxZHoaDSpM5lG3OY5XuKOkKeSEeRbZfBHoeJcOQEL/gS+09B9d?= =?us-ascii?Q?NEbEP8waJCucqYLznKaOoV1daQOboGXg5XvgqOm222Z2xnr2qCmOYZI8t9d6?= =?us-ascii?Q?fgxWTa845k/sqIeGd3k8xfVyzjzD5T6gfutxlkTxn6CoPKL6S7McDPJwg+H7?= =?us-ascii?Q?ZS75bdc3SIqQWooEfoeEEkEARltWamqlTWhgSuvgnt1he9OvjR4Yyhay9rHV?= =?us-ascii?Q?l9jwnimwgAlmBDZxdsdK52rWPE0kS5vZZpwQFDjWEny1170Vc88ghr0UeA+D?= =?us-ascii?Q?L2vgfLFzchx3h2ZMtdYhNBcP4AqHeaDLfjxkE9HOc/fYBLHDLaZc72iyKZvg?= =?us-ascii?Q?MiCFxMv1E20xMb2Dm26gAK5CNiJLPtmdPCDDbuwXEh+VzvJQ1xKLXMp/wlaf?= =?us-ascii?Q?nmpnHSeHX22k7NPy/3XSZHSDycXINorqn+e1zJOwCuA0ti1xiC+1vcbCoLXm?= =?us-ascii?Q?MaREU82B0nRqvyTqbAKscr+g5amK2d8tU/6/ogjoaPdEOZYZpuZh6XFx4Pyg?= =?us-ascii?Q?S+R17h2exVs+caCvlBE9TVai+Eg0xbz4yS2c8iFv0sbkvSLWz1AHec5IKIK4?= =?us-ascii?Q?gEYkKvGwKgdYoBqnIsRGCXLw0Vnycuzc/CzVQPfyf04sqZgyCI0Y1BRUtIGe?= =?us-ascii?Q?S+1lXyPaldEwERjyi6mmmSererTtDxLAqX+kgFpNef+lGDwCTcg2r9Zr+V5w?= =?us-ascii?Q?Ddn+ucQD7qvkDdeR43z3pg/EHVPD/hsGtQZZ/ldYggbcZO6IxHbk+OCgJR+J?= =?us-ascii?Q?ophycb/FgqkHqr4mSvdRamO7avjs40erJjLxUhfl4p7bHT/54BiJZnjg1h3D?= =?us-ascii?Q?FjonTDaIl8SdjyASrvz9eTNZGm50JR8sDqSXUhCsuWJDMMjT/79vHnYeKxMX?= =?us-ascii?Q?MJjmGb3we2z9wbcn8dQGfbQVAh8cRUF8S4guY4CLnf277IuRKpQ7kCubWvOB?= =?us-ascii?Q?Xsbc5A3Ob0BMOVotcME8fVp9DXpArqIG?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ZU9sPq5jRt0GpqdJ48hcI0EgB1GqMQ8uhf/pY7DDn/zC6DnYHjRE63onyLZH?= =?us-ascii?Q?iYrcHZiiNsJ8zLwn5OQ8KJCQI0SVs+JHU2VwIBFyyzcgMZo+ZWjcrj/ZwvmG?= =?us-ascii?Q?D1Zve50VAuivRZfKf8mME/rzbf12MWEnjSoLDrTnFJou6/SBshqH3mBHStci?= =?us-ascii?Q?9ztF4uyQFvAl8NJLWWMQljTdQZcjtyugQskCwY/jUHJ02CvJi2GLOUyJuibq?= =?us-ascii?Q?O1nD2bDq/qZ32yiKg+WGA/fhbynJppLAvjOkhfdPg28eEymdL7NhwJxwovnv?= =?us-ascii?Q?tPC4tJKRTCTpDziCVhLdl52w4VvpII7yUptgTLg6U9uK4xc/jDVwDczm5Nub?= =?us-ascii?Q?uCsRjR5ApN1NwaKibnRpp0yKAmPdkS8Zn5VKNPE2dcPd9z2z7i7/kGo2hLSV?= =?us-ascii?Q?GiWI6auDf4r1Bwab+cgxv+edXSBg2PGKE5atULPJXroUVs1zJ+1qdGFEqjY1?= =?us-ascii?Q?8x8Em3Z7GPS0zVOWLJU5m1XXTr+5GN50Il8TIAwkbv2D0RQTgGYBg2x8ThAt?= =?us-ascii?Q?/piMStP2wlLBZ/jLHhDF/2UaZVZdoyzLCgKHzSzkR2MOsWH/kDo0A5kXyqmr?= =?us-ascii?Q?pKIFQMj8gFnaBAukF5W6BRW+NqdiX/YcXIt3UsIvu2eAO/mKTMzM5M43fpHy?= =?us-ascii?Q?X5ZxhPB3IR0uox2T+AR6ZSoVErU8YFfee0tTQgR0p4QBYk4k4XGQgZClumUo?= =?us-ascii?Q?uogvsIz3Dejlhd19P+QGnIqs2eo2V3Q5PUtjLLsLjSKyOPQD009NnhnEgrGt?= =?us-ascii?Q?r+VP8DoStyXb0H2RGkSchVkPsayuogZ0+yhPEuFD1bhNeS6ecLUDxiUN7420?= =?us-ascii?Q?5YFAIPUItx51uqK+DwptaQ8AyRH1WjpT7/9QW7Q+IiXk6gfLNE4HQdWbcYyF?= =?us-ascii?Q?kLLWWxTm//4Pgaaiih4etT2lLFy1JCDPxJn16hFEXgJ2GO2oxMfvjQiQVTCJ?= =?us-ascii?Q?YhjKE7hBlUpy6kpq/G8QQIBnEuB/2L54K4QLB6OcMG5zTsOW8g4AHeu19BNB?= =?us-ascii?Q?AqeOwztEI4q+8EQZNYpABzGPQ4nCaFAYlP4ktfuHF+sDNnmgEfi18tjHFY8q?= =?us-ascii?Q?qsPB0zc4muyHO0zA2ytBVuWjIRPBmQet4sF0xoJ9VujOTdEa2Sfh3modIPH6?= =?us-ascii?Q?v3SAgHNV7R88yXvxBBRQGDHdjtDq3ayptfVDfgchEjwKv8Ut6EoENjNuiOTN?= =?us-ascii?Q?pGmosR8+eC7vFjCabNdjaHwuMmVHuZT8VqEdU3fyhXBzFfDJLxWGFAVjFryE?= =?us-ascii?Q?YzIrbhHXjaHX/zQWt/QJN2tttlnJ361DFz1XTmOurXSz809O4M1Cyi3GYruK?= =?us-ascii?Q?wEKIo8U/GWHlKOR49HV8PMJdg9oS1NSGTUPYaCSfKQ6QfWhQ0IdRpV+fGt67?= =?us-ascii?Q?AxymEn1B195pV/RSndyK+iIx040ZGPqUzqreQl03j1LArw213kL6WbwV1y5u?= =?us-ascii?Q?c9Cbf0tQ5VgbTQ66U9YVFR/7YsMCuh3yUuaosuj0aGaYQupaYSIlGvVTGquu?= =?us-ascii?Q?AcVd+8/wtaZGREsfUTevcDv+pfs1Qjp8tTDJVqqeI0ORSTFmWd4NCpBGCDZs?= =?us-ascii?Q?S06/sNjwEa/LK/CQCGDtlfyhi4oLM3W9Q/8hmoAt5gJNd4hOqZCAnyglYup2?= =?us-ascii?Q?pg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 6wcwAg+sKr1zxBqOtVcFFLd6U8fFaBDkOrtaveWb/BJ6jpTn9P6FC82PQWRr0yfck7tdkTqWTnd1d0Y4g0CxaAhsSbiT1A+m55yA0dGqGXZ5FKK7LTNoQTgCOiLsoXkrEyi96WH2bElJY5krByoYcxheP+ruSb5S8wl7YZQuAvXRzKtens5HoZamrYPIGUeuH+bAa2B67cPZUls50r37wX9wlxqvSFoiKJ3kq+qTNVm3jjEhkAehY/guLbvz27H7xK5696cPxKzNHijHUcItxqpcZptQnhbJz2fg5ZE22DESFOHWIJJyxqcVYFyC66YvtUA0T+K53b6/sFmfhDDg13enRmViVi8m46mvO6V/+ClLXEgsemnDal4LBvyG4KLyE8y8gjjK1FrK7W1oAfVxCZGgPuFj5TDxFd4kA6N8NANy8V2aVXmfn1y56+UgYzdAPuSQiqM7/iPruoLvb2XcP3Pg5i6/lvGFCuFSKNvImRPIawzZLqmPwApK3YqMBshvMLvILB+Nxzn1eSH3X5dWRiW0iNbkTBj395UptsNtdl9FRZITFSxYfrYANoEtukuUSF/IoUA7woswhT5JdLamANAeA7biMYLUmOc5ETX+4gY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7e03f98a-4654-42fe-dfc9-08de1ee98eff X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Nov 2025 17:09:20.9921 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6V4QfnCfNAeNz94PsHDVTnjLrYGjkbFdYNnoEx2q1pSeSSTdA8jbJ0TmNUY1q7KRsd3kHifH/MGjp8Lx3DMNKGmjlLjF7epDHCm5iMOyJYM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ5PPF04D2D7FA7 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-08_04,2025-11-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 malwarescore=0 spamscore=0 mlxscore=0 bulkscore=0 suspectscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2511080138 X-Proofpoint-GUID: DrJQDBfU-FVNg-c1Usy-vIdkmo5-2bAl X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTA4MDEyNiBTYWx0ZWRfX0ywOzvtA43nV YCT7PDqxPWFBIGoSJ/1igXzH78/w8G12xHJv0BDNERyntRhVxTVTF1hJOwQG3U0iEir4yL2Eubh eZvVekzStiz66dAXkHOvhK0LD+Tn8dgPBSB9KhdLabjJ95vL9iZsCMTD/8TngP9KaZiOYTARQTV IDZoLATOibbjYZX85VwlT7+kpeBIVTXkxjARFyMMcaVmsV4XGJiFoOtgYXVrQifhuHofVi4IsJU s782xcV2lOFrQUqeu1kS9+N/OQbcijtxWtNmON2BqF0zcPuFJOQDit2phSklTjCi1EsNEnkvtf0 fjXM1A+440hlsFKfjUQrBQwiJmh8+sfhGsg76WFjdYhzaQMS1EvEtRGw13AE6iAdxVjgxUfeEaV FoIM0kSp4RH9yXiBy8/f+Rw6ZW9U7Q== X-Authority-Analysis: v=2.4 cv=XuL3+FF9 c=1 sm=1 tr=0 ts=690f7945 cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=6UeiqGixMTsA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=Z_ABK6pF82JkGIUUY4QA:9 a=UhEZJTgQB8St2RibIkdl:22 a=Z5ABNNGmrOfJ6cZ5bIyy:22 a=QOGEsqRv6VhmHaoFNykA:22 X-Proofpoint-ORIG-GUID: DrJQDBfU-FVNg-c1Usy-vIdkmo5-2bAl X-Rspamd-Server: rspam12 X-Rspam-User: X-Rspamd-Queue-Id: A0E0D20005 X-Stat-Signature: oma5jn8se3itz3n3436rgoshe1r1etrs X-HE-Tag: 1762621784-650064 X-HE-Meta: U2FsdGVkX1+W0uTA6IntxPYeeZF7FaYrFLidiA86RjCcahRSPkC/X5D3MFiJPiXttj3P7z+maH2lukKmWp8QMlTe+NzoS8jey9AkPWYzVVaDb8YsgXJdYsPQFe5bGijV7W6sKliqG5Llwi6S0eKRnsltEAbjIsnjN9o3P/WJVs8i3O2ZYCRuH9o7ktYu9qsKJGILJWZ792U/9Sl1CanaxrExkChRIqP3lDOxKTrtMiyYt/H/hBR041UIY3tbiSt77sALUZ8+kUXVgJntM93bQiNdk3F83PaekhnuKLbkICWFBMOv5tPbzGYpUDlrurMc7JA3yeiLnqPEoBlgSrrxXmbZsJ+j0lj6RgrCDI5xPXGL905X3Q+GjszhT3H2d6mH0liLYwXZaTvZd9HUPH9WIA4CPtKtWr2wBRNYA4+ruXnrAbvygj2VI04aD28+YNn2Brx9OGb4nfui+yPpVi/YzPVpsLf+ID1O0lq5IM8IJ32bYUZYirTNOXQqaNtlj8qLsFY46Z/cplS4B/FDc86+73CWNV4Cs4/Aw4cI+qBAN9lYNW1ErJo7HL6IuP9dHMFUn0djpwuYikpLfHr6fKb+zRl9cMa086HQSdPqbBDW8Pe6v72FxZpzlZC+119ro64t0M/TpEAYxpqVwDsVLAMB9FsIAM71wN9NauVDGKSMQ9CKWEBhC6QHUyFXE/DKJkWkMiNUg+WupatHuU/bfMGYDMLVo9y9J9jLiLMj885lAGyaEvUdo+20mrbMA1NFE/aLx7Avgy8fuT+fv0j9Xt85wRDnmfTfudoDzfWkVXpb5GZlAa9Gwqe+AbqlbLnIRl+f3IAZY/BqBd2LBeHJZwstgm5Xn+5Np36q0RvQeqh4i4fK0QIPDCwBOLBSKRBUBtsq+f5tLlKl5U6UiLIO3R2tFe4kGgk1nMJHIwkUZcfcZEuO0i+SXb3Ol0y+miBbhjzxMazugtY+Jj8G+dhNzV1 o/PNKEaM grZeEgQrgMApTlGYxXaMClBDAvN+hKovGzJiiAPYuU7E0DV/crfbDMlIMVEdla4OBOsRPcukUj8KOPSzQ4Nvwp1qFMYBxIil/r744E6uOf3TXSSF1Oi4vamYOvkE+6T+qMMlg1cMmlnNzP/VzicKBIZDN0MJKfmsymnQc5zEQeGbeer8eza59bSeoZIB7M6lsKyPDOrsHfy/sNRaenWrOm+OmcMVRLh4G+Ste8rULdYAYWsDR5Ez1/3G8mFwFqByLnq0yXgiPNgY0yOsIqo1tsQPJYA7qmVn4KO0AO6uULqy3fuJnIta53XwcvqVJRqk5fkZ3SgwTCFTav7duXj6zx4Q93ogxWm/4pX8vAVlN+iFJ+ds10h6SnzXl7CSd/eaCu1TUV8pcyyRbqaWFubjpwrBd57eHVypUk8HKIl6Bos3LDGJpf48QMbDltMB/7yS2DaHcd10SEK9a1plF6w0md6T56ijyUZtkEU79h4D59zT3y4pLNpULIIj/btXaijypFa9qRNbfvgieZDW2ORED8Y7E9OjUvchJaDkgglRuTuciBQ1OhQIbs4dok4k+SWqeyuPkfDbwtalpoYBlqhIgAN10/kSP7kEhL4hSnrk/5mSu77j4dxPSJnms4hg1ORGy3nQjrHDZDQ44dCGXYOvHrw3kgYK851ZHVqM/T5lTHRC0b3tvUv8dcG9X+7faeo2Xnx/OtdX3Bk23KMcXEeEsVSZ7Q6XpgkqL+6wwrVL1asTZ4v152NEsG+O+GWIoKIOGlZ/C 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: The leaf entry PMD case is confusing as only migration entries and device private entries are valid at PMD level, not true swap entries. We repeatedly perform checks of the form is_swap_pmd() || pmd_trans_huge() which is itself confusing - it implies that leaf entries at PMD level exist and are different from huge entries. Address this confusion by introduced pmd_is_huge() which checks for either case. Sadly due to header dependency issues (huge_mm.h is included very early on in headers and cannot really rely on much else) we cannot use pmd_is_valid_softleaf() here. However since these are the only valid, handled cases the function is still achieving what it intends to do. We then replace all instances of is_swap_pmd() || pmd_trans_huge() with pmd_is_huge() invocations and adjust logic accordingly to accommodate this. No functional change intended. Signed-off-by: Lorenzo Stoakes --- include/linux/huge_mm.h | 39 +++++++++++++++++++++++++++++++++++---- include/linux/swapops.h | 6 ++++++ mm/huge_memory.c | 3 ++- mm/memory.c | 4 ++-- mm/mprotect.c | 2 +- mm/mremap.c | 2 +- 6 files changed, 47 insertions(+), 9 deletions(-) diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index cbb2243f8e56..403e13009631 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -419,10 +419,36 @@ void reparent_deferred_split_queue(struct mem_cgroup *memcg); void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, unsigned long address, bool freeze); +/** + * pmd_is_huge() - Is this PMD either a huge PMD entry or a software leaf entry? + * @pmd: The PMD to check. + * + * A huge PMD entry is a non-empty entry which is present and marked huge or a + * software leaf entry. This check be performed without the appropriate locks + * held, in which case the condition should be rechecked after they are + * acquired. + * + * Returns: true if this PMD is huge, false otherwise. + */ +static inline bool pmd_is_huge(pmd_t pmd) +{ + if (pmd_present(pmd)) { + return pmd_trans_huge(pmd); + } else if (!pmd_none(pmd)) { + /* + * Non-present PMDs must be valid huge non-present entries. We + * cannot assert that here due to header dependency issues. + */ + return true; + } + + return false; +} + #define split_huge_pmd(__vma, __pmd, __address) \ do { \ pmd_t *____pmd = (__pmd); \ - if (is_swap_pmd(*____pmd) || pmd_trans_huge(*____pmd)) \ + if (pmd_is_huge(*____pmd)) \ __split_huge_pmd(__vma, __pmd, __address, \ false); \ } while (0) @@ -469,10 +495,10 @@ static inline int is_swap_pmd(pmd_t pmd) static inline spinlock_t *pmd_trans_huge_lock(pmd_t *pmd, struct vm_area_struct *vma) { - if (is_swap_pmd(*pmd) || pmd_trans_huge(*pmd)) + if (pmd_is_huge(*pmd)) return __pmd_trans_huge_lock(pmd, vma); - else - return NULL; + + return NULL; } static inline spinlock_t *pud_trans_huge_lock(pud_t *pud, struct vm_area_struct *vma) @@ -744,6 +770,11 @@ static inline struct folio *get_persistent_huge_zero_folio(void) { return NULL; } + +static inline bool pmd_is_huge(pmd_t pmd) +{ + return false; +} #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ static inline int split_folio_to_list_to_order(struct folio *folio, diff --git a/include/linux/swapops.h b/include/linux/swapops.h index f1277647262d..41cfc6d59054 100644 --- a/include/linux/swapops.h +++ b/include/linux/swapops.h @@ -471,6 +471,12 @@ static inline pmd_t swp_entry_to_pmd(swp_entry_t entry) } #else /* CONFIG_ARCH_ENABLE_THP_MIGRATION */ +static inline int set_pmd_migration_entry(struct page_vma_mapped_walk *pvmw, + struct page *page) +{ + BUILD_BUG(); +} + static inline void remove_migration_pmd(struct page_vma_mapped_walk *pvmw, struct page *new) { diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 5876595b00d5..2f0bdc987596 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2810,8 +2810,9 @@ int move_pages_huge_pmd(struct mm_struct *mm, pmd_t *dst_pmd, pmd_t *src_pmd, pm spinlock_t *__pmd_trans_huge_lock(pmd_t *pmd, struct vm_area_struct *vma) { spinlock_t *ptl; + ptl = pmd_lock(vma->vm_mm, pmd); - if (likely(is_swap_pmd(*pmd) || pmd_trans_huge(*pmd))) + if (likely(pmd_is_huge(*pmd))) return ptl; spin_unlock(ptl); return NULL; diff --git a/mm/memory.c b/mm/memory.c index bf2bbd0dbc97..087f31a291b4 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -1374,7 +1374,7 @@ copy_pmd_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma, src_pmd = pmd_offset(src_pud, addr); do { next = pmd_addr_end(addr, end); - if (is_swap_pmd(*src_pmd) || pmd_trans_huge(*src_pmd)) { + if (pmd_is_huge(*src_pmd)) { int err; VM_BUG_ON_VMA(next-addr != HPAGE_PMD_SIZE, src_vma); @@ -1923,7 +1923,7 @@ static inline unsigned long zap_pmd_range(struct mmu_gather *tlb, pmd = pmd_offset(pud, addr); do { next = pmd_addr_end(addr, end); - if (is_swap_pmd(*pmd) || pmd_trans_huge(*pmd)) { + if (pmd_is_huge(*pmd)) { if (next - addr != HPAGE_PMD_SIZE) __split_huge_pmd(vma, pmd, addr, false); else if (zap_huge_pmd(tlb, vma, pmd, addr)) { diff --git a/mm/mprotect.c b/mm/mprotect.c index a3e360a8cdec..ab014ce17f9c 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -474,7 +474,7 @@ static inline long change_pmd_range(struct mmu_gather *tlb, goto next; _pmd = pmdp_get_lockless(pmd); - if (is_swap_pmd(_pmd) || pmd_trans_huge(_pmd)) { + if (pmd_is_huge(_pmd)) { if ((next - addr != HPAGE_PMD_SIZE) || pgtable_split_needed(vma, cp_flags)) { __split_huge_pmd(vma, pmd, addr, false); diff --git a/mm/mremap.c b/mm/mremap.c index 62b6827abacf..fdb0485ede74 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -850,7 +850,7 @@ unsigned long move_page_tables(struct pagetable_move_control *pmc) if (!new_pmd) break; again: - if (is_swap_pmd(*old_pmd) || pmd_trans_huge(*old_pmd)) { + if (pmd_is_huge(*old_pmd)) { if (extent == HPAGE_PMD_SIZE && move_pgt_entry(pmc, HPAGE_PMD, old_pmd, new_pmd)) continue; -- 2.51.0