From nobody Sat Feb 7 15:21:41 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (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 2A3B22EA17A; Fri, 24 Oct 2025 07:42:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291773; cv=fail; b=ftW6pRk7By3TFlONuK0DGjEhBEOicDOv1T5OaSlGdRuSbiqQ+TYPiWJPeJ6p9D/fFzxfLwT7PmcYXH4Pk/b2p59/rRufQaRzIsDhD0yOVF8ANMvCHtnMYK3Lp9XbQCfOXRZFVin8QWZH6yNay74vNftIyNVYeaKIwL7rcS4Qq/Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291773; c=relaxed/simple; bh=BChO7Rau7gmgkwOm5A+sCibX4ZI8WzKHOVrVk+Peq0Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=WWxBpc9yyc4foUb3YAR6FPJYMjWXm2EgWBl96TqivQmknU6OUoghfgU6Adz6r29U/M53Mpy93CcJMZSnqjXlGzi6z4MMKhlwK83dQ8dRgyKI4W6RG7ZvmS2ZLdDZpHFe5FW2l/phWR55q47tmhrJZWNSEHs5zuMO59WYf91Sv14= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=rU5n0X7R; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Lal68pwL; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="rU5n0X7R"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Lal68pwL" 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 59O3NJ6P021549; Fri, 24 Oct 2025 07:41:48 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=41DtXBGfoXkb6wW3BSgju7bwEbVsnazQBfxYe46KuV4=; b= rU5n0X7RJMt0dU3zBnOJaojivjm105SnFXb3fmPXAbKztErB3z7sUGgvlSUK8qiv CNbi2H5oEK5pKBnEXnD8Aam9dSJqOCteXwTkfu9qeTAV/GXuGncU746qOHeuB/pO T4ar2xXu1xJog93s3L5hPMD9aUiJUO/eHhRY9nu/5y80Ieu3xpOlYVY3B5EyuEss Wee41A/MiOOB3TlLRqv2DI5v8StzF/+LfTl33ViyYVLCuPfc6glUM5Ifl0GSgvdg nrM0mZ7/N09pJceAwUsC8ChvKbFUNhvsvXBdWKXDWdaBE0hadDbCw2EPVtwHh8PM /4qVCcqWguayAYOMLMr00g== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49xv3k46by-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:41:47 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59O6JkJf000823; Fri, 24 Oct 2025 07:41:46 GMT Received: from bl0pr03cu003.outbound.protection.outlook.com (mail-eastusazon11012004.outbound.protection.outlook.com [52.101.53.4]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 49v1bfj864-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:41:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GixRPlqgathbjf+Ms1X9i0JSith3Il+6hSNyGlSiAAAeo5N9mxNWjiK1mlwu47IBjUD1M9uFd5qKCzJidIQS0cQ2F/ZaYP49CtkXOBMImu83gAEPq6BSuH179DF0t0khZIp8tCnOm8LYiYcJFZLm31NkJQ4ECi4Fpo/eUcG+MoirAEGGIcRLi6AlWi5R+zlbl7+IUgnXdQIIoUZdHaExHqwwFLBJV4ItrZ4++Kd70DJPGiPX1CskAiMFGO+Uc2QiyHGyCAMdU736+Wt7uJSVjtsY7bin1SNHcUPu5uwNfB49gy3kOZ51VhKciKzQJ26Od/xp6uy7vBhPXN7YfI6FAQ== 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=41DtXBGfoXkb6wW3BSgju7bwEbVsnazQBfxYe46KuV4=; b=e0+eEzjQjeLlzU8n7XnKVIK+YV/1JrVpAnUthb8BiWN1Pe32aAH1RT+Gf3uxanScY+VDEIkV2XmsbaRwr1YyFLB5vPkegUGz2Bg6MtYccaIgYTWqt/RBJXlxUaJJ5RyJXNt4v2Z6zlL7GeJN5Ra7n20GswdI1H6wcm/lY6ew91FkQ33d8XQD4AVT2Jit3kUkM7FMeu+dOuNAlKhRzG/2POmU12WMYP7ymL20wl8Tk5CyBSJgShREKcnxG/j+5K6B0XMcD2u8DP/wi4jT1nRweuDCMB9BmzfMo6LIMlekFVB9lMSyjlm4c/YuYgriplq1C6/Y8a1Kgz5UlwGH1MA1aw== 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=41DtXBGfoXkb6wW3BSgju7bwEbVsnazQBfxYe46KuV4=; b=Lal68pwLi7s974YmPp+sbOwnY8pqdTlxVA77gLcqEQzMNHHe/31Mj2kmYLqwnEV8AH1jfcf5QesrbFL+3quStUv6lKMGgN4YbkvwvAsVLq3BXJEJIqXy/NepOhlpvkXSPeUFdtyJ8oTAZiY4T6AU7JZe18RTnhFztt+1Qb/Eh7c= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CH3PR10MB6716.namprd10.prod.outlook.com (2603:10b6:610:146::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Fri, 24 Oct 2025 07:41:42 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%2]) with mapi id 15.20.9253.011; Fri, 24 Oct 2025 07:41:42 +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 , Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Kemeng Shi , Kairui Song , Nhat Pham , Baoquan He , Chris Li , Peter Xu , Matthew Wilcox , Jason Gunthorpe , Leon Romanovsky , Muchun Song , Oscar Salvador , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Pedro Falcato , Pasha Tatashin , Rik van Riel , Harry Yoo , kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 01/12] mm: introduce and use pte_to_swp_entry_or_zero() Date: Fri, 24 Oct 2025 08:41:17 +0100 Message-ID: X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM0PR04CA0143.eurprd04.prod.outlook.com (2603:10a6:208:55::48) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|CH3PR10MB6716:EE_ X-MS-Office365-Filtering-Correlation-Id: 9067c73a-3f4c-4bdd-50d7-08de12d0c69a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?7b+a4b6cfUul1vMX/uUC1tSyisNMG1M8iHL/rKNbV2OO9I3hvltrTnHYV95F?= =?us-ascii?Q?lRlG3jeoWwdycl/FF16CbcFOCNmKaUp7cqJl4QbDzDcP8cBLUxHYO/Pzb3xr?= =?us-ascii?Q?baiIONC6sUY9XtErlhhSUV2eEV6B9mQj5muIjB5AuhfN06UMTZpYrjNXDgeA?= =?us-ascii?Q?sy1xuj+Nl4CCHIERYMQx7mXTKHljTLU7YIlUgC2qQwIIaUsZB4Y9mRK6ohvk?= =?us-ascii?Q?+fyqI8aD2IoQm4Z+zu0ky0Tk6zxxS9L2B5TwYYC3Rq1FINQWtXnCHT1cR9GM?= =?us-ascii?Q?PFff9y9FfdVFAIc0DKhN/bNdP7gtKQ+6VzN3dBhgENlCnhL/AWx6gmfDXAsB?= =?us-ascii?Q?ms98sWVBnW0evHnpEDKi7GdtnSpmnJGO3fpzpLyTqtV4UFXNG0ja+NgRTSvd?= =?us-ascii?Q?A/M9NU/8gSWZBpKdYEoEvim2j/mIXjRs0scTXaVfH3+JwIE0TOCY+BTu00a2?= =?us-ascii?Q?9eGNZU4qDHPFzC5vYUOcQkWPGECS0XUtFusysItdqIkUbdVFhjYdX9+QmNw6?= =?us-ascii?Q?CUg98q5q2jUEOeHKv+1LzN5PAnLm7TRNQvPOLfJwB/ZQFUn/aUWcrOHq3jnl?= =?us-ascii?Q?wQEgDCbIge6Zf2hqiAfz2Dm/nME/Kc464wf6TOVq3nNoWLihkK0NJgPZgGDy?= =?us-ascii?Q?nMLpdYuuaO4nm4Tq7yo/AT+DSHn0dkdSM/qTs/KLpn/Ik1FbuUjFdLTPWxxq?= =?us-ascii?Q?0s3ipv5K203MYOldkQVJOhEUGyM1SefLApD41AoxXu2/BcA5E0SnpFKxoAEA?= =?us-ascii?Q?RWbQ2lkS4oKVqUVxaNFdyckU3Zs9tPLcEoVu7IXKR/ROi4nflR+N3wsOa/pG?= =?us-ascii?Q?kDWZhBil2qGu4Ig3wanIaf07Gc2mX6sDBDRXqP3WArom71Uvb7KEa5c9dH12?= =?us-ascii?Q?b+hEzEtjh5PBK3F/ZKT0tHH8+6sxgBSrAMDGpmf04bElme03g8dfLBkuQ2S8?= =?us-ascii?Q?s3DRvtcXYVmaDqUbpymW9nW5do2Ruz6hYh4gHRzZ+BKUIDLXBs+liQ0rhftH?= =?us-ascii?Q?6yOVx8+9QY1H6AZxpKYz7qUBNdET+nxXc044slUFhnKIeMVGpjBlcCk0NS0u?= =?us-ascii?Q?QWd5u8lF1E1OxsypvocYO6fDFHWwQNsRoDLl/YBIDIcy+8STBdeKuXJ3vlOK?= =?us-ascii?Q?+7ywn3SLNhrKwSolPUh8++Vd4A24yVm3O/4iJjMZbI8YzANJjAKHxEdH/aJ7?= =?us-ascii?Q?L/cqbxBGYr6tPa9xGYEKfC/kiBjSm3L09SW2bX5X5kocwdziNw9tl6q2mZlG?= =?us-ascii?Q?klZSUBPcp3kJYsJwym8ummOkkUhcXM3qvH8pQh2mfNzEG20Z4KWlo/VIZON6?= =?us-ascii?Q?IG6k+cyICYRFVa1MTd4l7SWDTuiNspGkQ2lrHGh8Y4Oowjq1CwFE5Phy+Jbh?= =?us-ascii?Q?c4Oa8hruiG/7Fg3zUzIFGiCb/JuM8oLWBWBudZizZH89ERIRc53pMRsD5TQI?= =?us-ascii?Q?TeSAGcQWFjxM5M+r4RwNEj5RGDVV1AZY?= 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)(7416014)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Rv/nIknS1AYvRYz9G5B+0SukCCYR/wq49QhsE0MzH+DiIR8YKsnUfhMZUar5?= =?us-ascii?Q?QTNmebkHHJ1F9IZQt/MGftpy66G2okgqJ5cRvh6fZ4z2vQ/hUsSk1dxZIsMp?= =?us-ascii?Q?8tFMhaK6RvdAACLPXVDKmwZmvXg5NqV9pvhBUchevbzm6ew0M6q8mqEb5o5V?= =?us-ascii?Q?O2za7G6Wy94w36yy5wyOa0RKfiGGDrHVi/Gs7BpBS+/VpHfXWQBT+ZnDD1zY?= =?us-ascii?Q?uQqgaDc4pUSodAixL2d7fl7fECOxx+OXzBHQ6VTOuXNCa28qXiISsEhgUN7I?= =?us-ascii?Q?6G3oTeGgXWaUYeqWeN77qroIwjiwGrKYjp9NmZXTpRLUUqPGRjke6F6o1Mqd?= =?us-ascii?Q?JyUnq7o9/gzp9qZxQvq+gZ3w8w/4/UrLQ+/pJbJUZM0NzSP8s2W4dSqI9EEF?= =?us-ascii?Q?6sW1KTUEduK4GJgu4RDiv5DuyfS/7K6rFXRMNwP3ydGZxnfx4SaC2Bf9LMl3?= =?us-ascii?Q?M0GqKBR824eIrIDBmuQ7GEDLM+O4qBlT1aUzu3BPLM7R6rZpxmNnWckOK15z?= =?us-ascii?Q?KfSoB5wiHK4KUZzHShfvMqL7G/XIZk4ZB0E6bxPTulV1Xshi3/BkY+eG69s0?= =?us-ascii?Q?vWX3uVDU+N7nSSI7pVGqAe1xpbFOsEBOvnsWbfwdA1kgy6e2oXxtl4o6sqV2?= =?us-ascii?Q?RSiEPCC0kMiyqqsixOsImQhQ+Uhja4/tHRRU47TUdsXPSdzmYhOML5YQgUcZ?= =?us-ascii?Q?mdcsZu/hdejG9t4jl65fPlG+80lbKdI/tfzmWYnSaMhfCtXT/SS9pUIWaySN?= =?us-ascii?Q?oDLXbiB1lk8SBV3GVMH9V69iJx6ZebQlMl4sdwUemmVOuwzoBdYte8jVrTyc?= =?us-ascii?Q?Z4ER2/pDUxhg5GTidyzAF/onGrmvGY3XacVqmW1s6C+Uju99G3SP9OG7t2ic?= =?us-ascii?Q?Ssdx7DJRLKqv0ulLtVTtRAgsTtrKV3rACza+0a2tQEp5BfeK7aH1HNm8mzxZ?= =?us-ascii?Q?6bY6ayvEB3Tbae04DkoabalYvsKIaa7EYjGjmVKLN9vjZtHAjOwVY//b/Nvh?= =?us-ascii?Q?yaW97qzEberp1P9FJKiwDb4Z8OxWCdTlClNv8agjEXfMJ0z7r1LPJFMQkXHe?= =?us-ascii?Q?g2FVcFO5EteD9wvmAuY6MhNdexCrF6qWHGLUOv3hFKca6V+rFo6LIkEMc3jC?= =?us-ascii?Q?qlHGkB9/Z/jPNVfyZVMwBIv1Jmgy5RIUpOGaHPGDkQpvpnIdhL3fELRW8Gvb?= =?us-ascii?Q?ubBzCiqKZ3T8viN1NkgM9z70cgD4r1b8NCUAqPNEhNH9bRWDlddMz/g4DE4b?= =?us-ascii?Q?9XeDLxqYmgv9OL3ptLulnGqDSiuUzz4G3CJoB6IVe39rv6bWCFZ4N+B/aNJs?= =?us-ascii?Q?2UHDdLqCfGEVLNxky+w8oyPOQm5tLpoPiFneXvproa3hWq+TnSin1np5XCBK?= =?us-ascii?Q?zrUTkmXqzAGxMHqUbjjU2N76aCJHV+IK1WIvQK5UiIGJTZCrW4jri2zYPFW3?= =?us-ascii?Q?KppoxdfhX3Jmo4euxlBcwMnYa/xL4NFOZL3bzAxDnPImStZbZkF9YrjBD2wV?= =?us-ascii?Q?K4RXQfvkXwfkEPL3rmUQqwkjA/3Dd7OI4wPW1yEI3yGL4IgQpGkdx6hQE1cz?= =?us-ascii?Q?gsG10UF0yHxmK/R3PE8yWuv4FE0EVWauAbJf90adI5fMminQQ6i3J1pnk0Xy?= =?us-ascii?Q?QA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ddipwzKUk2bZTs1wX1rzIhS+BTl9GBbe8+6sQEkdaloqwuD5SB+6MeRXpmqR5mgSb/mMxrUVkOfXYIk0X90UsGoeohtsk/8nk3fMdB6dRhvpk/Zs5YzmvDjTWW+Y5iMjBUM2jNL/d/bQB8MCap9reR7qZMqBDk4fJyXZyto9EwslBeNxAiTIqoNqtmKopM2ibO0ZeHvuotTZDCppeO0ceWdtWlqH0Q3GxCh26JGb5RVuGp+AkWovn27luEFErIq7s1QHwSSry7/MsYoYPBzndKB530p49kJsyvhkR2mmlPMiSFAazgSaV8IeurQk37WVXygspUg1pKGboi4YCLx1afPLQkiKjBI82gGvsaI8h4gJUtzLvjpNztjj+g7T0oX4Yd1DUi4/LvALcBsy9iwgrPqY58k6nCbssWKk8W9/XATL4iZxIUhQqjrPl/Hs59I0QJ0FFVBitm+PCSQprzgV0vNq7H/hpTdTeBlTU+kZnbeRodc2dJuwsTMTXho0obOqaAqO4ZSpAD3sUTFE4ntv1qVPdh9OA9nXXeOl/0cnoqfk7RoYihj7VxI11JIzcxB2Bw+GXT14fodHQqEoq3eqJqtKU4Oo40oOV8O1FFau7YQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9067c73a-3f4c-4bdd-50d7-08de12d0c69a X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2025 07:41:42.9392 (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: zPnOyQnuQoZ7fWNxsgDgAcAbGrWyM2SOX3KnVomRZKp3YNGH2Z2X+HqISTPu6XdI3vTgn3VRruXrXBlzgH06uIa/rXjHdju4E5D9XDNSBCM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB6716 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-23_03,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510240066 X-Proofpoint-GUID: Lj0FRVfCIOeFRpe5zjres3GnVVmjv4SI X-Authority-Analysis: v=2.4 cv=bLgb4f+Z c=1 sm=1 tr=0 ts=68fb2dbb b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=ygVAc9bbd075Xlgyr48A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIyMDA3MSBTYWx0ZWRfX8czeh9ILKmEs lUXyw4e0dgRGyHjTRobnxvfEuB3GA/1Y/FpyuKsTduX+JZVujmd5VXEN9WVvQBgRruvZj5f2Sf8 HVME7KrRpDXdBJ3yR4dvMUMsupTRl3mViFUqVWUEOHiEQWHWk4fjgYUxH1Fh8j/luBFKhZR6FGT EDLK5hTbIRaniQmTB7V4I8NrIWH1msnEplws/iuxf91lQwbF5XIi0GjPR4u5v60zLN7C6IQ6DdN Iy5KSZ2NxJyaNUwBiw2uUaNco2HH6q4SofzGeDiVG+ZjGWQJUboIjs7fmxdkp0XtSVIPoV2snH6 uWqg7fWvyXqqtUyd/n/RfpSuHYiGCSl/EHFkuaeM6NO2wKkExtXYCLSdzUWgZCAb8Ne1Mk3Wbnm Ds4ZbDQ+9fjZfcGJxH9hCctbSPFWLA== X-Proofpoint-ORIG-GUID: Lj0FRVfCIOeFRpe5zjres3GnVVmjv4SI Content-Type: text/plain; charset="utf-8" When we check data in swap entries in the form of a predicate it is usually the case that if the swap entry were zero, the predicate would evaluate as false. We can therefore simplify predicate checks where we first check to see if the entry is indeed a swap entry before doing so by instead using a new function which returns the zero swap entry (that is, swp_entry(0, 0)) should the entry be present. The pte_none() case is also covered by this, as it will naturally evaluate to swp_entry(0, 0). We implement this via pte_to_swp_entry_or_zero(), which we then use in is_pte_marker() and pte_marker_uffd_wp() both of which otherwise unnecessarily utilise is_swap_pte(). We additionally update smaps_hugetlb_range() following the same pattern. Signed-off-by: Lorenzo Stoakes --- fs/proc/task_mmu.c | 4 ++-- include/linux/swapops.h | 20 +++++++++++++++++++- include/linux/userfaultfd_k.h | 7 +------ mm/madvise.c | 5 +++-- mm/page_vma_mapped.c | 5 +---- 5 files changed, 26 insertions(+), 15 deletions(-) diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index fc35a0543f01..a7c8501266f4 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -1230,8 +1230,8 @@ static int smaps_hugetlb_range(pte_t *pte, unsigned l= ong hmask, if (pte_present(ptent)) { folio =3D page_folio(pte_page(ptent)); present =3D true; - } else if (is_swap_pte(ptent)) { - swp_entry_t swpent =3D pte_to_swp_entry(ptent); + } else { + swp_entry_t swpent =3D pte_to_swp_entry_or_zero(ptent); =20 if (is_pfn_swap_entry(swpent)) folio =3D pfn_swap_entry_folio(swpent); diff --git a/include/linux/swapops.h b/include/linux/swapops.h index 2687928a8146..24eaf8825c6b 100644 --- a/include/linux/swapops.h +++ b/include/linux/swapops.h @@ -139,6 +139,24 @@ static inline swp_entry_t pte_to_swp_entry(pte_t pte) return swp_entry(__swp_type(arch_entry), __swp_offset(arch_entry)); } =20 +/** + * pte_to_swp_entry_or_zero() - Convert an arbitrary PTE entry to either i= ts + * swap entry, or the zero swap entry if the PTE is either present or empty + * (none). + * @pte: The PTE entry we are evaluating. + * + * Returns: A valid swap entry or the zero swap entry if the PTE is presen= t or + * none. + */ +static inline swp_entry_t pte_to_swp_entry_or_zero(pte_t pte) +{ + if (pte_present(pte)) + return swp_entry(0, 0); + + /* If none, this will return zero entry. */ + return pte_to_swp_entry(pte); +} + /* * Convert the arch-independent representation of a swp_entry_t into the * arch-dependent pte representation. @@ -438,7 +456,7 @@ static inline pte_marker pte_marker_get(swp_entry_t ent= ry) =20 static inline bool is_pte_marker(pte_t pte) { - return is_swap_pte(pte) && is_pte_marker_entry(pte_to_swp_entry(pte)); + return is_pte_marker_entry(pte_to_swp_entry_or_zero(pte)); } =20 static inline pte_t make_pte_marker(pte_marker marker) diff --git a/include/linux/userfaultfd_k.h b/include/linux/userfaultfd_k.h index c0e716aec26a..4c65adff2e7a 100644 --- a/include/linux/userfaultfd_k.h +++ b/include/linux/userfaultfd_k.h @@ -447,12 +447,7 @@ static inline bool pte_marker_entry_uffd_wp(swp_entry_= t entry) static inline bool pte_marker_uffd_wp(pte_t pte) { #ifdef CONFIG_PTE_MARKER_UFFD_WP - swp_entry_t entry; - - if (!is_swap_pte(pte)) - return false; - - entry =3D pte_to_swp_entry(pte); + swp_entry_t entry =3D pte_to_swp_entry_or_zero(pte); =20 return pte_marker_entry_uffd_wp(entry); #else diff --git a/mm/madvise.c b/mm/madvise.c index fb1c86e630b6..f9f80b2e9d43 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -1071,8 +1071,9 @@ static bool is_valid_guard_vma(struct vm_area_struct = *vma, bool allow_locked) =20 static bool is_guard_pte_marker(pte_t ptent) { - return is_swap_pte(ptent) && - is_guard_swp_entry(pte_to_swp_entry(ptent)); + const swp_entry_t entry =3D pte_to_swp_entry_or_zero(ptent); + + return is_guard_swp_entry(entry); } =20 static int guard_install_pud_entry(pud_t *pud, unsigned long addr, diff --git a/mm/page_vma_mapped.c b/mm/page_vma_mapped.c index 137ce27ff68c..75a8fbb788b7 100644 --- a/mm/page_vma_mapped.c +++ b/mm/page_vma_mapped.c @@ -107,10 +107,7 @@ static bool check_pte(struct page_vma_mapped_walk *pvm= w, unsigned long pte_nr) pte_t ptent =3D ptep_get(pvmw->pte); =20 if (pvmw->flags & PVMW_MIGRATION) { - swp_entry_t entry; - if (!is_swap_pte(ptent)) - return false; - entry =3D pte_to_swp_entry(ptent); + swp_entry_t entry =3D pte_to_swp_entry_or_zero(ptent); =20 if (!is_migration_entry(entry)) return false; --=20 2.51.0 From nobody Sat Feb 7 15:21:41 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (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 2A9CC2EBB9A; Fri, 24 Oct 2025 07:43:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291809; cv=fail; b=l1gbVF3bLvtaerM/S5qNN5OHOcZocVb/M8jQq9tSkQQ2iHAMxQelZLRXfhz3Soli+VvjQU98jbD4UrSRjmaJl7yyWMtxGckXpmg/zpBdWODH6Hv3dw0QbwD+BwVZE+WxGHJLwTJt/bd3/bQtZnyoQ/g5d0T6eASRWJhTJ8GgFno= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291809; c=relaxed/simple; bh=awuuImzGWz4genhH2YCEzznPbuX+8sPVS+TkCXcgVsY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ZwRp+uG+2fhDi+S+c3uYEQJzY+oiUFTZIxGj7ojrfQkauOxVl9Wk6/UkQiKumRCtkj2X0/JiYMgS6HIXa1ZjMUBasMYvdPggcxyfTtQ9hGadYGDjQQHS//sUefy/QSa/O3YrmVncMkN6NPQSZhyH6rOmsYFfvB2n/LYPYGRDLfI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=c5TQe7ur; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=w9/APZfv; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="c5TQe7ur"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="w9/APZfv" Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59O3NRsA005591; Fri, 24 Oct 2025 07:41:51 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=chdedve0egs56Eo6kFi0W9zLUw/nGNSXZ61q89MitpM=; b= c5TQe7urvCFituGipkmvR+rSTFieDPUaPsH3JzMkVR+Jfz+3FSg0ZnBHeEFQqLec mIy6MYkEIU3rX+8XMi3o0FwuFt+emuJ3InOFHsQG2wsNjO5slG/zT6LiBw7vTmLj 5QMClqa0iY1Cjug2hBupmZffUAFKczoqWmhv5lSHh0eBgfETSGxXAQFDlp2jEy3o 6YHDduOJkRm+0V+8WdRgpleVpdi1tXw6NIXeL4KpvVDTevgx8Pv5bJsO4SNviWbL n55iEZHhyzlib8LndqQqNKt020if8F05QIVMIPUa7SqlsyaJ4A1stmZ9N+PCC+f6 OF6I7M+/uGSdZ4WzkxddPw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49xv5wm52w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:41:50 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59O6Y0hF000864; Fri, 24 Oct 2025 07:41:49 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010048.outbound.protection.outlook.com [52.101.56.48]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 49v1bfj872-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:41:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=y3lTjgdkzhvAcfcqfH/wMGl+W3Mb1gHjjoTyA+qevacaD1tHEqzlUjwuCwFpS8F5fnF1f+oiJmyyn19mWn4hkRDkzQkmYho1u/lOkbQC/QgtzTtli9FqnxiCzxNoh+flUp/V5QYJl9xhuiJSKSjYC6jiIADH661ufqbaDsllb2QJZbSOeVYwxmw6xcDyVWT1UpAsaBn4Sl36ew6JYcNhy3AEQtjrUj/OgB23I66/4MVhuBhgdiytkdIH4zix1D3VDhA1w+smP4N+sW3rQ/ol0bqWsTznR+VM8/Ro0XXqxNOuC6Mjv5hfvMf8qw9MKm1RqF7BEjddCgjriXAVIYIWwg== 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=chdedve0egs56Eo6kFi0W9zLUw/nGNSXZ61q89MitpM=; b=jlIBnI9sFF0PlJMvvCP3TikSVQfVhsnF5rOoGSU7934IlOiOY7lBOtCR6xZfCXJAyV7OBbAP3f1P2V8EBsBpKVCRCKfUg1PbBW178IlbCIoBeedqO86JkBBCgeldTjA5cbmRWwbnY2Vlp2CdFdh0bCWjIDIgt76Vedk8FhyrnwVn1DPJkmGvuDklKbDmAknm7z0TlSR1wPsKOQ37/+T0VDEsHfanRDwgfyd93gRQSw2XhHWpA9a3GG+E7LOo6AdTVkTA557XhaXI33I/HUyvQqde1K+Sjz9+p0SrY4uj5ErqJh+ng45mm+mqsdmnXgtJkfa9ufi49BRT0HPiZ767QA== 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=chdedve0egs56Eo6kFi0W9zLUw/nGNSXZ61q89MitpM=; b=w9/APZfvE+BkRBpykWz7BOOM45FAPnnw5GSDiHS1LfXnFWTawfZGaJzTiOvjkPEp4ixKL419tJUWilYPFrNQHLikJWjLE94obG/ga1u/Etw+S9nP2ezv543susrHSRYMVGE3k65uJ0VKmoOTJkSlGi2Cgjf1/axdhlbxET8cJzQ= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CH3PR10MB6716.namprd10.prod.outlook.com (2603:10b6:610:146::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Fri, 24 Oct 2025 07:41:46 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%2]) with mapi id 15.20.9253.011; Fri, 24 Oct 2025 07:41:46 +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 , Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Kemeng Shi , Kairui Song , Nhat Pham , Baoquan He , Chris Li , Peter Xu , Matthew Wilcox , Jason Gunthorpe , Leon Romanovsky , Muchun Song , Oscar Salvador , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Pedro Falcato , Pasha Tatashin , Rik van Riel , Harry Yoo , kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 02/12] mm: avoid unnecessary uses of is_swap_pte() Date: Fri, 24 Oct 2025 08:41:18 +0100 Message-ID: X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P192CA0003.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:5da::13) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|CH3PR10MB6716:EE_ X-MS-Office365-Filtering-Correlation-Id: 0ccd4d31-abb8-40b9-0a97-08de12d0c876 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?AMV6Hz6n93TrsXxG5nHaqLlFXn3jHhJP438zQrjQei+wcXMY2iBO6bMRXtrB?= =?us-ascii?Q?ZH6WHJUvXUVz5V4lAKuyhaK41KHh52E9X5gdnxHOZrY44LXlPCcc2PKKQFZr?= =?us-ascii?Q?zV8tS3VjAE6JYR/F4Gi3mpRcuQQ4EpqNJ3GIfuYGZqQLvOXNjUktfNdyLDHl?= =?us-ascii?Q?gfHMx9BYzwwaeGNt35/mlwu4DD7CCoQjT61g51NLwG+A0ZGyXWuFF35VO2Ab?= =?us-ascii?Q?vzUfMYAn2PqkCHU/XuZayR51l3mNSh1kOSTm+WS/IdJ7ToFkVw35nXMkbQzA?= =?us-ascii?Q?1ilOYkN47rJv3/OOMRb2gb60lrEdTaEeqZiLH5TqDmEpLmxXuYrdvKOhNrjF?= =?us-ascii?Q?qZsUFxSHHtOs/J8Ojo/lJhOV99dMgY8MDQ7s7uEx/7mgoGEfkFTofD1msk1s?= =?us-ascii?Q?lSZZ4nwa1pi1POYP8qqDfzXcN69QgqOu0gQzo+7+F/T1cs6fM755XeiECVSA?= =?us-ascii?Q?kfcASVJDKWfncZHGvh5KXH/bPqtLUxZt9cfp3iP9gAE3hcXqqhRfX/+5Nfwq?= =?us-ascii?Q?H1hhfgxC0rOs71lghY7yCIpw7V9JPOVRrhiPwZ6/0X6HDzi0xvA3OKgrJmIs?= =?us-ascii?Q?i9P8E0rIWdPCYcEe+eYGteK/rd63XiUF/hx26DZio2NIZ6Und8IIxlYDVc11?= =?us-ascii?Q?xkEDfwYhRYUVZDphzF+pbpQz26qO9+jxrXqmfZzgqT76NaNcAad8DfCmi/tC?= =?us-ascii?Q?X0ZsY71CgbCk2FC0HNO2zKe8HEtjSbywSeqnuexj1Ycfb67efoh1ubvoaITu?= =?us-ascii?Q?K8rMK/dtbf+SBe4297+JNnV09c58jYtlHkPE0ERk3LCIg8D54tAEoY5zdBAS?= =?us-ascii?Q?r23TdEY8G2qOZTU+uPRr6uJo6sFRkMkXPB5TpRMxISunNkGIt7zxgtj+KiJz?= =?us-ascii?Q?pTasclZdfqZM3+CWy7ccQFWQThrVKGV2DvdjJ1bbEPjWfqKQ49y8iCN5Yzwf?= =?us-ascii?Q?KJ7crq4d/5ueRxggUdKq1A5HknzFRHpILzzv51SE2XmqhvMGclJL+IsJvXBX?= =?us-ascii?Q?GdnxTU7qYq0/nUp5diJoBZwaRhOQDzpfVc0Nz6adZ4kFI7oUag22+DQas5xs?= =?us-ascii?Q?t5QhaVuBJNUiX0e/lAVjcLMBh46QCN5UC6JGv0TvVh/ZY9Jdh2eh4D0PeKNq?= =?us-ascii?Q?7oTFgdqz5P46bi/9fDRMKUX+cR96XDKtUfxNW0y+EgeNlhFl8EYFJWotRmnm?= =?us-ascii?Q?DjcuNdPprb8LHApe/xhSBb4bjSqqvFJg+tlj7Wfz4r/QVmVHva525U8ib6mF?= =?us-ascii?Q?oI0iCwkYQeCa9n8s5C0o1nNuzZ1oc0X8Fo9dhH5jWULILyN7QXRhZnVtqEoJ?= =?us-ascii?Q?nwXigZTDZzZ2HU5b5J/5jTNtV1VJ8jS6NMGSdnkhG7vwFPbILZkJqT3Sjtj+?= =?us-ascii?Q?4cCRuLg7JmZeUyHXYHj/1N3NpUj1h4N4TOBDFpjRB7YHTojfvdRafRHLpaeR?= =?us-ascii?Q?EpGi+8gIftA25Uf3SqetCj/EjmtLX3ZC?= 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)(7416014)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?jS6EUiwxqXEoFopTv/mIWi/spSEbWkH35u0QRgtozqd8t3s7qK9WiZ7OndoM?= =?us-ascii?Q?pT1s+lALIiTzZ/nbqBr0E45AYm3QYM8PjzYd+3oJLRgnAKu2bdsewAY711yA?= =?us-ascii?Q?SarrMk8ok5cs0bACB6ob7IeX3Yc3Zz0eG/ydgoQnN3X5wphJx64aO/6pJjoA?= =?us-ascii?Q?X1oM9w9dcbHJzAad577yDNlsXNd6y4SU0+Opi6096P658EKrrsgma4KQRQrO?= =?us-ascii?Q?BsamUBozHav/WJGW/Zm+79l4VCtuDOMWTkvVUh1XllQ4V+F9/gUQgB5JwI1K?= =?us-ascii?Q?1vEawHMzSX+8036BLlMkdo2vOWQSwyXeE/PEF7CcsyvirYG0gLZW5Kj86OdG?= =?us-ascii?Q?Q8uT8DYJNW++TOamWMd3ILyy4dZ2jrOLrkkbU/w0jseyMvyA/qptAfv9XHVC?= =?us-ascii?Q?gqokBxBh5/W6auz76ak3KGjwBxU1A3q57CacfBRCCG1LWIuUwFASd97gIBjj?= =?us-ascii?Q?rkYT/fZjfs5z/rEY23FkJkZq0jZ12J5bDlh4+Xk1rY1FV+AKxN5wkgBf9eDO?= =?us-ascii?Q?mUA79mLrbvuIw2ajij+8Myl8SannmdJ7edHcVF/5X0VOvrg6baDz3PLPBVMH?= =?us-ascii?Q?jVRxY62KSkr0h93B2k4Zx4s+JCiqAfNwzx2TmA9BCjX05X7Ewku3/gmN0T97?= =?us-ascii?Q?u0Z3rjbQZQtUn22cdGARV9TW/JLHGIx6NFZX/RmgFw++Loc/uP2/RWbFxbIg?= =?us-ascii?Q?xlKfU3gV/pOacu/3c1NZ+mlPA7Az4ro7grt8wq4bz2lXcbSk8vZRKcWShBm0?= =?us-ascii?Q?mrdblMTR53/P4kHJJkJoqz+VQmh5MszVVnoK0xC6BicjzpzjtyqQ/s7edVLP?= =?us-ascii?Q?gBGfU1lRbd39J+wEXlC7Uek3HO5RLUQhDLJDZXlehT6hEDy8JZyXxVeBO5iK?= =?us-ascii?Q?6sfbsEOY1D221bie646whQLB9tfHGpimzShLPB3Plvknm5/u3RKWb1toVikp?= =?us-ascii?Q?Zbektsb76qth9kMqv03fFmXlYLB7aHL4O1rPagq3ABCTizLiQqajP4lYqXKa?= =?us-ascii?Q?gbWWR1GdJlhS2ftnF1gBanrvtc93N6xn44SOcb7HDV//5xFlWOjYkI4n3BzO?= =?us-ascii?Q?dEF/tflt6xiZqzgGSw66jDE7jzzrvyUg6Hi3OdOEAtReGUeuzKJz9fUQ2B+v?= =?us-ascii?Q?8EGVCthMYe1kZ2lJ7CK+XlJwNEYDp42yPLQNLwxyEeHK8Ifk8yxNbbzcyl4V?= =?us-ascii?Q?pYKJFF3UhFXcZfmzHkgEhFF46cZBDNSmf+jaazqdKhGMqH+WcbTxs5YlgRLw?= =?us-ascii?Q?f/FxQrtrRK/aLxRIaO/6jIt5RfPp9KjjKnyVnZwOslzWKIS3wwt9q7/IgG+w?= =?us-ascii?Q?HFSWtdou+sqpq63HUIqfr9icGbylylmAlohd2lvUx+2lqZCUb8iTHw7DiJYD?= =?us-ascii?Q?5dUcrcsTqjmAJd8FDLC4nc+LBBNjsrf98JdCQOXVz6vSVDU9TlKmAQ3dKBMW?= =?us-ascii?Q?ulN5TyXhdX22/A29z3mFSM32k2TfDZB5HJFxEkTcSur+SjAPOu1IM6zJWA2r?= =?us-ascii?Q?5Xny4KYqfRUkR/j0aRnmnt7AeO6p62yUIFlK1UkTgOxEwwcg2JzURPLi3pPy?= =?us-ascii?Q?UEK4G2487Hj//760QN3X9nv+eGN8qJsP8FEZIj4KA+6MGTd7v1gevwrkUdLn?= =?us-ascii?Q?DA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: oF8gsbmR+OjsbQHTJWwNVeavLIFQo8dXOwKF+z4JHV/a3er/kO/YArTZdRIkM7EG/UnLP44OVL+Zl6FMDobQZyYjdQ6QfccQOpxUFA0Zpz/al5tPCMCK0xjMxgsaW1Xj7Tt5x0tb7LJc/ErC55J869jEygbwAcT0ryKcLbegbu7Ug/AKtN2GR54bbN4tQMKLAko1HRdXLwc5rLVLKINvhckoNBa5szqQ7Hv58zNfSLMT3IC+nnQZt8MMTHtzEsHIO9vIyrrfdnZEFxMJ+EeYfYymL5Q+ZIJszxLgjGff4QGHVjG/oWyaImAQ1BcM1eND4gFS/luSxyKGg30paPtW0vOuojNo9WSWZX2AYAOnCS/mkD+Zgj6QLnfxZTto0vQ0L8wKnh14uAKAoyi3k2Lh2ABXeJl+c/+zNyp1S10LbI02Xq7knb0qEoBJ0yS7Nahat0hvMMrd7Jgud50nPgm26w/fG7PzX5Z8jbuchtUpIwrfYcnQ+nnU4Z48I8DPzYBgmTjQ53iKCYSxt7MJc5ZqX491uDIyU3yW4ycYGTFxzB3ibCSx/AspgbBHT9uXxA72XNsJIleRV/goJg8vimi4jtugb96sGH0vY937zTDkJeU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ccd4d31-abb8-40b9-0a97-08de12d0c876 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2025 07:41:46.0625 (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: 55dIhL0GY4HcsBSefZTRCIb6Qebuwa7HrY3blbh6bqUyG/QwhLHCZaXTze8SBRl69VawsyjqC7Fcrd/XUuKoHBysqtAJHPrKJEj9d4KU/+U= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB6716 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-23_03,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510240066 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIyMDA3MSBTYWx0ZWRfX5coImmMzjMyF 6Qwp/gmrzK8eHcCS0vJ4pMuNrBWzbGDOPTdRdymZ/GPSE2k5+fDhmSySI4javjl47xjnHbofZpi zAsLlf/3EuB7/hGn3hPUvk92f2Ou6/dWIj2wog9/kDBGuFtQ2RAlAmJN6jGIz/VQk8HADn61Hh6 hCSf/akcpGVhJZfaADpqkeqt9LVG5QTOPUosyN3Z0x0IVDL5jkrD9hOZPmGNrBAoMCNjHPRQIMJ qEh8EK+3+Zl+y3mCNCpYfF1Mkp1OFf6DJBD3DhrMLxXSMz/jzeZZS2+HT2OXMw8bJNfIu54IrRW cg7rZoyAEJEKvq1VZ55nA8ya7qJi2aPkI4aklmpwSDlqaKk/Ep2k/6Gi9FfDvVp2gormJ2ZwB3S DefpCg0Rs687yH/9DbS3iWwOoxglvg== X-Proofpoint-GUID: N7DqS7cdGfyEy_BSvvpCuBweu6oUH4jl X-Proofpoint-ORIG-GUID: N7DqS7cdGfyEy_BSvvpCuBweu6oUH4jl X-Authority-Analysis: v=2.4 cv=RfOdyltv c=1 sm=1 tr=0 ts=68fb2dbe b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=jV9XR9aj_bnWWTu6b-sA:9 Content-Type: text/plain; charset="utf-8" There's an established convention in the kernel that we treat PTEs as containing swap entries (and the unfortunately named non-swap swap entries) should they be neither empty (i.e. pte_none() evaluating true) nor present (i.e. pte_present() evaluating true). However, there is some inconsistency in how this is applied, as we also have the is_swap_pte() helper which explicitly performs this check: /* check whether a pte points to a swap entry */ static inline int is_swap_pte(pte_t pte) { return !pte_none(pte) && !pte_present(pte); } As this represents a predicate, and it's logical to assume that in order to establish that a PTE entry can correctly be manipulated as a swap/non-swap entry, this predicate seems as if it must first be checked. But we instead, we far more often utilise the established convention of checking pte_none() / pte_present() before operating on entries as if they were swap/non-swap. This patch works towards correcting this inconsistency by removing all uses of is_swap_pte() where we are already in a position where we perform pte_none()/pte_present() checks anyway or otherwise it is clearly logical to do so. We also take advantage of the fact that pte_swp_uffd_wp() is only set on swap entries. Additionally, update comments referencing to is_swap_pte() and non_swap_entry(). Signed-off-by: Lorenzo Stoakes --- fs/proc/task_mmu.c | 49 ++++++++++++++++++++++++----------- include/linux/userfaultfd_k.h | 9 ++++--- mm/hugetlb.c | 6 ++--- mm/internal.h | 6 ++--- mm/khugepaged.c | 29 +++++++++++---------- mm/migrate.c | 2 +- mm/mprotect.c | 43 ++++++++++++++---------------- mm/mremap.c | 7 +++-- mm/page_table_check.c | 13 ++++++---- mm/page_vma_mapped.c | 27 ++++++++++--------- 10 files changed, 106 insertions(+), 85 deletions(-) diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index a7c8501266f4..5475acfa1a33 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -1017,7 +1017,9 @@ static void smaps_pte_entry(pte_t *pte, unsigned long= addr, young =3D pte_young(ptent); dirty =3D pte_dirty(ptent); present =3D true; - } else if (is_swap_pte(ptent)) { + } else if (pte_none(ptent)) { + smaps_pte_hole_lookup(addr, walk); + } else { swp_entry_t swpent =3D pte_to_swp_entry(ptent); =20 if (!non_swap_entry(swpent)) { @@ -1038,9 +1040,6 @@ static void smaps_pte_entry(pte_t *pte, unsigned long= addr, present =3D true; page =3D pfn_swap_entry_to_page(swpent); } - } else { - smaps_pte_hole_lookup(addr, walk); - return; } =20 if (!page) @@ -1611,6 +1610,9 @@ static inline void clear_soft_dirty(struct vm_area_st= ruct *vma, */ pte_t ptent =3D ptep_get(pte); =20 + if (pte_none(ptent)) + return; + if (pte_present(ptent)) { pte_t old_pte; =20 @@ -1620,7 +1622,7 @@ static inline void clear_soft_dirty(struct vm_area_st= ruct *vma, ptent =3D pte_wrprotect(old_pte); ptent =3D pte_clear_soft_dirty(ptent); ptep_modify_prot_commit(vma, addr, pte, old_pte, ptent); - } else if (is_swap_pte(ptent)) { + } else { ptent =3D pte_swp_clear_soft_dirty(ptent); set_pte_at(vma->vm_mm, addr, pte, ptent); } @@ -1923,6 +1925,9 @@ static pagemap_entry_t pte_to_pagemap_entry(struct pa= gemapread *pm, struct page *page =3D NULL; struct folio *folio; =20 + if (pte_none(pte)) + goto out; + if (pte_present(pte)) { if (pm->show_pfn) frame =3D pte_pfn(pte); @@ -1932,8 +1937,9 @@ static pagemap_entry_t pte_to_pagemap_entry(struct pa= gemapread *pm, flags |=3D PM_SOFT_DIRTY; if (pte_uffd_wp(pte)) flags |=3D PM_UFFD_WP; - } else if (is_swap_pte(pte)) { + } else { swp_entry_t entry; + if (pte_swp_soft_dirty(pte)) flags |=3D PM_SOFT_DIRTY; if (pte_swp_uffd_wp(pte)) @@ -1941,6 +1947,7 @@ static pagemap_entry_t pte_to_pagemap_entry(struct pa= gemapread *pm, entry =3D pte_to_swp_entry(pte); if (pm->show_pfn) { pgoff_t offset; + /* * For PFN swap offsets, keeping the offset field * to be PFN only to be compatible with old smaps. @@ -1969,6 +1976,8 @@ static pagemap_entry_t pte_to_pagemap_entry(struct pa= gemapread *pm, __folio_page_mapped_exclusively(folio, page)) flags |=3D PM_MMAP_EXCLUSIVE; } + +out: if (vma->vm_flags & VM_SOFTDIRTY) flags |=3D PM_SOFT_DIRTY; =20 @@ -2310,12 +2319,16 @@ static unsigned long pagemap_page_category(struct p= agemap_scan_private *p, struct vm_area_struct *vma, unsigned long addr, pte_t pte) { - unsigned long categories =3D 0; + unsigned long categories; + + if (pte_none(pte)) + return 0; =20 if (pte_present(pte)) { struct page *page; =20 - categories |=3D PAGE_IS_PRESENT; + categories =3D PAGE_IS_PRESENT; + if (!pte_uffd_wp(pte)) categories |=3D PAGE_IS_WRITTEN; =20 @@ -2329,10 +2342,11 @@ static unsigned long pagemap_page_category(struct p= agemap_scan_private *p, categories |=3D PAGE_IS_PFNZERO; if (pte_soft_dirty(pte)) categories |=3D PAGE_IS_SOFT_DIRTY; - } else if (is_swap_pte(pte)) { + } else { swp_entry_t swp; =20 - categories |=3D PAGE_IS_SWAPPED; + categories =3D PAGE_IS_SWAPPED; + if (!pte_swp_uffd_wp_any(pte)) categories |=3D PAGE_IS_WRITTEN; =20 @@ -2360,12 +2374,12 @@ static void make_uffd_wp_pte(struct vm_area_struct = *vma, old_pte =3D ptep_modify_prot_start(vma, addr, pte); ptent =3D pte_mkuffd_wp(old_pte); ptep_modify_prot_commit(vma, addr, pte, old_pte, ptent); - } else if (is_swap_pte(ptent)) { - ptent =3D pte_swp_mkuffd_wp(ptent); - set_pte_at(vma->vm_mm, addr, pte, ptent); - } else { + } else if (pte_none(ptent)) { set_pte_at(vma->vm_mm, addr, pte, make_pte_marker(PTE_MARKER_UFFD_WP)); + } else { + ptent =3D pte_swp_mkuffd_wp(ptent); + set_pte_at(vma->vm_mm, addr, pte, ptent); } } =20 @@ -2434,6 +2448,9 @@ static unsigned long pagemap_hugetlb_category(pte_t p= te) { unsigned long categories =3D PAGE_IS_HUGE; =20 + if (pte_none(pte)) + return categories; + /* * According to pagemap_hugetlb_range(), file-backed HugeTLB * page cannot be swapped. So PAGE_IS_FILE is not checked for @@ -2441,6 +2458,7 @@ static unsigned long pagemap_hugetlb_category(pte_t p= te) */ if (pte_present(pte)) { categories |=3D PAGE_IS_PRESENT; + if (!huge_pte_uffd_wp(pte)) categories |=3D PAGE_IS_WRITTEN; if (!PageAnon(pte_page(pte))) @@ -2449,8 +2467,9 @@ static unsigned long pagemap_hugetlb_category(pte_t p= te) categories |=3D PAGE_IS_PFNZERO; if (pte_soft_dirty(pte)) categories |=3D PAGE_IS_SOFT_DIRTY; - } else if (is_swap_pte(pte)) { + } else { categories |=3D PAGE_IS_SWAPPED; + if (!pte_swp_uffd_wp_any(pte)) categories |=3D PAGE_IS_WRITTEN; if (pte_swp_soft_dirty(pte)) diff --git a/include/linux/userfaultfd_k.h b/include/linux/userfaultfd_k.h index 4c65adff2e7a..a362e1619b95 100644 --- a/include/linux/userfaultfd_k.h +++ b/include/linux/userfaultfd_k.h @@ -462,13 +462,14 @@ static inline bool pte_marker_uffd_wp(pte_t pte) static inline bool pte_swp_uffd_wp_any(pte_t pte) { #ifdef CONFIG_PTE_MARKER_UFFD_WP - if (!is_swap_pte(pte)) - return false; + swp_entry_t entry; =20 + if (pte_present(pte)) + return false; if (pte_swp_uffd_wp(pte)) return true; - - if (pte_marker_uffd_wp(pte)) + entry =3D pte_to_swp_entry(pte); + if (pte_marker_entry_uffd_wp(entry)) return true; #endif return false; diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 86e672fcb305..4510029761ed 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -5798,13 +5798,13 @@ static void move_huge_pte(struct vm_area_struct *vm= a, unsigned long old_addr, =20 pte =3D huge_ptep_get_and_clear(mm, old_addr, src_pte, sz); =20 - if (need_clear_uffd_wp && pte_marker_uffd_wp(pte)) + if (need_clear_uffd_wp && pte_marker_uffd_wp(pte)) { huge_pte_clear(mm, new_addr, dst_pte, sz); - else { + } else { if (need_clear_uffd_wp) { if (pte_present(pte)) pte =3D huge_pte_clear_uffd_wp(pte); - else if (is_swap_pte(pte)) + else pte =3D pte_swp_clear_uffd_wp(pte); } set_huge_pte_at(mm, new_addr, dst_pte, pte, sz); diff --git a/mm/internal.h b/mm/internal.h index cbd3d897b16c..b855a4412878 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -325,8 +325,7 @@ unsigned int folio_pte_batch(struct folio *folio, pte_t= *ptep, pte_t pte, /** * pte_move_swp_offset - Move the swap entry offset field of a swap pte * forward or backward by delta - * @pte: The initial pte state; is_swap_pte(pte) must be true and - * non_swap_entry() must be false. + * @pte: The initial pte state; must be a swap entry * @delta: The direction and the offset we are moving; forward if delta * is positive; backward if delta is negative * @@ -352,8 +351,7 @@ static inline pte_t pte_move_swp_offset(pte_t pte, long= delta) =20 /** * pte_next_swp_offset - Increment the swap entry offset field of a swap p= te. - * @pte: The initial pte state; is_swap_pte(pte) must be true and - * non_swap_entry() must be false. + * @pte: The initial pte state; must be a swap entry. * * Increments the swap offset, while maintaining all other fields, includi= ng * swap type, and any swp pte bits. The resulting pte is returned. diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 5b7276bc14b1..2079f270196f 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -1019,7 +1019,8 @@ static int __collapse_huge_page_swapin(struct mm_stru= ct *mm, } =20 vmf.orig_pte =3D ptep_get_lockless(pte); - if (!is_swap_pte(vmf.orig_pte)) + if (pte_none(vmf.orig_pte) || + pte_present(vmf.orig_pte)) continue; =20 vmf.pte =3D pte; @@ -1276,7 +1277,19 @@ static int hpage_collapse_scan_pmd(struct mm_struct = *mm, for (addr =3D start_addr, _pte =3D pte; _pte < pte + HPAGE_PMD_NR; _pte++, addr +=3D PAGE_SIZE) { pte_t pteval =3D ptep_get(_pte); - if (is_swap_pte(pteval)) { + if (pte_none_or_zero(pteval)) { + ++none_or_zero; + if (!userfaultfd_armed(vma) && + (!cc->is_khugepaged || + none_or_zero <=3D khugepaged_max_ptes_none)) { + continue; + } else { + result =3D SCAN_EXCEED_NONE_PTE; + count_vm_event(THP_SCAN_EXCEED_NONE_PTE); + goto out_unmap; + } + } + if (!pte_present(pteval)) { ++unmapped; if (!cc->is_khugepaged || unmapped <=3D khugepaged_max_ptes_swap) { @@ -1296,18 +1309,6 @@ static int hpage_collapse_scan_pmd(struct mm_struct = *mm, goto out_unmap; } } - if (pte_none_or_zero(pteval)) { - ++none_or_zero; - if (!userfaultfd_armed(vma) && - (!cc->is_khugepaged || - none_or_zero <=3D khugepaged_max_ptes_none)) { - continue; - } else { - result =3D SCAN_EXCEED_NONE_PTE; - count_vm_event(THP_SCAN_EXCEED_NONE_PTE); - goto out_unmap; - } - } if (pte_uffd_wp(pteval)) { /* * Don't collapse the page if any of the small diff --git a/mm/migrate.c b/mm/migrate.c index 4324fc01bfce..69d8b4a9db25 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -492,7 +492,7 @@ void migration_entry_wait(struct mm_struct *mm, pmd_t *= pmd, pte =3D ptep_get(ptep); pte_unmap(ptep); =20 - if (!is_swap_pte(pte)) + if (pte_none(pte) || pte_present(pte)) goto out; =20 entry =3D pte_to_swp_entry(pte); diff --git a/mm/mprotect.c b/mm/mprotect.c index c090bc063a31..e25ac9835cc2 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -345,7 +345,26 @@ static long change_pte_range(struct mmu_gather *tlb, prot_commit_flush_ptes(vma, addr, pte, oldpte, ptent, nr_ptes, /* idx =3D */ 0, /* set_write =3D */ false, tlb); pages +=3D nr_ptes; - } else if (is_swap_pte(oldpte)) { + } else if (pte_none(oldpte)) { + /* + * Nobody plays with any none ptes besides + * userfaultfd when applying the protections. + */ + if (likely(!uffd_wp)) + continue; + + if (userfaultfd_wp_use_markers(vma)) { + /* + * For file-backed mem, we need to be able to + * wr-protect a none pte, because even if the + * pte is none, the page/swap cache could + * exist. Doing that by install a marker. + */ + set_pte_at(vma->vm_mm, addr, pte, + make_pte_marker(PTE_MARKER_UFFD_WP)); + pages++; + } + } else { swp_entry_t entry =3D pte_to_swp_entry(oldpte); pte_t newpte; =20 @@ -406,28 +425,6 @@ static long change_pte_range(struct mmu_gather *tlb, set_pte_at(vma->vm_mm, addr, pte, newpte); pages++; } - } else { - /* It must be an none page, or what else?.. */ - WARN_ON_ONCE(!pte_none(oldpte)); - - /* - * Nobody plays with any none ptes besides - * userfaultfd when applying the protections. - */ - if (likely(!uffd_wp)) - continue; - - if (userfaultfd_wp_use_markers(vma)) { - /* - * For file-backed mem, we need to be able to - * wr-protect a none pte, because even if the - * pte is none, the page/swap cache could - * exist. Doing that by install a marker. - */ - set_pte_at(vma->vm_mm, addr, pte, - make_pte_marker(PTE_MARKER_UFFD_WP)); - pages++; - } } } while (pte +=3D nr_ptes, addr +=3D nr_ptes * PAGE_SIZE, addr !=3D end); arch_leave_lazy_mmu_mode(); diff --git a/mm/mremap.c b/mm/mremap.c index bd7314898ec5..f01c74add990 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -158,6 +158,9 @@ static void drop_rmap_locks(struct vm_area_struct *vma) =20 static pte_t move_soft_dirty_pte(pte_t pte) { + if (pte_none(pte)) + return pte; + /* * Set soft dirty bit so we can notice * in userspace the ptes were moved. @@ -165,7 +168,7 @@ static pte_t move_soft_dirty_pte(pte_t pte) #ifdef CONFIG_MEM_SOFT_DIRTY if (pte_present(pte)) pte =3D pte_mksoft_dirty(pte); - else if (is_swap_pte(pte)) + else pte =3D pte_swp_mksoft_dirty(pte); #endif return pte; @@ -294,7 +297,7 @@ static int move_ptes(struct pagetable_move_control *pmc, if (need_clear_uffd_wp) { if (pte_present(pte)) pte =3D pte_clear_uffd_wp(pte); - else if (is_swap_pte(pte)) + else pte =3D pte_swp_clear_uffd_wp(pte); } set_ptes(mm, new_addr, new_ptep, pte, nr_ptes); diff --git a/mm/page_table_check.c b/mm/page_table_check.c index 4eeca782b888..43f75d2f7c36 100644 --- a/mm/page_table_check.c +++ b/mm/page_table_check.c @@ -185,12 +185,15 @@ static inline bool swap_cached_writable(swp_entry_t e= ntry) is_writable_migration_entry(entry); } =20 -static inline void page_table_check_pte_flags(pte_t pte) +static void page_table_check_pte_flags(pte_t pte) { - if (pte_present(pte) && pte_uffd_wp(pte)) - WARN_ON_ONCE(pte_write(pte)); - else if (is_swap_pte(pte) && pte_swp_uffd_wp(pte)) - WARN_ON_ONCE(swap_cached_writable(pte_to_swp_entry(pte))); + if (pte_present(pte)) { + WARN_ON_ONCE(pte_uffd_wp(pte) && pte_write(pte)); + } else if (pte_swp_uffd_wp(pte)) { + const swp_entry_t entry =3D pte_to_swp_entry(pte); + + WARN_ON_ONCE(swap_cached_writable(entry)); + } } =20 void __page_table_check_ptes_set(struct mm_struct *mm, pte_t *ptep, pte_t = pte, diff --git a/mm/page_vma_mapped.c b/mm/page_vma_mapped.c index 75a8fbb788b7..2e5ac6572630 100644 --- a/mm/page_vma_mapped.c +++ b/mm/page_vma_mapped.c @@ -16,6 +16,7 @@ static inline bool not_found(struct page_vma_mapped_walk = *pvmw) static bool map_pte(struct page_vma_mapped_walk *pvmw, pmd_t *pmdvalp, spinlock_t **ptlp) { + bool is_migration; pte_t ptent; =20 if (pvmw->flags & PVMW_SYNC) { @@ -26,6 +27,7 @@ static bool map_pte(struct page_vma_mapped_walk *pvmw, pm= d_t *pmdvalp, return !!pvmw->pte; } =20 + is_migration =3D pvmw->flags & PVMW_MIGRATION; again: /* * It is important to return the ptl corresponding to pte, @@ -41,11 +43,14 @@ static bool map_pte(struct page_vma_mapped_walk *pvmw, = pmd_t *pmdvalp, =20 ptent =3D ptep_get(pvmw->pte); =20 - if (pvmw->flags & PVMW_MIGRATION) { - if (!is_swap_pte(ptent)) + if (pte_none(ptent)) { + return false; + } else if (pte_present(ptent)) { + if (is_migration) return false; - } else if (is_swap_pte(ptent)) { + } else if (!is_migration) { swp_entry_t entry; + /* * Handle un-addressable ZONE_DEVICE memory. * @@ -66,8 +71,6 @@ static bool map_pte(struct page_vma_mapped_walk *pvmw, pm= d_t *pmdvalp, if (!is_device_private_entry(entry) && !is_device_exclusive_entry(entry)) return false; - } else if (!pte_present(ptent)) { - return false; } spin_lock(*ptlp); if (unlikely(!pmd_same(*pmdvalp, pmdp_get_lockless(pvmw->pmd)))) { @@ -107,27 +110,23 @@ static bool check_pte(struct page_vma_mapped_walk *pv= mw, unsigned long pte_nr) pte_t ptent =3D ptep_get(pvmw->pte); =20 if (pvmw->flags & PVMW_MIGRATION) { - swp_entry_t entry =3D pte_to_swp_entry_or_zero(ptent); + const swp_entry_t entry =3D pte_to_swp_entry_or_zero(ptent); =20 if (!is_migration_entry(entry)) return false; =20 pfn =3D swp_offset_pfn(entry); - } else if (is_swap_pte(ptent)) { - swp_entry_t entry; + } else if (pte_present(ptent)) { + pfn =3D pte_pfn(ptent); + } else { + const swp_entry_t entry =3D pte_to_swp_entry(ptent); =20 /* Handle un-addressable ZONE_DEVICE memory */ - entry =3D pte_to_swp_entry(ptent); if (!is_device_private_entry(entry) && !is_device_exclusive_entry(entry)) return false; =20 pfn =3D swp_offset_pfn(entry); - } else { - if (!pte_present(ptent)) - return false; - - pfn =3D pte_pfn(ptent); } =20 if ((pfn + pte_nr - 1) < pvmw->pfn) --=20 2.51.0 From nobody Sat Feb 7 15:21:41 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (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 C1E8D2F5468; Fri, 24 Oct 2025 07:43:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291838; cv=fail; b=Sck5ROBmuZWQVLbT8M9N6X7KquMxSMcAnkezQCiRYnLeX3/CUq8zlwRoiXmXAge1vgyiTTKOTQ/6GNSzHoQgK9RKOaLyMRgJvnKz4y0vEY23BvJc4E8xcajmCEkhlmHuv1nZRhVbcV1soxMayZQV+2+hJT0tOMpUEPnoBO8TUzM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291838; c=relaxed/simple; bh=e0odl34dsCMgPjzV3f9n8IDXOHx8VO6jCV8Jh4PXmKg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=LfYZ7hphALgRITJ3MnpSl2gxLsVAMkl49z/lA4SEgrCMF/W9VUHwPvK18UyjYrXF50X8HpueSh0QFhm5Zj0ZuCrKNsOfbuh7VCfFtDj2KzhNNViBT14ovIj6PO4k+3fFFxE+Ja2IdJaZxViG080f2ghp3+Dt2EeqY2KoDl1x3ZM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=sdNVfI33; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=stCAx015; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="sdNVfI33"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="stCAx015" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59O3Nwjw029460; Fri, 24 Oct 2025 07:41:59 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=ggdF/T6I0YXEYXqPE14M1nwz5EZJMt4atTt+5kQ7td8=; b= sdNVfI33zCV/XnMf7hCr79MjOcr8FTtQ8NDugHJ0eMFMLxUSTH8c7Bd5Qjo5fTRe idQzGa/K8pWRf1USZM6ByRuWdGJXwjq4OVVwXuCcygRqkU/BIEHUyX6dHyG48OVl CGKTFdVrj6D5stVMZSdo3/+BTwUtYK7NHS/peF4A61VT26qaHvJqkPm45PP2AErr eb2nrV/oStoieTl4jMbm6THT3vYhhe8BLhKDozvJN/VQPQOGLVvcpWd3LOz6PMGV b9kp+C81Ayd8t4KjmpN8g2oxXpptFlC0nlpKqK4autOKqhkw8IEydHxV44VXImck A4f+cKctUMT/U/Dy8S2jdQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49xvd0v4jg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:41:58 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59O7WQQq035638; Fri, 24 Oct 2025 07:41:57 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010032.outbound.protection.outlook.com [52.101.56.32]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 49v1bgm4xq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:41:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ChLNUH5xeMv1isbKZ1B8SjN/yX7pM3KutZKWJ3ABCrgiEjSQbYJioBWInxh5YoxFta63mTQtZrPdfKDKHiPkmBbRCLgthyZqJTSGcGY53U3Ezo86Hmjwrr2e0mjzEQkyD+j8wG7kQ2AElWEUuXVybgX8U+Mh7JBPs/l1Tz5JxkEYLug4Mg/gi/d/7UyXvMDpF/t/ZwEzPzYaLWBSZW9LZ04I5Krmd26MREq08q1/MCCYCR4vswXFklh+4Bpf19evVuYlHUvO8DWq2/n5jDEwUfHAj0Bx9tW+m4h2HSmBy40k4vMfS4HGYNdRvAPLCqIt9yYC6I/ylcv2/r8qoQbWyA== 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=ggdF/T6I0YXEYXqPE14M1nwz5EZJMt4atTt+5kQ7td8=; b=CgGr8S0rdToIyIPx1wY0KVBfuDvbYAfodmgWO3OsjjDfyOGGZaDiRzADZjnsjBS5fW1wZciM5jYBSR04F2hgCFAnK+d/uwxfrkFufc/0u1w9ctXrrPs5Cc6jw3borPnc4EasMSO1TYS2Z7vtS/1bHZakaT/n8gpwyNJ+4MEiITzjV7nvHun2XeHtHEPVJSbinT2MoOy25PrErMRmgKVe5kaofC7KzI/B7d7bDtDHlahZfn9rZ/uG9LuNphLs2YyunHQRA0BXDI7jpuMEz2d0ksmJVpAeGPkX0TerO7xyLVKrwQ8AAaRziI2wjVG+FnTGvUm8LPFCfxo5CN2liliNnA== 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=ggdF/T6I0YXEYXqPE14M1nwz5EZJMt4atTt+5kQ7td8=; b=stCAx01557/u1HQqf4JIgERHFU81J+IOBu6Imbtv65Jjp5B9uU7Q46H0/C3UR/2cUQ4DgbRS8mXUaJwjAccvhu+gW5eIaEnqoRLM/IF6AR88PTjQyD5tk+aVbEGgliqvMAqiTunArQ1AKWgLtc6y/8LFTyL1zJUe4p9Fu52bEjU= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CH3PR10MB6716.namprd10.prod.outlook.com (2603:10b6:610:146::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Fri, 24 Oct 2025 07:41:49 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%2]) with mapi id 15.20.9253.011; Fri, 24 Oct 2025 07:41:49 +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 , Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Kemeng Shi , Kairui Song , Nhat Pham , Baoquan He , Chris Li , Peter Xu , Matthew Wilcox , Jason Gunthorpe , Leon Romanovsky , Muchun Song , Oscar Salvador , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Pedro Falcato , Pasha Tatashin , Rik van Riel , Harry Yoo , kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 03/12] mm: introduce get_pte_swap_entry() and use it Date: Fri, 24 Oct 2025 08:41:19 +0100 Message-ID: X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P191CA0022.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:5d9::13) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|CH3PR10MB6716:EE_ X-MS-Office365-Filtering-Correlation-Id: 4ad025eb-7c54-4fc7-f97e-08de12d0ca5d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?bEcLPyj7GVPDK6Ol1tQWpyoKb7KEfak5hFm5a8WA0kxOTil6lfwmY5rkkJfo?= =?us-ascii?Q?oHusp4r2Y+kSjfWektEDBuW7G4hoorPqQpZA/TXgj131FWToiN9iTkaz4pWB?= =?us-ascii?Q?Ot8aNG4DgXp/39u9IZ43D9TaO2QnlEZzlJPhJPNss8A8lrebm3lP1bQiqzNJ?= =?us-ascii?Q?7upyXoIm59/gOT9tjKpgKOlFlt23q9sjB4tJz0ozS1mnF2dPsLNw/5pyYErd?= =?us-ascii?Q?i6bdv/tvKzeQ1q8CMUkIy6Y7l+78fjlUel3tfB6Yc0OS1ONiKHyJ5NIDdRPM?= =?us-ascii?Q?rQlYqVKpy5xNkNhY9iWiy3aWPIcG9lYX7lz1x6QvKmYu7Bjptz2XcoBDQ/7r?= =?us-ascii?Q?KFEl0eJjbwpv37DrHkQhUVN09NroL347kwPSfqiE+QIAsB5Vs/E4CNAtr6la?= =?us-ascii?Q?6H273Ww7R1Vr93cJeDoDPGcWpdxOZAX9uBHnVUzqhxIaJslacLMYoAM2saFi?= =?us-ascii?Q?/lcAI+ypCSBjVBYle9ymMrqx1FJXf8vtN2SUlkcc/7J8i2lQCFsT/TS14shn?= =?us-ascii?Q?6IA5knQ4a3Z45s1bOGF5JX9j73BzkfLfP40RUZRdTEURZkDxxeHPUYe0rdE7?= =?us-ascii?Q?H7hlMMokUoz8UwCpu6wb2TgfRWnBvzY+caEIiEOMJlIdXXxYzfCIUnhifmlk?= =?us-ascii?Q?zeeG0Nyf5PXarKaM43mQAR9ZyQ4lXN2BbQ/ym7gsE61S605H0nG26F950ZMy?= =?us-ascii?Q?TU40HKj3noaciCtfctPyt2Ehe/eM7+k5iLPA8Qr+59AxMFyb/BI/hwZCIhbG?= =?us-ascii?Q?fdXsqu7IrCqJ0yFSEQor9E3TkjvIoXmhwTS8qxKBYbxspoPq0sxdTZ9yAcDw?= =?us-ascii?Q?/U/13qp/YyusAkOCsMU6THDV8PZmbHEphgT02f6H+F0MQXnnd2JS0JqYsBUG?= =?us-ascii?Q?SQkmEi8kJ6/fvKfDPep7oDjYP0Z2P6KL0GNIUjri9jqOjogX0yhii+cDvUmb?= =?us-ascii?Q?9BMacI8GhCGZUmSUXLHAtfGKJ7j38GIh/lteYagHqxaKBJngoAAFZiS5rzCi?= =?us-ascii?Q?ypMQDBH+kBUO1orx+pCJwXuafISES4cv/nzF/mhjaV5KnWeKCi7GIdj7cize?= =?us-ascii?Q?MhxolEXRFFRUdy7u2m+WpowlHrQjwEzDlRoP77+GS0Q4GAgroM7edzVQwMHL?= =?us-ascii?Q?nqMJUCUBDZGoaq/1HWVCISPvADhUEXyvj61cLyPBlWuprnGC4j1PukyqxZmO?= =?us-ascii?Q?AsOiIWiqlWFR31+MP020D8sM39zD9p9qwwWslAfnYSMh/NwD1GYyNqRSwLE6?= =?us-ascii?Q?Y3j727pFQDDGj6eItcLSyp2k7UpgSiUvUOpgLnnHAmhOaOneFFFIB9uCGyCF?= =?us-ascii?Q?g3GypB/CVgJxU8s9y2nEF2XtGk1WPEsYq3YVs/by+kC8xNisYw0aSgk9sn/f?= =?us-ascii?Q?IX335JJhnYcnRxcgrv72xVPy5IpFwjCJJg8zZa0WvNWKs6zTRSw1YFv7SWU+?= =?us-ascii?Q?5GG7AmHVd3aevO6Z8iKhe7Kt0OF2lDTM?= 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)(7416014)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?uQa+H5p1kyljTLBm7DYucUdKqZNUGVu71/1Jvj1AwusKwV5pOREKuYzBs1zy?= =?us-ascii?Q?7VSZkfYS00nPVeUSgX253JTYWkEFBwzNFcRERKNeJs+ZfyOmebDq3hjoubU4?= =?us-ascii?Q?6y5ljk26MF5eR8++8rN7TTRFJRW5BF3HNVmrMGrVk4CuJwoFlRBwtgfhgGiZ?= =?us-ascii?Q?Xj5bS1ZOFu7n460AZvXVKTvvbcXw+Ro14D0L53pC7MzeFe8IeYVEX6OW45yD?= =?us-ascii?Q?Ca6Tl98dl7PhpPx371WSUOe2TBc+cOXh3LihLLgZkrUQNMqgXrzpLH/PBkGL?= =?us-ascii?Q?zbn8eyb3O95wkNlAgvF+JT6YMJzWFjnUXd2V/VP6U6+zsUM/IpqqaKWAS3CA?= =?us-ascii?Q?gWvWspElIuu0PaMNv1atTm7m7BJR0FCkzYeQn18cJEqhNF+43To+52npsyEX?= =?us-ascii?Q?IoXWaWD0KuYXTV56ZLsntDY6vSr5iv2M/w9ymUcFCvxPEY7f9l4jqW3OMaWx?= =?us-ascii?Q?V1F66toj52egsWui/GHWp99fln6lh84QKPMy7Qs3+wA1LMTzacCvgWP1SOZc?= =?us-ascii?Q?ijmy7Iehnx04tOLlKNjHu3GpHJXK2L0bwq/A7YM4LwxMzHfrEkKHXcetH4zX?= =?us-ascii?Q?OtQURx1rAh9Xh61z/WYJnD1UbAfAJ9De/iwY0QDyhIpyDtwxViyIX+arM9Wf?= =?us-ascii?Q?zH6iy276E2sCbTfdCOUEqvoeLDrTxTLH65Uys4zmoPQnR65/gr8xYSDGaveJ?= =?us-ascii?Q?vWMhEFpdBVJNuFQl5PEaUO0a2FEDvRJT/r3lqtMll7AiQyUEYGHJhZBReD8R?= =?us-ascii?Q?BGWVYi4CblDmO6eSqb5XshPIm4nktzvgJFcF0vRR5291p0iXEmAwNO4PPlzD?= =?us-ascii?Q?VnkL+cOn9tSscwsT1m0wsbRLIpmahm0QQHOhlzgIWCOgTqT6pgvuHXMWTEjs?= =?us-ascii?Q?0zgasCTHEIY8NaFQDRM8rN3WTJndziQ6yz+fj6MvLtedIjjrVVZSSDuL7Tih?= =?us-ascii?Q?Lzxa0ZEX41iYHwCn8XGx8lS6pseEzXpu6c56BcK1IPNqwTnbOA1PW/bQrbta?= =?us-ascii?Q?AzzSZWJIDSyQxaG18hEj9JEn6sly7T1Clhdtp+QcQqI4d4hTBAdMCKoI6pLC?= =?us-ascii?Q?qxAcQs5fiiJbdJft1Op/7CuGDBpo85UG90FKAZiT5SUgaASQpPiAZn9ZIbgV?= =?us-ascii?Q?c+vTDB+UKV81amCrImFx88rTeBctIeIGDl46jI08CK7T7kCePJUVIE3HHR7s?= =?us-ascii?Q?N8MVi8E6k4/VGkL7OIzXqoHvGk229Q3Seh/bMSU5+/x5ONcf447go/i6wfJp?= =?us-ascii?Q?RbUTKxNd+bMaLOI5QGCZbs1VWa+ABOQf+PN3cCzZp4kcJDE8GHBuPI7s1vIH?= =?us-ascii?Q?0OLpf76iFLuvwZItsWI1hcZD5jCvrm6MT7cI5L/5bQUlFV0EMUDeiV265dEG?= =?us-ascii?Q?S8tCi0jjAlZoJx8KYOp3smoZUifQNdRwFY8sCwTLPKwW8LwnNPfoL7zIC7Vs?= =?us-ascii?Q?/7v3JZqqOdG0r/1FtihKGeqPEgCkJRwG+fbum+7EypbQFH0onVsRkmxO8dq3?= =?us-ascii?Q?b3q4UmrgPbXx9ambDk3kmklR8ggT8m+TRbdl1X3Xe9RHw+TvE8iqE9hYCtfl?= =?us-ascii?Q?zvxmN3PYnu9pMoLo4YGx02B+M6VDX5S7xasaIAzpze7X3Axe85PL/6Jrv55w?= =?us-ascii?Q?Zg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: qRFbsWcmrOMfzsNeE2U9vmYpek6Z1foIIIMIC3j03DfSpkO7fZhXCNKPXp2gqCo7bS3Q8/GWUO0DGt/NBF0rV/0EQ5fWM1Hgvh2fL+cddMD2lCRgBkL5IpOeO5DCvJiNbMBPMVX0vaAP+tSVFu9KC/PXAvAInJyjzEWotvJxsUPWr//fyH3IQTu2sUiJMIKqFDe6JSTiRN+KXe2olP7sJGaMkSE0egkpInC/vNTLhh6Hs3dP9/Adc+88lEG03WNl3JblQq2yVTk1kbW9kCiBlGpS1q0Ul8K0YzJlOMsMzIOnHtsNWQ5dtmdFOubbnabnRe/iNEBeJocq6VG2yYfRsp+aE937GSMRxcuVf1QQ0AlS+rHdXCxmCRtVME91S6vamxB26BI8ArZQPOdQQWYVSeWibjXEU56BZza+PttE34HR3+99iwWRKeGh0z+6YUo230OEJyts6+W/rw9ElGVtDi5s0EdwTX37sgVJDMZjKSnhdh/YqkKRpyTcUN6EWW1GFzeSLt8BCVk8g+ZyGcSbuCpM7I9f2xFRmb7K8+vWo6Xk9pTo6f0XsfZ+rVhEgwcQdPmEAhu1SO+yBiQgYldE5SgS2vc97VuxlP0uMPWrZnQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4ad025eb-7c54-4fc7-f97e-08de12d0ca5d X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2025 07:41:49.2651 (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: BAYbzcHS2ZNmeyoXgubum8R4ECYzeSwCmHx6UTy5ZYFKATEfaHpIFHOJu2ZTuHDiX5Pm7kdg/YeK0bunOre1iSflrjlLvqbHsgr1anKbi1o= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB6716 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-23_03,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 malwarescore=0 adultscore=0 bulkscore=0 spamscore=0 suspectscore=0 mlxscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510240066 X-Proofpoint-ORIG-GUID: MqZfYk3cWjL79c8_Afc76aKNrMQr5lpn X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIyMDA3MyBTYWx0ZWRfX5tv7f0q+c76i 82C1GW50c4+zlRzC5HqCAqGxzYAhPAIPhYNolTybOSEFm+o5bzwP3/IewhQ5C3oszC6LY189JWP 610Tyfq1xS+8UVs83C117Q6O+3vh0kkxQX7VK5fHM+NJkL3Xk7MRSb/QLSto0hf0iIz9T5dlTnA Vthn9xI2rlvM0c0zfQ2QIxqs+vsbBH0Q7YFxIKBQwcVWjHCFCdfluX1q15Q7T6JF9Mr9KefBzwg 7qOGCl15MO15ujiqaGQHktv3wKceWo14uHrGbcsaQu7Ng44xjq151NyHM9mtd7Gtdju9iS/nTBS GxAWzML0J117mYIE1D8ZRcrhqZSPHFxi3Qu1Vgv/3pfXUDZAVwWFtoXRxNwtJL/fz69HioMR4cM byqNIw/Zw6WdrU/RFw8kOUt+z7159ayT9Ipwy99PUhpzYIt3HR0= X-Proofpoint-GUID: MqZfYk3cWjL79c8_Afc76aKNrMQr5lpn X-Authority-Analysis: v=2.4 cv=D9RK6/Rj c=1 sm=1 tr=0 ts=68fb2dc6 b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=drdI2bGYmz5d-Dgk2eoA:9 cc=ntf awl=host:12091 Content-Type: text/plain; charset="utf-8" We have a number of checks which explicitly check for 'true' swap entries, that is swap entries which are not non-swap swap entries. This is a confusing state of affairs, and we're duplicating checks as well as using is_swap_pte() which is applied inconsistently throughout the code base. Avoid all this by introducing a new function, get_pte_swap_entry() that explicitly checks for a true swap entry and returns it if the PTE contains one. We then update the code base to use this function. Signed-off-by: Lorenzo Stoakes --- include/linux/swapops.h | 29 +++++++++++++++++++++++++++++ mm/internal.h | 6 +++--- mm/madvise.c | 5 +---- mm/swap_state.c | 5 +---- mm/swapfile.c | 3 +-- 5 files changed, 35 insertions(+), 13 deletions(-) diff --git a/include/linux/swapops.h b/include/linux/swapops.h index 24eaf8825c6b..a557b0e7f05c 100644 --- a/include/linux/swapops.h +++ b/include/linux/swapops.h @@ -649,5 +649,34 @@ static inline int is_pmd_non_present_folio_entry(pmd_t= pmd) return is_pmd_migration_entry(pmd) || is_pmd_device_private_entry(pmd); } =20 +/** + * get_pte_swap_entry() - Gets PTE swap entry if one is present. + * @pte: The PTE we are checking. + * @entryp: Output pointer to a swap entry that will be populated upon + * success. + * + * Determines if the PTE describes an entry in swap or swap cache (i.e. is= a + * swap entry and not a non-swap entry), if so it sets @entryp to the swap + * entry. + * + * This should only be used if we do not have any prior knowledge of this + * PTE's state. + * + * Return: true if swappable, false otherwise. + */ +static inline bool get_pte_swap_entry(pte_t pte, swp_entry_t *entryp) +{ + if (pte_present(pte)) + return false; + if (pte_none(pte)) + return false; + + *entryp =3D pte_to_swp_entry(pte); + if (non_swap_entry(*entryp)) + return false; + + return true; +} + #endif /* CONFIG_MMU */ #endif /* _LINUX_SWAPOPS_H */ diff --git a/mm/internal.h b/mm/internal.h index b855a4412878..78dcf6048672 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -378,15 +378,15 @@ static inline pte_t pte_next_swp_offset(pte_t pte) */ static inline int swap_pte_batch(pte_t *start_ptep, int max_nr, pte_t pte) { + swp_entry_t entry; + const bool __maybe_unused is_swap =3D get_pte_swap_entry(pte, &entry); pte_t expected_pte =3D pte_next_swp_offset(pte); const pte_t *end_ptep =3D start_ptep + max_nr; - swp_entry_t entry =3D pte_to_swp_entry(pte); pte_t *ptep =3D start_ptep + 1; unsigned short cgroup_id; =20 VM_WARN_ON(max_nr < 1); - VM_WARN_ON(!is_swap_pte(pte)); - VM_WARN_ON(non_swap_entry(entry)); + VM_WARN_ON(!is_swap); =20 cgroup_id =3D lookup_swap_cgroup_id(entry); while (ptep < end_ptep) { diff --git a/mm/madvise.c b/mm/madvise.c index f9f80b2e9d43..578036ef6675 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -205,10 +205,7 @@ static int swapin_walk_pmd_entry(pmd_t *pmd, unsigned = long start, } =20 pte =3D ptep_get(ptep); - if (!is_swap_pte(pte)) - continue; - entry =3D pte_to_swp_entry(pte); - if (unlikely(non_swap_entry(entry))) + if (!get_pte_swap_entry(pte, &entry)) continue; =20 pte_unmap_unlock(ptep, ptl); diff --git a/mm/swap_state.c b/mm/swap_state.c index b13e9c4baa90..9199b64206ff 100644 --- a/mm/swap_state.c +++ b/mm/swap_state.c @@ -754,10 +754,7 @@ static struct folio *swap_vma_readahead(swp_entry_t ta= rg_entry, gfp_t gfp_mask, break; } pentry =3D ptep_get_lockless(pte); - if (!is_swap_pte(pentry)) - continue; - entry =3D pte_to_swp_entry(pentry); - if (unlikely(non_swap_entry(entry))) + if (!get_pte_swap_entry(pentry, &entry)) continue; pte_unmap(pte); pte =3D NULL; diff --git a/mm/swapfile.c b/mm/swapfile.c index cb2392ed8e0e..74eb9221a220 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -2253,10 +2253,9 @@ static int unuse_pte_range(struct vm_area_struct *vm= a, pmd_t *pmd, =20 ptent =3D ptep_get_lockless(pte); =20 - if (!is_swap_pte(ptent)) + if (!get_pte_swap_entry(ptent, &entry)) continue; =20 - entry =3D pte_to_swp_entry(ptent); if (swp_type(entry) !=3D type) continue; =20 --=20 2.51.0 From nobody Sat Feb 7 15:21:41 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (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 0B6CD2EC08E; Fri, 24 Oct 2025 07:43:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291840; cv=fail; b=XPahSl/t2Mqn42UmixiQYoktQuPegi0/FsdUkdK2l4ck/vd6xIg0r6vwYtxpYRvJ49MIQ4cRCYdmDiqzb+c8pWJSOVQwY5azuYCWBUIBKfeAl8M1i+h5wpw9BS4k3LMKa7gITdPhUtUnql6MmSyFt/PXE9VaFOcxIgwkx7FPSRA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291840; c=relaxed/simple; bh=+oWAHpiUVXOfy4HgRSlmVIa4luxFDq4bRLzsKmLrJiY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=qilD/Hat342Rrt+IIf/FCjnffGg0fIJDgiseyzS4igBpzb8cgfdvPqLWejIfDtsZlp0I5FVqI8YBeG9kaz+DP6dcvgu/15rV0kJCWlll6Xn9ahPWZR9MqoE01pymZagbmcT0YHaCsfy60kRKN45sKVpWrhqzewc6z+UJCNZGcRY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=BI1e621t; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=aKfaQaN8; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="BI1e621t"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="aKfaQaN8" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59O3NXd1021319; Fri, 24 Oct 2025 07:42:00 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=6PSEhOi7eZLDMasl8HHg9o2bFL3lohwaoNuT0NlQYTQ=; b= BI1e621tctte6/mFTH2e0Z7XDAV9576uGmu/UaMnNERzSsYyLkDK/Hbwdg+T5JTy P2NZzedhKwE4QGE76/rtU5qmSMJfm2Uw+5tJCa56aQiJDxpblRlRmO5MvfUphir9 ZTIh3LncoWdbrUz6Lr4vxafTIZ/Z+qZ9K8DMKXG76CGykfqsPcRLPeKIULZrevyz pqENS4esm+lUMtiYQB7++Oq/tGfiVpoHhZwN8hd5/8cA7o8mDwhiLW6LrR0Q6KTp 6IdnCRXUniOsRCULN11r7DCs+RXBdErVzwHlHWVNUMwU8Dz7FcHhOBV1FT8Qoinv UICwm7z91oNRmARIBr6WkQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49xvcyc5jq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:00 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59O7WQQr035638; Fri, 24 Oct 2025 07:41:58 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010032.outbound.protection.outlook.com [52.101.56.32]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 49v1bgm4xq-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:41:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Aoq26NHqCDFWaNWYM/PLsye4YghU+9oeWLRqXk7ErSDg2uFc8pgFb2vax7LEn3KtzbU+QgOkDhN7xolhHWCWSUVAUAXpHcdUx302VkO+1s0APwXwW4k8VI4SXbIbChzj/5P6ZnC8NdRzL8XT6oY1TJsKK8OXPDBTDcaavss0AfAn+NDzQl4WSs5G3+2PdQY/ehP9HtqB6R71j3O0alOnqADt5pAxYsVQjscdN5GpP9evXyTVkeFLxTX/7q0XPaXmIBgzpkybj7VSjD7V6+XXIMVBnYX02E1qP5d9YBf2IZcVKs2m/ZqHDC1/QuONfUJ8Nr+AKiLMGaH3kGOfszr/HQ== 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=6PSEhOi7eZLDMasl8HHg9o2bFL3lohwaoNuT0NlQYTQ=; b=Q8UIeD8mNjTJMPungWl2qTlATJsDKpvU4sx8EAvOZiU6vbdGqOf2/6X8RS4elTb3/JljjqO7OZENjYRYIycx3kUdInS6Ylmfv4zyHZrq78t2Et6jBUKXyDYjJBhskAGvt5Z4nAFW4mInT+v2A/qWpsqypiQe3sTnJrDeURphDzymZ4Yix+C9d0TBNIf/cDPRt8LD1rzvwGVrN8XBzdqCHOsY3jGj9FJx8Ydkzxk3WdYcG5d61QNhFx0nYGLcDme0mCa+kARgL3Lq5OO8cK4S5v4bkssirpv9jY/hVqkzkDEfo7vpOF8XcWtRDnrZZ2vVJSPB+BtBkfppHPQHPsT2+Q== 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=6PSEhOi7eZLDMasl8HHg9o2bFL3lohwaoNuT0NlQYTQ=; b=aKfaQaN8AOKj5Cg2YbFKyY0g4DTSUgWGTzDcshsjFtG398GaM+BIdif6BO9bfcMptRFXHvY7LpmF86VWUiEcI+b6EJkSOiOQpoP6tK5LUJeRWPHzy1Iq/dbbe1O3+i7F1iqsJmEgQTA5xkd4Pa1a2nDiMN+m/SJK6h0VSZsps2E= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CH3PR10MB6716.namprd10.prod.outlook.com (2603:10b6:610:146::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Fri, 24 Oct 2025 07:41:52 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%2]) with mapi id 15.20.9253.011; Fri, 24 Oct 2025 07:41:52 +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 , Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Kemeng Shi , Kairui Song , Nhat Pham , Baoquan He , Chris Li , Peter Xu , Matthew Wilcox , Jason Gunthorpe , Leon Romanovsky , Muchun Song , Oscar Salvador , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Pedro Falcato , Pasha Tatashin , Rik van Riel , Harry Yoo , kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 04/12] mm: use get_pte_swap_entry() in debug pgtable + remove is_swap_pte() Date: Fri, 24 Oct 2025 08:41:20 +0100 Message-ID: <835fb97062ff69fa5092933549c10cc4c7d539ff.1761288179.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM0PR02CA0177.eurprd02.prod.outlook.com (2603:10a6:20b:28e::14) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|CH3PR10MB6716:EE_ X-MS-Office365-Filtering-Correlation-Id: c2f4c208-0d42-4238-24c3-08de12d0cc39 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?3Bazu3trIPinYVDmPRe5LTQzFmD5PxuXYoUjSjMZa3MtXO+FTE+16eDKlKZD?= =?us-ascii?Q?vg4FOFkq2RBlwIA/gK4+8kz6Uf0E206LeqMMclqCNfY1EQLGwY4aOdUUfoFQ?= =?us-ascii?Q?6336DbbTw+jNpaqbv3W2LRvapF0m6cJtX8JWUSC4/ach534JW8aNBCKOzPAy?= =?us-ascii?Q?orln0rRVrci2718cbBSVr3OoiAVmfoRuYlY7IcBef81wLE96Vt3o7iesZSNy?= =?us-ascii?Q?yajLNZeR/R3UZ6cPYIyeU6hAhlgo7PkTNUpd7HthEa5hg9/2BurN63/cPbWD?= =?us-ascii?Q?Dg4bZqN2MsqhiYwXI+abb3zWisVSjQ0rdGKrQ4EeF6f/ztPwnXqPNC4IL8N/?= =?us-ascii?Q?e8WSwN4da9t3zzpLQa9WcJKvJDht4u09kkHu5aZf1x5D+q/HWyd5L1dROvLh?= =?us-ascii?Q?ZdUtYFBlYELbS0fFW9NZazeaSYbQLdYVDDEKkYfKTh+1WRAZUs8kBcWWHhq7?= =?us-ascii?Q?NzrQr6V5qOR+2ooC9mu03LuJNXP+127KlyCQkmEojKYExjkvvdidHhDCtuSy?= =?us-ascii?Q?yft0bhoShdmFLqxVkTz69DlaMeWixBa8Mw/MFgrE1aUj3ii4qQmShw9hkRid?= =?us-ascii?Q?feggz1c5N1T2OQVhY6a8a0Z7uslldAWm+oEMlNQKyWNgvpXCsDyYD1r2YQVq?= =?us-ascii?Q?Ych58rTLlOfAY6LdsBR9U6PumNbC42uEwRkE3AypbUZswbLRVa8Veof71Av8?= =?us-ascii?Q?LPUhKRJYBSYiQb1QIFgvzpd4vSddiakCE0XJAPou6etPtC5LAqwyCwYn8k4B?= =?us-ascii?Q?VBkE/JVQvod4PIG/2Kzlg6H/N3s+QNthz6nNFwW9vi8hJIdWrxndLlsOY3gJ?= =?us-ascii?Q?uNwsgJUn+RrbrCSOhJHXY4RvYxYfnTcXHrDcwB/qhBdNpMMGPdBkhdvs8LC1?= =?us-ascii?Q?+Lh/uXkxCHyGoXyJi8EcL/U4zIbXSaPNG8177h/SXs7lHXjk9itAjpO04D45?= =?us-ascii?Q?sBrix6V7nhfuMUOb0Q0GvJkMfkP1eltwjWs1vLwqGPOyq2zvNqMDnzxRbVye?= =?us-ascii?Q?x9K/SPVLtL90ACtcJ4tssPkacz6ID8EswzPRW4ilHdCgWlc5xb9jZIeOZAIy?= =?us-ascii?Q?tKoWQ5xqtmIG8SzEVviYvwtM/5+QizoA7EyAKGTyWb19OTmuAeeViQ5tWVJr?= =?us-ascii?Q?U0vVbooVdsGGrHgkrSMMsV+Yqf0+dxCEDNoC42lYgRpIFwxnv+I40tltiU0R?= =?us-ascii?Q?MJJDoyjKbx1Q0JrPzkEHXpJgnSrEn1crbBGLUanF1ywCIXvkULDP9WEF6iXD?= =?us-ascii?Q?FlhNy3zoGONioXAM975D2H9NLlHzNke0B34FQPHoxTTG9eTnlXorw79ngNcr?= =?us-ascii?Q?7DsxI4u5Y9Hyym9Znut28ASydL+cOX8eMD9ZF2UxibwIpeVvEy1TgFJlIZiU?= =?us-ascii?Q?TpzKffM9acy5yxBEup8ZojdAGQa5b392F/axjp6BnL427+4j6dePLHM8167A?= =?us-ascii?Q?Zm076n47f1cEF1G3FRbCp0M5JtTYFq3y?= 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)(7416014)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?EIDDyHyIIl7mKOL+U/Bkb3Q6Q2zxemmlyjb7e1WjWPQtAZR4RQiIa++HzuUs?= =?us-ascii?Q?v3fGCoynsgzi9MrF04bpQ6znMHJVj0+8fHfT3Ztrp3grwwLxWQ1JzC1ozP1U?= =?us-ascii?Q?VCYDW2euHJUFkt3s+rhuZEbwDcqlXW4nG8WdCoR64bq62G4Ujlc/VFShwJdH?= =?us-ascii?Q?4w4CasL9GghzN11LlPI0fyWY79uHLgpGlh6hwGg956vGstz7Awz9ArEMSXgX?= =?us-ascii?Q?Bktz8FlkQj8OM6nMxxrr9aiHbySAZrZMtTa2oKPLjP1bPsXUhDGoyM9+yv8M?= =?us-ascii?Q?stbXGxLyHes5kKY2D/Ikc0Mk7a1Mfesq8CpYtpeePo69S1FCAJdSMcSiDmJD?= =?us-ascii?Q?CStctiFCiQ83qImeMLHdblS6u9/3Feg8a5LMEliIN0dASzGHIXYegYTVvxMV?= =?us-ascii?Q?Sr8WYibSviVdL0ak82GhLBOxjYM5pkMkOPrQkks41k4QCDjvGvvlI9AvZJlb?= =?us-ascii?Q?mUQwZGwKePCohhYY6FMSKqgvB01/bvZtYhvPcpTbq0cOTqQIsRTRKeqarNkV?= =?us-ascii?Q?6efwwl1EsRhS2v3olO+sQIwEwvEHXA0oxB0aMlR1Y8IOaSsZWcDMKtUrnD/V?= =?us-ascii?Q?1dJ25zsFGTPXxV5C0c3gBTurT4FvLnPmYDPdCEYY4usnpWhrWIQ2Mt3GQvYh?= =?us-ascii?Q?sa5MhXgNGtkULY9AAdxAZQ88dD5vWnk46/IOf/FMPXzplbXvFetC6+EEe6SK?= =?us-ascii?Q?1FXVBKSBTpfoMfY8tR2ldlEVIVFYPI+NFRjGrr/02+A0eabMaHbo6R9A8/wu?= =?us-ascii?Q?NIkiUh4nNhl9ec3LdlV7ksN2F0QeuhtEBxv5vg11Ev7d+RNJp9pGpyuIvqwc?= =?us-ascii?Q?CoCwyD9pSCYQXviYufjD1guMa/mDmPYz8mqRLzBXMLQmLCR6f+1dZkBlYqUy?= =?us-ascii?Q?0l/Dh5LnFN94ZqB7LwkgyLTNv2MnsUNiznbTdX9wcLvDGOUJzLJL2BUZpLfg?= =?us-ascii?Q?pm+Dzvhfe1dUo9fjnBNNESubRFE+lkygJ7DXQnkSvcaUZV0wDk4fO1wF7AmQ?= =?us-ascii?Q?vim9XVMz4YHZe7GYCbfusyDHmTIiLxokYmAsuT4utXBjnXL6S5hkGkuWtDcB?= =?us-ascii?Q?vMRsT/afE6c3PVrnG5Mw9gzHgngBIdN3lhuk1h57tP1UMpBWPFQLNHqxVpCj?= =?us-ascii?Q?+FR+G7iWgyQ6bTnVgX2zB4ZGqq4B5pN4QE+czQrZCPGVmuvhuSQmMs6A7duK?= =?us-ascii?Q?cfI+Ao6LGe9AKBgDLAo3n4TqHt2hjCGeZ08QZDyclNY+OVFmwCooMkrPnkjt?= =?us-ascii?Q?26RiE/t4poszJwSMD/wRKoLOgkQiPZqoaIOwQ3Chn/UOQAg/i2mjzGVFSEy1?= =?us-ascii?Q?mG8KdlopakIVrBAOhkbjzn2MmP1l0XfYsLW+FQG3CKliZ97DXtCAirRm/wxk?= =?us-ascii?Q?ir2BLi/gfzCBde+/qZwg9sir5eKnsyPOrFPovh5c6WX58C66nKiJXJpLbtW/?= =?us-ascii?Q?N8IBUortQwU37n08KexMXSYnAPGFjM24ky8c8xPDCkayxB2iL76YwV0G7BEN?= =?us-ascii?Q?2ijATbAwsr7p+K83zI+PwYU8kLFK/9lifw2I5r7LPlkfKX/iFREebqg0Yek1?= =?us-ascii?Q?p8oQNHzStdC61F1785g1zj8hPW/m8/aOYAUDXS6WqtjemSuB3zHmoVz/zBs3?= =?us-ascii?Q?zA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: fWnBTL2bP5M31Kkq81q607Ertf8xR3Ba4ByS3bsPbtysn+YA6Qmd3Q//E3+ZMr9fpKTcUQEjLEMUXn2ABUFu7LW07cpSHQeXJKTawcQdyk7S4hig8m4f2MIqw7D7hDomq1rPE7YRG2+aSH6CvN53pORNS++yJuf2AL1JohDHPAgIFCVLMWc5lcNF23bmgBBXDlelSK9jvCzD6of4T3kzDmJptxvcVWLypV4n8QSBsVVXCpCIfitYtw9NqfFvl29FW6zqNGoqAxNcoy6GHSq5LAAjiefgKE2+OMWUa3OLE8iNIr/NEDi6EHxr40l38LyBu8IwPBG+6s41ihx1W5y0YrQet5c9LPfTU/5Ispl3tGHXsViXo5yn0gIWpgNg9FtiC6ZasdJ2mc6QHENiqzDRNTbFH5VCDNJFsvSIPk71rcPtHFXo7xug3kQsPYkGByalv/CBSkUNVz98N7kshMNaeX2lpp3dRwhvPj3QPKvU5myKID9/Q7sAgHlicTamgfOJDIkCpHV/nElvTi49L9muQiAA479T/mzH7AhUu3ytNwGle5qp4wEdjiPxS5hv8VUzbVi7i9Qeu6ZQWq1VClv0C6ZTxguNNLjlO8V62LJwpSA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: c2f4c208-0d42-4238-24c3-08de12d0cc39 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2025 07:41:52.3718 (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: NiCll/lzdx+aMgvWEsDn0UXg6WabXW8I9xhYcg5GICfFKzAzbyIqvqCtUvU+CDoy5wy4WxFZj0Gk40N1+wjt3Hk7LiMlGAUmNCRUQ2hYDhg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB6716 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-23_03,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 malwarescore=0 adultscore=0 bulkscore=0 spamscore=0 suspectscore=0 mlxscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510240066 X-Authority-Analysis: v=2.4 cv=GqlPO01C c=1 sm=1 tr=0 ts=68fb2dc8 b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=6AwdJQH9h9PE9E3eZvYA:9 cc=ntf awl=host:12091 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIyMDA3MyBTYWx0ZWRfX7oy9gVABop61 9LFeymCnm1cHl86rPRfRxjdQH3nsxTSFeHGFLzG0wDC5lsOl6uTpgsjxq/l0zMfD1uhSufyAya+ 6uD+TdKuk0jIxNo5gzKxtI8SY/lIbw9HnvW1txOWIkeMBDkA66DIumcQscXqsLhLZG+i9lpx1ux 3cG6Fb9pqUw7UNQApXT+rCsV9186qZtBbdpgys6tHRGyo2z2ufSH0vcdlM7nqhto9MqQ+fHeZei c73su37WanuGyaSY5KAPwr50RsP4tZ+hZI06XrQDBPZ7sLSkW6PrRwvdbn16Lh3ssfKR96iah7P ALyBKpffTBpSX8MJF1RRSQdX9s0r7DkdU84kZWOG6rM4jQl1xr6CQG9XBQZABYUg2kpFHr4PAH9 bwPxuqX4XpgJEazS5PA1peGCgxavGrsRik5B1oHAWQR9w0jDjZw= X-Proofpoint-GUID: zREnyNvqJlg_GkEM-LzfX0gUS4zhZJCZ X-Proofpoint-ORIG-GUID: zREnyNvqJlg_GkEM-LzfX0gUS4zhZJCZ Content-Type: text/plain; charset="utf-8" Replace invocations of is_swap_pte() with get_pte_swap_entry() in mm/debug_vm_pgtable.c. We update the test code to use a 'true' swap entry throughout so we are guaranteed this is not a non-swap entry, so all asserts continue to operate correctly. With this change in place, we no longer use is_swap_pte() anywhere, so remove it. Signed-off-by: Lorenzo Stoakes --- include/linux/swapops.h | 6 ------ mm/debug_vm_pgtable.c | 18 +++++++++--------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/include/linux/swapops.h b/include/linux/swapops.h index a557b0e7f05c..728e27e834be 100644 --- a/include/linux/swapops.h +++ b/include/linux/swapops.h @@ -120,12 +120,6 @@ static inline unsigned long swp_offset_pfn(swp_entry_t= entry) return swp_offset(entry) & SWP_PFN_MASK; } =20 -/* check whether a pte points to a swap entry */ -static inline int is_swap_pte(pte_t pte) -{ - return !pte_none(pte) && !pte_present(pte); -} - /* * Convert the arch-dependent pte representation of a swp_entry_t into an * arch-independent swp_entry_t. diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c index 830107b6dd08..d4b2835569ce 100644 --- a/mm/debug_vm_pgtable.c +++ b/mm/debug_vm_pgtable.c @@ -701,13 +701,14 @@ static void __init pte_soft_dirty_tests(struct pgtabl= e_debug_args *args) static void __init pte_swap_soft_dirty_tests(struct pgtable_debug_args *ar= gs) { pte_t pte; + swp_entry_t entry; =20 if (!IS_ENABLED(CONFIG_MEM_SOFT_DIRTY)) return; =20 pr_debug("Validating PTE swap soft dirty\n"); pte =3D swp_entry_to_pte(args->swp_entry); - WARN_ON(!is_swap_pte(pte)); + WARN_ON(!get_pte_swap_entry(pte, &entry)); =20 WARN_ON(!pte_swp_soft_dirty(pte_swp_mksoft_dirty(pte))); WARN_ON(pte_swp_soft_dirty(pte_swp_clear_soft_dirty(pte))); @@ -763,20 +764,18 @@ static void __init pte_swap_exclusive_tests(struct pg= table_debug_args *args) =20 pte =3D swp_entry_to_pte(entry); WARN_ON(pte_swp_exclusive(pte)); - WARN_ON(!is_swap_pte(pte)); - entry2 =3D pte_to_swp_entry(pte); + WARN_ON(!get_pte_swap_entry(pte, &entry2)); WARN_ON(memcmp(&entry, &entry2, sizeof(entry))); =20 pte =3D pte_swp_mkexclusive(pte); WARN_ON(!pte_swp_exclusive(pte)); - WARN_ON(!is_swap_pte(pte)); + WARN_ON(!get_pte_swap_entry(pte, &entry2)); WARN_ON(pte_swp_soft_dirty(pte)); - entry2 =3D pte_to_swp_entry(pte); WARN_ON(memcmp(&entry, &entry2, sizeof(entry))); =20 pte =3D pte_swp_clear_exclusive(pte); WARN_ON(pte_swp_exclusive(pte)); - WARN_ON(!is_swap_pte(pte)); + WARN_ON(!get_pte_swap_entry(pte, &entry2)); entry2 =3D pte_to_swp_entry(pte); WARN_ON(memcmp(&entry, &entry2, sizeof(entry))); } @@ -784,11 +783,12 @@ static void __init pte_swap_exclusive_tests(struct pg= table_debug_args *args) static void __init pte_swap_tests(struct pgtable_debug_args *args) { swp_entry_t arch_entry; + swp_entry_t entry; pte_t pte1, pte2; =20 pr_debug("Validating PTE swap\n"); pte1 =3D swp_entry_to_pte(args->swp_entry); - WARN_ON(!is_swap_pte(pte1)); + WARN_ON(!get_pte_swap_entry(pte1, &entry)); =20 arch_entry =3D __pte_to_swp_entry(pte1); pte2 =3D __swp_entry_to_pte(arch_entry); @@ -1205,8 +1205,8 @@ static int __init init_args(struct pgtable_debug_args= *args) =20 /* See generic_max_swapfile_size(): probe the maximum offset */ max_swap_offset =3D swp_offset(pte_to_swp_entry(swp_entry_to_pte(swp_entr= y(0, ~0UL)))); - /* Create a swp entry with all possible bits set */ - args->swp_entry =3D swp_entry((1 << MAX_SWAPFILES_SHIFT) - 1, max_swap_of= fset); + /* Create a swp entry with all possible bits set while still being swap. = */ + args->swp_entry =3D swp_entry(MAX_SWAPFILES - 1, max_swap_offset); =20 /* * Allocate (huge) pages because some of the tests need to access --=20 2.51.0 From nobody Sat Feb 7 15:21:41 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (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 A28E82F6194; Fri, 24 Oct 2025 07:44:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291843; cv=fail; b=mNx3vEHdSLkjqVHAbdRZPEhPDpZzJkrTvVDB5V+1isE1eTH1doCeXjbi3P6hhQEIsjCHEIB8zCJpZ2Pm17i+mas9NYGFR6iDnEuy06wU98qHBUEZ3Ks6CWpR/beumMSkuzJLRDrDCbdSrPGcLhU/eIEZ790non7WbycPmNxEMuI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291843; c=relaxed/simple; bh=bLO4IKhXyVPGPkegeYQogRsLfQin+bI/0V+1Cuyb5kw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=KsyrjjJFkfedz4/pe6a270iAHGYcxksXzLHDggRnfgn/m3ph0iB+FhzXD2NAwgkbWCf05K4/w9oZdOzoytlC18FGJTrXSLc6alJTDomtF2a19onJHFPYAM+yNbJ08/oD1H6jlhSQQ41VocYAyTFw5FVvj/HkTvhZoHyKPOe0inc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=r0saK8PB; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=FfWdzUg+; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="r0saK8PB"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="FfWdzUg+" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59O3NUkZ000813; Fri, 24 Oct 2025 07:42:00 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=PRg+V2/QNJuIOvfqJXKh8YDnb0Pk7yEMV7TG8ey5pS0=; b= r0saK8PBPT5XcI8AdM6t25Fv0Jk1kaMD//ppw49vcPtmD7G00HXM2jAjZ+HJrz3V BWVk6D2Ay7TgPIVj8tw3pGNVXSjFYTDH0BXAupvS4EQYPlKlCQN9DzG617QWWU5o 4TUsmmkaPiIFnTyfJc1UMOIf4H/NH+2VfMcPOwHp9d9xbnSbo+y6LuShGpWizIZm B8U8kpx9XKcE8l3TBwHsTZFcV5aqMz6mM8cmgm/Z48G0tBLvqrqIcp6yb0WET8Ui j3p4xs0RB9CfryWKQNQPCHE/kG+gk0PmgcMaNy93fyW5wXSKG/UcCkeOjIdsbysD 75hMMvdkz6MRw5XoXFgNQQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49xv3kv386-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:00 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59O7WQQs035638; Fri, 24 Oct 2025 07:41:59 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010032.outbound.protection.outlook.com [52.101.56.32]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 49v1bgm4xq-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:41:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=u4DxmMGjURs0N+YX73W0PEqOcONdk/zT2SSLfbn1Ev1u+vfScAqtfY8c0mfJTAK8u4m8/dY4jsanHy81oGziF3rgVKF63j8vrfKzoPxNeNHQmJH1Rr5kGNRESoBqvO2mScqrsXcvMfTpRmqj4FrsDhbA3Arq34ZehqswWeOyua8HT8wyPARuPS0GLDnqvBEAxh+jNxAggdjxboKD6fapqdktI/QgzML/aAJ1ka3ciUujv2cYfzAWuWHVFUbuHqQHx5+oRhBrsTYrqtReCHYFcLYuueApRhzdLqGg0dKyvO1CtnP2s5JEDUDrBrLu+vyDwMVTp943APh9gOrf3rGANg== 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=PRg+V2/QNJuIOvfqJXKh8YDnb0Pk7yEMV7TG8ey5pS0=; b=Cvv67iZ+kgooh8WeoFG/qvfJinEB7tfVySXeJIuJEwjLcBMUkHRkemFCNks5C7vwd7VQ0Eg1k2DNHF670fhYU9SlGS7Q1pvAX7sS8k8wz+xCk0+lsOZ0B3dFnI1qvMftDnQJpanSnWa0OkkGztRfAPaM5w5T1rBMA/PGRXtW9TwhvDBcdZunVqetO+WouWvn7JbcCLvnfr7AWeKkeqxeZlgf9L/ActPtPSoBGSnfrkGHCJgYTBeFb1+gnTP1u7d6s4LPzJ3U6Vzwrsl2IHkftJcEbaJasj4kQ0lSx9mcDYKyb97O4rC9pggrcbdKnpSZZI1gofrZUtdQYQzoZq7Iag== 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=PRg+V2/QNJuIOvfqJXKh8YDnb0Pk7yEMV7TG8ey5pS0=; b=FfWdzUg+n4VM9/P3BVvsKMMJOZCtNh5dosFZub6QNvv2uoVdMwa9Jps5O0wTA1Q3RWcu6iQnJvwVoZmUUMXmUaDzJpRJlrRYWVaDqxvxE4yFAqt+dbnG1NUYoqUoFR/O3QxbAsYlPeaNQXOZtlcUaL1c/4Jtd20rgmfl4FE7Ebk= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CH3PR10MB6716.namprd10.prod.outlook.com (2603:10b6:610:146::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Fri, 24 Oct 2025 07:41:55 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%2]) with mapi id 15.20.9253.011; Fri, 24 Oct 2025 07:41:55 +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 , Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Kemeng Shi , Kairui Song , Nhat Pham , Baoquan He , Chris Li , Peter Xu , Matthew Wilcox , Jason Gunthorpe , Leon Romanovsky , Muchun Song , Oscar Salvador , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Pedro Falcato , Pasha Tatashin , Rik van Riel , Harry Yoo , kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 05/12] fs/proc/task_mmu: refactor pagemap_pmd_range() Date: Fri, 24 Oct 2025 08:41:21 +0100 Message-ID: <2ce1da8c64bf2f831938d711b047b2eba0fa9f32.1761288179.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM4PR0302CA0035.eurprd03.prod.outlook.com (2603:10a6:205:2::48) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|CH3PR10MB6716:EE_ X-MS-Office365-Filtering-Correlation-Id: d33e9159-8ca4-4a21-a27c-08de12d0ce14 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?pII3tf4U5ae4JYwbVBhutZhfOF7pvTDgP8D7eBdBOPdcHl7q+Yf6UZ5A9RO2?= =?us-ascii?Q?0Q9i/BOA/7sRW+JItMWmKBsmjX0y6Uw/sDp5QnUpsICG+z92JLPz9Rhkb0o0?= =?us-ascii?Q?WePfKG5ZBQeBsAZb7//+IvVdE/vzNYv1Y0HQTcnhezYuvrYMPXh4Oszg6lOn?= =?us-ascii?Q?vdsmlLPgEFdaHrrayRajNZZMLRJ64T8sTPX2O/JxSKqWJfVvgBbPo+mpMjGG?= =?us-ascii?Q?kKuB5VALTmvCrkiulu0ngHsz3XtOPetGAr9GBvYkKbSWCr7bVCaWoWYnnSO5?= =?us-ascii?Q?YirfSHKXWMpko6RjCGe86gZ2cXzuItKqe15rqeaIAt31MfzCPhN8dtLpAWJN?= =?us-ascii?Q?/KqZlN+n3auJsq+pyvpoHV0YpFdKdSqy+on/mGnAot4osS5q0Ux7cSBs0tI3?= =?us-ascii?Q?k8kTmuATVPlysUNw3/ZHUqW2Nwxwku0y0p898IxY+37mn24K6sIMA7XAACb7?= =?us-ascii?Q?yGFARxKYK2ZIRxSGRL+pelXyZ4N/P3QkbQJY5eKQrpVpX+4Xul+ZiT/uRBsv?= =?us-ascii?Q?MplSNUxy5enRovl+wjdWjyozZKuDr3ZSiAE859o0hUAuzYM7mzP70jvSfMfV?= =?us-ascii?Q?my6DS5542rt2OawbEVB0u65U906GR8w9gHAajT9/mpcZCGcGfzOs89gr+QUE?= =?us-ascii?Q?TKq1tTGEKkbdF1gBKW0R1/jABmBCPa+9T2tHaMITH13MNjeFy2EXJjMLJwKG?= =?us-ascii?Q?J7c6lss/xbiTkW+mMwnEndOpPHGYDZV9PRlfIW1mJhfebzt3UrpN0vSI/FUH?= =?us-ascii?Q?lGhPU+A6Co7R6i1MefRIDX1iyBLzuIwxziA1ojSkWXKYwwvO52U2upvJ792u?= =?us-ascii?Q?uabo8VGmIpxpGckZ+9R1HSOw5CYE7XNgwye7BHjAw5QILAOcr8SHDKETfN1c?= =?us-ascii?Q?00l8NdLgwhTSgtfzyMdCuFWRcDMUANXbdFWSTNg8rpCID10kK8a9LLJ8LSPD?= =?us-ascii?Q?SHUpFShuD++vUrGXT7Rqgx4i2HS/kL/boF1oNTCYKQ+cgFebe3dDYIHIhPKA?= =?us-ascii?Q?wct9O/fkcnO4fyHlSMsmpEwalihToF7AqLkpoROxqCoUL74XS8rdxpcUYHHL?= =?us-ascii?Q?oEH1mFpxnwn8br0HGRz9p2rdQQr5JzGC95b0i+QNvF9ZR6YHkNgJMKgmIb5y?= =?us-ascii?Q?2b+1Zeh+B5yYtltWQQcHBeDN65idfSFuQrMISy29JlPRmTVWw95jB2he9B1w?= =?us-ascii?Q?2TFLmZBJ9Hwtl0dD36B9SU+0sXXXTNGilJRXECQT+4EL33ldnZEUFEjbtRT9?= =?us-ascii?Q?2ec00UHJ37ywmYwpqXbbzbS4APT/fmqoTk69VnTvLGuSSmhWXnXhy0+HrBjY?= =?us-ascii?Q?D7n9cPdwR3CWLwGLh/Y12f2y/soPr+FT3CesaptRt0tMYsAJ9Ozc3KcBIzLq?= =?us-ascii?Q?GVPafKhH7QPB1OkIG2MQ+dQ5mDRrgLNMpj4CHggQZFWR6aEvfTiXs88wHZ1q?= =?us-ascii?Q?Est2V4KHBrPea8UrtVvuU+jTbJk7fU2n?= 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)(7416014)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vuFR25BIJHtqYO/P0PhJQwRf8haIlNrQCFo0CBNjbqlCBv+QrGapkaNV9owZ?= =?us-ascii?Q?7ZEBLkgsN+97loNuOCe9FGGlXwMU0FcLxMESuGrUYsw9jRwksO8vfzD8dnw0?= =?us-ascii?Q?IHAa2w/GUZcIugbzmlz23wIsS55ivGjUybUbqac96LTJOVLul8j6a/lE0/i/?= =?us-ascii?Q?ajqJ2XS0+uRN2wSQwZdJdeixy9DqsFT4TNiXvnuW+5jfsaPA+Nb2GfmnacoF?= =?us-ascii?Q?WnhjpktUsykCoCrdsqTNDYaxUjwtRqd7SDfWsocMK4ENxs5DYZ3eg03IEWco?= =?us-ascii?Q?YPnRgs4XP5m7+WScmcFGJEzI2AtLWDL8Dts7ruxR4K/KshcLDPs9V/JNUm56?= =?us-ascii?Q?LjqwSFg0JdQrjjN2qxTQXZkQy3ftNvIBdjV+BiQsuvh868LTPGCJ2UzMQkW6?= =?us-ascii?Q?BCgu1gzLARQ1wPh0aAgbgBH92XWWXkSqeEXWcRLWJEYpsj/MhCTEVztECBSQ?= =?us-ascii?Q?KQntwb4iF6hzR1PHHDnimQupuwXXVf2HAscIOkFh1+5jzdLFLVaZ/4JrGImn?= =?us-ascii?Q?svoOxK0PaPLTL0BOftSsOTpj66+5wp4uIU4Xqj6gWL2ZNT6YCBD4XInarJXW?= =?us-ascii?Q?lg+xrMLVveOyE8fBbmOWQ7QT732yUM3FLbe/tW1QtodbHGlzP1TOKtCIUcBq?= =?us-ascii?Q?LP6bWRw0VXJAAqrWZFYDs10en1865VjX/wK6U7z++qV9PfCoC1E9OSzt4ep5?= =?us-ascii?Q?ULJB+zYrFMo7S2aSkQMhgW0mydBaSW5JtyBHG9Z19ePoi/ic5rlB4iMjQorU?= =?us-ascii?Q?gNINP83/aK0N7KX7WFQmqtEQDF7IfDd6yyVgd/WWv8/Vom5RE47LQomLn02H?= =?us-ascii?Q?sZf+5gE1FxJ1TTevblPkXCEDAkDcAxSv39EGoaVfgVykILuoLLVS11knhcci?= =?us-ascii?Q?KZEG9Cnge8vRqz2shr4Hz/z1tPt3RA79Rwb/XGakkKOREER+Xu3Pp24SMuKy?= =?us-ascii?Q?sdIUqAECFPlvDpej5t6MbYg4uDpFu6/ZvF3GCDejzOOWXJy1VufxjvwdxVxT?= =?us-ascii?Q?Wx4ZgGxuexVpxM2vXzC4UEz0WDOWPbe7WPJbPijPkVStLcexrs9dpvfA35Hi?= =?us-ascii?Q?4UrtX/gx5krf/uZQlrkh1bOZQf7PpVXHYbUSne3yy7wqOnlYXrwIkNFp0bji?= =?us-ascii?Q?lJARC4hr0JzwFkDr2/FrhOnSmPd94U+97V1XMgmXoLauWoIECws22+UvpnHC?= =?us-ascii?Q?daNK13+vviJeg6hRjBIKN0YNKtZVdqi20qOiPLSb48v6Te9XmGViSQB9HVYH?= =?us-ascii?Q?ZS2Zb3wB48FZALf7ey+NKkdJzrgaAvpaNE0+0VIaSY2okg7yPxfC/TlSKdcB?= =?us-ascii?Q?W8v3CUuZ75kWtyCb4GyQ504bp6qlPJ2fgcN+iHjOqLwXNw265dyuKWyDdBUy?= =?us-ascii?Q?iAeXhU5m7eMkhDXB9SPVWe5MCSKeOjeWaGQl+Pyg2vS2CH5wnGAPOlBtCaHw?= =?us-ascii?Q?OAVfp12/py9uEl4kwhGlVxcYR+2CX4Tp+Ayz26VFy8ErOlgD0P4OlGphlvBd?= =?us-ascii?Q?luXy9MzD3T/vdh0GOq7UjYqp0ix1eugcrItnlupqFR0m4JjXazBpKuKPpjGP?= =?us-ascii?Q?7nLz0us/WL9nYnP/cr9M0IF8HW5qKdI6s+F4zzmBRk1wJU4F3usCD85zgW3W?= =?us-ascii?Q?rA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: /GG5g2On+VN36gy3JvSy8jStQknRbch1bUxKJG7+jBNk5VBdFPtDsewcrY8e+4HOd3eNRfZ7UDNTPIlo/TGmQsQ/zJmMNZWQ1p3nSMLsM8LzJBraGaVb4qe52ggi5Eb+9xX0T++3DA8HDB40B4rPSMBnrn2qltGYHJZOhlG7EPriuXdhqcgA8DPBmjy95H9D3iGuWTKGbss20ifqYH5eYNug7jQ5hvylepUWLVhNqG3mHiXq7QWQ4CcCiLbFvZKWhvXT4cVywUYy13vrl4JMMVsz/mPK9P1shr/NUy8CmnVqke5gEwcyGBnOWMBS/3BceCvlS8x+u2tEkl4SK36jGc3Acsfk1KUldILQstAwlmKFFpGuO0PwZxdZoo93zZ0RdGjJy6euJYL7f8EHxLfRELeOE7HA16iyesd1ApcpGQjHv+krFA6r6dmEGfPjtNGrB9b2VjWRsD25ZYYfBy/0TmolLwFL8hUicUweIyHGz++UMflX5z4RxvXK1phOx9rpv1OdDs7n+fGO6pl9aEUdmD8k8ueZeCXwO9RO+Xaw85YhRWygfXcnZ1Q7fbCLagEoDuDT8Gu3I8Aem2kVXi7thsIcnI/Z/ozOlzKeybWqUto= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d33e9159-8ca4-4a21-a27c-08de12d0ce14 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2025 07:41:55.5013 (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: VYrVglroCTO2k6viyBanAUon4WDzOQy7gpKiveZ94T0Th+1V5NFVYwQGWbaHTVzmcu6W46ovF+wF8O8vLWYZ41ypX0XN4BmqntTYosZr+1A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB6716 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-23_03,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 malwarescore=0 adultscore=0 bulkscore=0 spamscore=0 suspectscore=0 mlxscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510240066 X-Authority-Analysis: v=2.4 cv=acVsXBot c=1 sm=1 tr=0 ts=68fb2dc8 b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=r4PJAH3pRi85-HfG15IA:9 cc=ntf awl=host:12091 X-Proofpoint-ORIG-GUID: 3bdMkPLWsAUGtbcCv8Uj6MQ_9AsbDK5D X-Proofpoint-GUID: 3bdMkPLWsAUGtbcCv8Uj6MQ_9AsbDK5D X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIyMDA3MSBTYWx0ZWRfX6YFJFm0eOSNq Mjx3EPWyY55fUna0m03CxKaYxXNzpDeRKyNRHxKZAgntVv1gJGNa3SpxZgA6xFfhqsfRV+AbSa9 LBtTCK8oAlNeN26/1Fo0Etr1rLnWMyi9lMxyFL4G3jNm9FjRg+c/DIoA3NFtisQ4p0TO6W//peG EzsHZ/5iJBwqbDL1cQ9G00GSwR7PACn6ZxYAydrkA1MhE4pg5k/V2M1wp6Pko9sujKZxkIYO1w2 10TEBNIDwCNObLWdSsrvfw1jkkpgvAmeLsT6qnCtzlXPwgn2sMXkKZ3scFsUCGaeHbK6IWrY5iK wP8bCHGG/1F2e0PNdxNhUcjUEjfotR3DxmEdekGxZSW9x7zlUtNqPSr5lKlksFY8uf9/91WNeze AXxUy2ZmbVYk5uBZQA9xl6JWw4jEXiDdDlj+mtgoc9zEr0mqE38= Content-Type: text/plain; charset="utf-8" Separate out THP logic so we can drop an indentation level and reduce the amount of noise in this function. We add pagemap_pmd_range_thp() for this purpose. While we're here, convert the VM_BUG_ON() to a VM_WARN_ON_ONCE() at the same time. Signed-off-by: Lorenzo Stoakes --- fs/proc/task_mmu.c | 146 +++++++++++++++++++++++---------------------- 1 file changed, 76 insertions(+), 70 deletions(-) diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 5475acfa1a33..3c8be2579253 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -1984,91 +1984,97 @@ static pagemap_entry_t pte_to_pagemap_entry(struct = pagemapread *pm, return make_pme(frame, flags); } =20 -static int pagemap_pmd_range(pmd_t *pmdp, unsigned long addr, unsigned lon= g end, - struct mm_walk *walk) +#ifdef CONFIG_TRANSPARENT_HUGEPAGE +static int pagemap_pmd_range_thp(pmd_t *pmdp, unsigned long addr, + unsigned long end, struct vm_area_struct *vma, + struct pagemapread *pm, spinlock_t *ptl) { - struct vm_area_struct *vma =3D walk->vma; - struct pagemapread *pm =3D walk->private; - spinlock_t *ptl; - pte_t *pte, *orig_pte; + unsigned int idx =3D (addr & ~PMD_MASK) >> PAGE_SHIFT; + u64 flags =3D 0, frame =3D 0; + pmd_t pmd =3D *pmdp; + struct page *page =3D NULL; + struct folio *folio =3D NULL; int err =3D 0; -#ifdef CONFIG_TRANSPARENT_HUGEPAGE =20 - ptl =3D pmd_trans_huge_lock(pmdp, vma); - if (ptl) { - unsigned int idx =3D (addr & ~PMD_MASK) >> PAGE_SHIFT; - u64 flags =3D 0, frame =3D 0; - pmd_t pmd =3D *pmdp; - struct page *page =3D NULL; - struct folio *folio =3D NULL; + if (vma->vm_flags & VM_SOFTDIRTY) + flags |=3D PM_SOFT_DIRTY; =20 - if (vma->vm_flags & VM_SOFTDIRTY) - flags |=3D PM_SOFT_DIRTY; + if (pmd_present(pmd)) { + page =3D pmd_page(pmd); =20 - if (pmd_present(pmd)) { - page =3D pmd_page(pmd); + flags |=3D PM_PRESENT; + if (pmd_soft_dirty(pmd)) + flags |=3D PM_SOFT_DIRTY; + if (pmd_uffd_wp(pmd)) + flags |=3D PM_UFFD_WP; + if (pm->show_pfn) + frame =3D pmd_pfn(pmd) + idx; + } else if (thp_migration_supported() && is_swap_pmd(pmd)) { + swp_entry_t entry =3D pmd_to_swp_entry(pmd); + unsigned long offset; =20 - flags |=3D PM_PRESENT; - if (pmd_soft_dirty(pmd)) - flags |=3D PM_SOFT_DIRTY; - if (pmd_uffd_wp(pmd)) - flags |=3D PM_UFFD_WP; - if (pm->show_pfn) - frame =3D pmd_pfn(pmd) + idx; - } -#ifdef CONFIG_ARCH_ENABLE_THP_MIGRATION - else if (is_swap_pmd(pmd)) { - swp_entry_t entry =3D pmd_to_swp_entry(pmd); - unsigned long offset; - - if (pm->show_pfn) { - if (is_pfn_swap_entry(entry)) - offset =3D swp_offset_pfn(entry) + idx; - else - offset =3D swp_offset(entry) + idx; - frame =3D swp_type(entry) | - (offset << MAX_SWAPFILES_SHIFT); - } - flags |=3D PM_SWAP; - if (pmd_swp_soft_dirty(pmd)) - flags |=3D PM_SOFT_DIRTY; - if (pmd_swp_uffd_wp(pmd)) - flags |=3D PM_UFFD_WP; - VM_BUG_ON(!is_pmd_migration_entry(pmd)); - page =3D pfn_swap_entry_to_page(entry); + if (pm->show_pfn) { + if (is_pfn_swap_entry(entry)) + offset =3D swp_offset_pfn(entry) + idx; + else + offset =3D swp_offset(entry) + idx; + frame =3D swp_type(entry) | + (offset << MAX_SWAPFILES_SHIFT); } -#endif + flags |=3D PM_SWAP; + if (pmd_swp_soft_dirty(pmd)) + flags |=3D PM_SOFT_DIRTY; + if (pmd_swp_uffd_wp(pmd)) + flags |=3D PM_UFFD_WP; + VM_WARN_ON_ONCE(!is_pmd_migration_entry(pmd)); + page =3D pfn_swap_entry_to_page(entry); + } =20 - if (page) { - folio =3D page_folio(page); - if (!folio_test_anon(folio)) - flags |=3D PM_FILE; - } + if (page) { + folio =3D page_folio(page); + if (!folio_test_anon(folio)) + flags |=3D PM_FILE; + } =20 - for (; addr !=3D end; addr +=3D PAGE_SIZE, idx++) { - u64 cur_flags =3D flags; - pagemap_entry_t pme; + for (; addr !=3D end; addr +=3D PAGE_SIZE, idx++) { + u64 cur_flags =3D flags; + pagemap_entry_t pme; =20 - if (folio && (flags & PM_PRESENT) && - __folio_page_mapped_exclusively(folio, page)) - cur_flags |=3D PM_MMAP_EXCLUSIVE; + if (folio && (flags & PM_PRESENT) && + __folio_page_mapped_exclusively(folio, page)) + cur_flags |=3D PM_MMAP_EXCLUSIVE; =20 - pme =3D make_pme(frame, cur_flags); - err =3D add_to_pagemap(&pme, pm); - if (err) - break; - if (pm->show_pfn) { - if (flags & PM_PRESENT) - frame++; - else if (flags & PM_SWAP) - frame +=3D (1 << MAX_SWAPFILES_SHIFT); - } + pme =3D make_pme(frame, cur_flags); + err =3D add_to_pagemap(&pme, pm); + if (err) + break; + if (pm->show_pfn) { + if (flags & PM_PRESENT) + frame++; + else if (flags & PM_SWAP) + frame +=3D (1 << MAX_SWAPFILES_SHIFT); } - spin_unlock(ptl); - return err; } + spin_unlock(ptl); + return err; +} #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ =20 +static int pagemap_pmd_range(pmd_t *pmdp, unsigned long addr, unsigned lon= g end, + struct mm_walk *walk) +{ + struct vm_area_struct *vma =3D walk->vma; + struct pagemapread *pm =3D walk->private; + spinlock_t *ptl; + pte_t *pte, *orig_pte; + int err =3D 0; + +#ifdef CONFIG_TRANSPARENT_HUGEPAGE + ptl =3D pmd_trans_huge_lock(pmdp, vma); + if (ptl) + return pagemap_pmd_range_thp(pmdp, addr, end, vma, pm, ptl); +#endif + /* * We can assume that @vma always points to a valid one and @end never * goes beyond vma->vm_end. --=20 2.51.0 From nobody Sat Feb 7 15:21:41 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (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 5ED852EB849; Fri, 24 Oct 2025 07:44:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291846; cv=fail; b=aICvkouahKwMWlGARZXKzebziX3TXWO61G7aLSuOzREYeJwmH7vji2TzgK9R3ZaypU8tSdLBizje4MCWOqMpStbNnLUIikai+59rScZPwzwnH88+DxMX2S3CDjG1aPNGwRCeG5KCovpUw+i8ZeRLetuspXrxqw6f3Jz48zc47Oo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291846; c=relaxed/simple; bh=BWkkOCDw4VNBmessRhk2oTHisMhSBnSWQP0uF8S8r8U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=psaabaLJ7x+XwRmoiZ6VBbI5Dgt+PoHufX05Fp2e5AFIiNgdOlflHAM7K0msDC3UdBdIAm+boTsW/oHmhfnOy+4skMRg5MH6iuHTUUZF0dlrjCw840utuRMNJ+4a4ST7OkVd782gz1JoAzjQCW+Q0S1g0IJVGdbREn9axGOz3+8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=Htc76sZi; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=GALQlpdr; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Htc76sZi"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="GALQlpdr" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59O3NY5m013823; Fri, 24 Oct 2025 07:42:06 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=a+0mdXY9CnP7r1mo1tK6ljpG5PNWWDn4EcgtuPgLWFA=; b= Htc76sZiwWD7ee9hvzVN7MhcQ7lz4RpVJ/7tKyKuZSYEsVlcrNruYyoNQy/JZASP eIThVq1xiit6wmDnyG8+Hw+vlawibKy/+qSYfz1fMsiKxxEuGSraPiQ9/9gLGM6W TtDGfB4hI5LA/eEgvYV879UmjbAqhLoO5NeVlsX/HufP0wvORDQwjsjeDE2o0Npa zMTMgrEAfgoHd6m6DUyuH9ENPkMaC7zO52oun9uzoNJymblg9iJOi+7CmKb/DXxT SOY/lmN3fnYY4D79nJvh4Uax4Po+/KBEMD1d61+RB/94CPd9uH89D2By/qDOu2R9 nxqwkBdHQdGz6wkQGVrBgw== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49ykah1veb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:06 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59O78TLf022277; Fri, 24 Oct 2025 07:42:04 GMT Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11010021.outbound.protection.outlook.com [40.93.198.21]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 49v1bgmc2y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zBgv4cVWxqGC9nnobIuJ9ZARGttXq/6kc4VZPnv9ULh8DMkBzxMflXhgo38Cn+11uuOqQhLKRjdWj5aNdfcr59pJA3HN50sEx+CteI7MrfEYRigJ/JvanwMFQe3YKZKaKjXPRvYaWg2mfbYHp3hfS/1Xa+1xOotTJxa4uolFkd3L71KMu6VVJxSxf72IkCbLw9SuJlVD4KfYDftNdkrzmaAJv7h4zQ49Jqa8q/RJy1p+s5EPugHBAiWkJrpJSEwiZjGhwtOY/fHmS2sa7AZ0cYHAuqjJaF8hY0s0cjnrgTpk0ytjAPnx4+JOOTEdtdw2ZPIv3YY2WvZzRDOSJaACYw== 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=a+0mdXY9CnP7r1mo1tK6ljpG5PNWWDn4EcgtuPgLWFA=; b=oxaxAzCpUb741aQRADlXk+vVqiFXj6XAGcL9bIUj27cMPEFE6m23dIJwuX+wvhJvfhxKSrbS8NgF4SwM/0q55yz6gm9YVsqkeDDsUzVt70Ko79eIgJ4D3BNRwAbeA5Wtgd58Br2X96PsaHeXUMD3VcKX+eGPslylptKXJpqTmUeDiAIBnx1IlWgE0C3LO1fnTeAe7m7T8iI1NhLM85BZC44wTiZwZKORIywmy4BQJMUqNP1xxJPj35KjUDvENrkM3aRa0kuNYoHXaCowMtE1IV5ubawzWEzyIN3eNlr5Gi+YkERnOiJdlrrNYt0ma/NWVr8D9f9G6ZEp+G+X21pGKQ== 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=a+0mdXY9CnP7r1mo1tK6ljpG5PNWWDn4EcgtuPgLWFA=; b=GALQlpdr+wtq88mf0BaLu4RnGT7yGscFDkygH6TIRLaLZfb228muyA7eh9ryglZ6Fam/do0mmL/pP0HcFpPpAPEH4lxxgNdyfyZjjGpvvbCMU3IuZtoOoEru2j9lodwWmGsFQtAPwMWpN7Qi6otraAqN13mE4bDegJXCZc3D5Xk= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CH3PR10MB6716.namprd10.prod.outlook.com (2603:10b6:610:146::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Fri, 24 Oct 2025 07:42:00 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%2]) with mapi id 15.20.9253.011; Fri, 24 Oct 2025 07:42:00 +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 , Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Kemeng Shi , Kairui Song , Nhat Pham , Baoquan He , Chris Li , Peter Xu , Matthew Wilcox , Jason Gunthorpe , Leon Romanovsky , Muchun Song , Oscar Salvador , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Pedro Falcato , Pasha Tatashin , Rik van Riel , Harry Yoo , kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 06/12] mm: avoid unnecessary use of is_swap_pmd() Date: Fri, 24 Oct 2025 08:41:22 +0100 Message-ID: <7702eec12584bb3332b0013a8372f0f61e006886.1761288179.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P190CA0026.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5d0::13) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|CH3PR10MB6716:EE_ X-MS-Office365-Filtering-Correlation-Id: 3ea57e26-2e50-4106-2e88-08de12d0d0cf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?DvjS6yoi+iUv7kZ4ABHZaTKmpLtifKSKg26EtG19qmwSo9u3OZGBs/jYjA40?= =?us-ascii?Q?ooWU/mNHH+enhWbSSLSwiMqdjioWJwFNC82p/0FnHWC/gFxDbtJ22wXKHilU?= =?us-ascii?Q?yngOcrYdzcj2jIieXD0sbKHMrVqD+BV90nytHWIewSkl9NgNxGHSxUbz11N4?= =?us-ascii?Q?RG9+uc4M+gh3e8BIrs8BF2wp83+UAEqfggwXfIhePhJwZ8q7k6BRg2UsJ059?= =?us-ascii?Q?Tzw/+MW4IN2ZHY/hE8C7mv0mBxaAgx0zuzJq+8cpvJ1TD0BoMkRZZAoXgSW1?= =?us-ascii?Q?2GipaootsY5aaK663S/tr7Ur/+1DafeaiiuOkxAEJsILie4jobkC6qeTwdNM?= =?us-ascii?Q?sJ9NvjoyIB4EmKyCdl423Q9mtrx34c+JQGYL7ZD921tsdTrSMf9uThOyeICV?= =?us-ascii?Q?qNwTOheMeUivaIHNDY1FNZgq2JFoXSPPV08S+vNXXWlj37imDnJ2xQgVxskw?= =?us-ascii?Q?R3WO7JE+iZ1U+cK9MaPs3zTQQyyJWMDPp8w9eZLT2EMQBPwNPAgD6zEl6cuE?= =?us-ascii?Q?MnRfsJ6Z3XQH9Trd9IGeGFCLIPsAg1OrhktxnoZ9HF8FUqsxDSNcX1Oh23UC?= =?us-ascii?Q?U3NjQ0Hc7tZskYALuTK5EZfdOzes6c4NrEKV36D6bXW07jRTHjYOwqKneenM?= =?us-ascii?Q?rtq84KR5EzVz+l5S0GFRwk9GA4BThnvZmun9BwjiRzMfEe8Gy1s/xpblPkDm?= =?us-ascii?Q?wlUKLr4IQZlcbF946NTTssM2E3bQW378F7M6ZL2HPD3eQO/l8Qciuz+HiZki?= =?us-ascii?Q?BYjs7bTMJhl9z3py1JGDSALXjKPDDIwdJ7PNENyX1hVgvEkar0poyvjtMbwo?= =?us-ascii?Q?GR08xiHc5Jr0wC2CxbmoXjYwO0Q1BlllS4ZZqlHogMwEQhtHXmWenLg54JX3?= =?us-ascii?Q?0GffkOPPGUzRZ7oDnmbEn3QDoXIpUTDOe8BvyVtDU7OKb27LgCnr+lV73O2+?= =?us-ascii?Q?S1IDSU2sMHsdtiyD52QrUagfBtnkeoPiTqocRoVfliNdNhu1fFvF2hctEDja?= =?us-ascii?Q?+T/FkG41ECfQZl4PsEPUK7xcsbWVZRcHL+oABpSIqGWgl9ida4B27xUo6KqG?= =?us-ascii?Q?UH5vf6zOaKqlR/3O+MKqjwvIVZ13Sv1J3lLgonFLfnh/NKTLZzIGexCo3UvL?= =?us-ascii?Q?UazrsRJggX6vcCvOwcxNuk6XowTrky6+GYqmwZ3iRcaJ9C5So6IUOc3sf8zW?= =?us-ascii?Q?KghUynqbPh/blp1fAv8kFQfUKdem5ISiFCkJ8ZHMx4Ssps4ZoYcWde1G96RP?= =?us-ascii?Q?tU/Kjyrj4jtdZmnn8cXEQHdD04uaQd0Jua9TJxcnrfuncazopVAXXWySx0aS?= =?us-ascii?Q?nO8cfoWM23eKaIa5gyw2JbAqIRQHm5149TEEAlR2qK9ywJmIjvLiunRheIlB?= =?us-ascii?Q?g7dcj8JNw29X6zqxeC24PYdoTSvoUyCZyW2hLoyEfky6Z9j0qsvG9JtFzLjd?= =?us-ascii?Q?Dp98888CUtnDadSRk4kYz1mM98xwou5a?= 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)(7416014)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UhxxJOoz46UDuK/klyp8X4+jZacQXUR7elXPbdtR9hfTqTmxY+QVimmzILPh?= =?us-ascii?Q?dA6KtrKOvba0JX8QFQNhw3tyjiLXJnJCfWzWD2KfUk7USwUlD+UJ1SpKq5fN?= =?us-ascii?Q?1RoeMvGZnFqGUsCjL8l/bWo4zWf/a8HB50HCcks6gpYAkZWY/wZSSQkzXIoT?= =?us-ascii?Q?Qmpkc3T31G6yo7rurkgvciyGef9KtKKn3TZZMOkpoczIofyomt8kRrfjERA/?= =?us-ascii?Q?BXsuRzBSyDT/6ZsdeRfuy2rqbXYQwOTtvqU8RGbpuFVxbA80WpcQ68BDAh+K?= =?us-ascii?Q?7QhVYk13dxZwbEOaLnaYJt3K0C2mk7LrVYDOAtTTggQX4nIV/DBBa2D7NdQe?= =?us-ascii?Q?hLYnD6VlsJtNOm4PKUn/Zjr/zIJ7y/ZOdFNnHel2bt1QeTcA2Y1Tk5jo94wp?= =?us-ascii?Q?EL9J4aUH6sWFaHtDyKGAFRhxt+orpPhSer7/x/TLzw5JCPGhtThL+QFPVdtI?= =?us-ascii?Q?g8OYYuM74aJ0hf4F0EUhJhKmMpXRqHVLCpUwpdSMsxt3SRKm972qeaIghQFk?= =?us-ascii?Q?OTYhh9DIf+DLi+nFiueiI9IzJR+yaPH0dvXRMYCyUHMBiecxtmtmmkp5A0HM?= =?us-ascii?Q?wMitJ6ZB1o19rkj01EvL6hLJAh0rOSVdUIaUUDMEnzDYzkHgjBoK7ZtvO0ek?= =?us-ascii?Q?HDee6pHnJ2mHPx+HokX55hH0FfZlZyiHFAdqxJs+KY5J8U9oxuwIjsIHA9pi?= =?us-ascii?Q?FNwRv1plZZx506oILM3MzpwutGd8N+fXRC2IoUFIp9ycjAfXnLnpHCmSK//R?= =?us-ascii?Q?t+9dZ2A0CxSah4+Vqbt+H3KJUJHJWiMx3yq9dtqMwhfUS/hPBesdaBVxYqAx?= =?us-ascii?Q?2/Cc0mcfRUgD/ZqZqc9oTlGvl/JvBYNiKQcRPyxGXzPrLDxmpwj+XZCicIEh?= =?us-ascii?Q?K01TqDXOHYwrNkDqgiCfZMTTJy9Z8ZrFlO9n/N//y2REVxtlbTP0aN2e4TSs?= =?us-ascii?Q?LsQxu4IQ97tNkwIwRMbrT27kPs8JeVMT2+7GKasn5Wo0zq1j+RWCpUFDS4wL?= =?us-ascii?Q?WI6xSE2AUkyhrgCs5grwcJy1ij8kSZIF+HlDKIUhvfIQMY5epxsQt4JUQGcc?= =?us-ascii?Q?GIe7meTUk/pZ9CYsUjjnYu39YHB3141k5IBDPHHye0e0NMqvjgkSXaFKoPpe?= =?us-ascii?Q?BvMIki9r5tq15ALFcrRjVUll7/F5t7+4CUn9y7yjowWrL8rdsLKAmnu3H7Z4?= =?us-ascii?Q?t5Y166QdDWksmAnMiylLdB1kIaEyKhYtgn4rEJra5rs5X2MxLDZk6eSi2nSB?= =?us-ascii?Q?F2zCTC+JyxfZ6bgzsgwYewLv9VCblg9xO8jYirBB/+Ee4L92RfVfZSpsS//w?= =?us-ascii?Q?oBL76YcuQ3PvbZDHtPYnZljLUoLhpXrnTuC/PoP93B0e+V596fTNJ+ddicxF?= =?us-ascii?Q?eCZs9ah6i3Z0/rHs5oCjAyVk7grUz3D7Mf1pg71BhPTYLwDLDCL4DPmg20bi?= =?us-ascii?Q?WzNfoIjQ1++QStuYiACBO0BZM8XM0f46+du0q1/cBPzIc01GeR/4rM63FcfI?= =?us-ascii?Q?2j9ZQP7HJecxUJcH86ZOTGoJrEwLPKKXrAXnq3Z06wEDAiDD8Sv3VkQidHFo?= =?us-ascii?Q?Mdh8oM/sIndm7mzsfLx9Y3cdCb8jMHDoAsrc9X+iroQr688watC1bTYsqGnD?= =?us-ascii?Q?qQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: UoOCkVHfcVbPhzvb3+g4BflUaDsgVW7ZAuJRA8jT2nZ6HalGTUr9tS5IgF7ezXSFxnfGVf9aK8+s3PvAnwWaPTWsqhDdPX+BUvVpZwxJz1jy1sPwsTeBMmcqwAnONncl6OS2VcjXZ+BCQABDqQbEr7AvbtQeMPmbwdPvroprTlp1+Im/dwhO2aWAhnPcT+MtkR4Avx0+WmmbzbKggG71c+vW4geOcaiBJox9FnepZjcya1YlIr0PUVp0ewRAcvP1pqfZJiStmI+hfVDx7dj+TPzRch9eL3w4rMdrmPVr5iqlpTpPp+aD49zPZfaspz3vRJ14N/Z+4d4xQIEZs/vD5bWLQ28KT/vobW1o6s1GxgWv3pWpTo3HkKTYbl+X1DR7Xx1p8QyWAT/xV90NS+KIR/ShhuE5LlXX6pdlmnXvIeHsETiuHbHzn0QAjDYG3WkNvAQN5Zl4GQ1XngKSV3NMwiWSLGMmpdjKXHtXdSVpXl4OPamOSInX7uJ99vGVqrk7OrBr5adrL7oAYddbYE+jmXsMG19aphZZpocOCdvX5zGH2dWIZDFei7lfh4hvS5QrpAz0vUOg3Gpu1N7zQ7KlbIWN967z9mbaDag7Bhw7L/c= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ea57e26-2e50-4106-2e88-08de12d0d0cf X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2025 07:42:00.1261 (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: /ZRQwukZlTpUXKThw3jw1U4RIQfojhTWJYslyIOBSqW4JaK1xf3nM22oVUx7epIGeaQD7glxx6Zjg2d206pvQw6nE+iri5WSww2ESh9O7AM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB6716 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-23_03,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=999 phishscore=0 bulkscore=0 mlxscore=0 adultscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510240066 X-Proofpoint-ORIG-GUID: GrRxZas3sQSKPXQRBR8XA5ZcPmgJbEnV X-Authority-Analysis: v=2.4 cv=XJc9iAhE c=1 sm=1 tr=0 ts=68fb2dce b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=96_WKPqrBKIKR3zHGkMA:9 cc=ntf awl=host:13624 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIzMDEwMiBTYWx0ZWRfXxvGiUkQV9A8Q uy1BJ0g7IOKd+CkxiW5lZR3auvvV5VWj7pWSkD90qkvTgPCDN2AkXImdnGPBc0IBH3gxuxVNNV/ tEGKcPG3jPwidpUYSofWUK3V5dsDpOAuJRMk9NHXxnOK1PpaC/iJNhobAP2klpSnyIgsPj7jgCA HbJq1UJ29tNG4tJFq1P5a/Zo489NWBVHKA1l+fiiEQj2yiKUImGQpJg/kgHhmgwdJ9aS0v7g9Cj AiM51fY5w0AXbRSrCq/TZ4XF82JbOyiIG5dMaFJ03jLB1nkaocblLJaqG9Tr8GA22YYNpy3VUMi VqycPTKBrxKyilOXlJSX2F4zmT+elBVjqigJhyu8L6hLaVdq/lFgt3puOtaBQwvzCzOi/acpEG3 gGPbkEKj+gLtW4/c3/SMnq6qsVRoSQ9KQ8ZEXHNUb4zz47sXfd4= X-Proofpoint-GUID: GrRxZas3sQSKPXQRBR8XA5ZcPmgJbEnV Content-Type: text/plain; charset="utf-8" PMD 'non-swap' swap entries are currently used for PMD-level migration entries and device private entries. To add to the confusion in this terminology we use is_swap_pmd() in an inconsistent way similar to how is_swap_pte() was being used - sometimes adopting the convention that pmd_none(), !pmd_present() implies PMD 'swap' entry, sometimes not. This patch handles the low-hanging fruit of cases where we can simply substitute other predicates for is_swap_pmd(). Signed-off-by: Lorenzo Stoakes --- fs/proc/task_mmu.c | 15 ++++++++++--- include/linux/swapops.h | 16 +++++++++++-- mm/huge_memory.c | 4 +++- mm/memory.c | 50 +++++++++++++++++++++++------------------ mm/page_table_check.c | 12 ++++++---- 5 files changed, 65 insertions(+), 32 deletions(-) diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 3c8be2579253..1c32a0e2b965 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -1059,10 +1059,12 @@ static void smaps_pmd_entry(pmd_t *pmd, unsigned lo= ng addr, bool present =3D false; struct folio *folio; =20 + if (pmd_none(*pmd)) + return; if (pmd_present(*pmd)) { page =3D vm_normal_page_pmd(vma, addr, *pmd); present =3D true; - } else if (unlikely(thp_migration_supported() && is_swap_pmd(*pmd))) { + } else if (unlikely(thp_migration_supported())) { swp_entry_t entry =3D pmd_to_swp_entry(*pmd); =20 if (is_pfn_swap_entry(entry)) @@ -1999,6 +2001,9 @@ static int pagemap_pmd_range_thp(pmd_t *pmdp, unsigne= d long addr, if (vma->vm_flags & VM_SOFTDIRTY) flags |=3D PM_SOFT_DIRTY; =20 + if (pmd_none(pmd)) + goto populate_pagemap; + if (pmd_present(pmd)) { page =3D pmd_page(pmd); =20 @@ -2009,7 +2014,7 @@ static int pagemap_pmd_range_thp(pmd_t *pmdp, unsigne= d long addr, flags |=3D PM_UFFD_WP; if (pm->show_pfn) frame =3D pmd_pfn(pmd) + idx; - } else if (thp_migration_supported() && is_swap_pmd(pmd)) { + } else if (thp_migration_supported()) { swp_entry_t entry =3D pmd_to_swp_entry(pmd); unsigned long offset; =20 @@ -2036,6 +2041,7 @@ static int pagemap_pmd_range_thp(pmd_t *pmdp, unsigne= d long addr, flags |=3D PM_FILE; } =20 +populate_pagemap: for (; addr !=3D end; addr +=3D PAGE_SIZE, idx++) { u64 cur_flags =3D flags; pagemap_entry_t pme; @@ -2396,6 +2402,9 @@ static unsigned long pagemap_thp_category(struct page= map_scan_private *p, { unsigned long categories =3D PAGE_IS_HUGE; =20 + if (pmd_none(pmd)) + return categories; + if (pmd_present(pmd)) { struct page *page; =20 @@ -2413,7 +2422,7 @@ static unsigned long pagemap_thp_category(struct page= map_scan_private *p, categories |=3D PAGE_IS_PFNZERO; if (pmd_soft_dirty(pmd)) categories |=3D PAGE_IS_SOFT_DIRTY; - } else if (is_swap_pmd(pmd)) { + } else { swp_entry_t swp; =20 categories |=3D PAGE_IS_SWAPPED; diff --git a/include/linux/swapops.h b/include/linux/swapops.h index 728e27e834be..8642e590504a 100644 --- a/include/linux/swapops.h +++ b/include/linux/swapops.h @@ -573,7 +573,13 @@ static inline pmd_t swp_entry_to_pmd(swp_entry_t entry) =20 static inline int is_pmd_migration_entry(pmd_t pmd) { - return is_swap_pmd(pmd) && is_migration_entry(pmd_to_swp_entry(pmd)); + swp_entry_t entry; + + if (pmd_present(pmd)) + return 0; + + entry =3D pmd_to_swp_entry(pmd); + return is_migration_entry(entry); } #else /* CONFIG_ARCH_ENABLE_THP_MIGRATION */ static inline int set_pmd_migration_entry(struct page_vma_mapped_walk *pvm= w, @@ -621,7 +627,13 @@ static inline int is_pmd_migration_entry(pmd_t pmd) */ static inline int is_pmd_device_private_entry(pmd_t pmd) { - return is_swap_pmd(pmd) && is_device_private_entry(pmd_to_swp_entry(pmd)); + swp_entry_t entry; + + if (pmd_present(pmd)) + return 0; + + entry =3D pmd_to_swp_entry(pmd); + return is_device_private_entry(entry); } =20 #else /* CONFIG_ZONE_DEVICE && CONFIG_ARCH_ENABLE_THP_MIGRATION */ diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 370ecfd6a182..a59718f85ec3 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2428,9 +2428,11 @@ static pmd_t move_soft_dirty_pmd(pmd_t pmd) =20 static pmd_t clear_uffd_wp_pmd(pmd_t pmd) { + if (pmd_none(pmd)) + return pmd; if (pmd_present(pmd)) pmd =3D pmd_clear_uffd_wp(pmd); - else if (is_swap_pmd(pmd)) + else pmd =3D pmd_swp_clear_uffd_wp(pmd); =20 return pmd; diff --git a/mm/memory.c b/mm/memory.c index 19615bcf234f..83828548ef5f 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -1375,6 +1375,7 @@ copy_pmd_range(struct vm_area_struct *dst_vma, struct= vm_area_struct *src_vma, next =3D pmd_addr_end(addr, end); if (is_swap_pmd(*src_pmd) || pmd_trans_huge(*src_pmd)) { int err; + VM_BUG_ON_VMA(next-addr !=3D HPAGE_PMD_SIZE, src_vma); err =3D copy_huge_pmd(dst_mm, src_mm, dst_pmd, src_pmd, addr, dst_vma, src_vma); @@ -6331,35 +6332,40 @@ static vm_fault_t __handle_mm_fault(struct vm_area_= struct *vma, if (pmd_none(*vmf.pmd) && thp_vma_allowable_order(vma, vm_flags, TVA_PAGEFAULT, PMD_ORDER)) { ret =3D create_huge_pmd(&vmf); - if (!(ret & VM_FAULT_FALLBACK)) + if (ret & VM_FAULT_FALLBACK) + goto fallback; + else return ret; - } else { - vmf.orig_pmd =3D pmdp_get_lockless(vmf.pmd); + } =20 - if (unlikely(is_swap_pmd(vmf.orig_pmd))) { - if (is_pmd_device_private_entry(vmf.orig_pmd)) - return do_huge_pmd_device_private(&vmf); + vmf.orig_pmd =3D pmdp_get_lockless(vmf.pmd); + if (pmd_none(vmf.orig_pmd)) + goto fallback; =20 - if (is_pmd_migration_entry(vmf.orig_pmd)) - pmd_migration_entry_wait(mm, vmf.pmd); - return 0; - } - if (pmd_trans_huge(vmf.orig_pmd)) { - if (pmd_protnone(vmf.orig_pmd) && vma_is_accessible(vma)) - return do_huge_pmd_numa_page(&vmf); + if (unlikely(!pmd_present(vmf.orig_pmd))) { + if (is_pmd_device_private_entry(vmf.orig_pmd)) + return do_huge_pmd_device_private(&vmf); =20 - if ((flags & (FAULT_FLAG_WRITE|FAULT_FLAG_UNSHARE)) && - !pmd_write(vmf.orig_pmd)) { - ret =3D wp_huge_pmd(&vmf); - if (!(ret & VM_FAULT_FALLBACK)) - return ret; - } else { - huge_pmd_set_accessed(&vmf); - return 0; - } + if (is_pmd_migration_entry(vmf.orig_pmd)) + pmd_migration_entry_wait(mm, vmf.pmd); + return 0; + } + if (pmd_trans_huge(vmf.orig_pmd)) { + if (pmd_protnone(vmf.orig_pmd) && vma_is_accessible(vma)) + return do_huge_pmd_numa_page(&vmf); + + if ((flags & (FAULT_FLAG_WRITE|FAULT_FLAG_UNSHARE)) && + !pmd_write(vmf.orig_pmd)) { + ret =3D wp_huge_pmd(&vmf); + if (!(ret & VM_FAULT_FALLBACK)) + return ret; + } else { + huge_pmd_set_accessed(&vmf); + return 0; } } =20 +fallback: return handle_pte_fault(&vmf); } =20 diff --git a/mm/page_table_check.c b/mm/page_table_check.c index 43f75d2f7c36..f5f25e120f69 100644 --- a/mm/page_table_check.c +++ b/mm/page_table_check.c @@ -215,10 +215,14 @@ EXPORT_SYMBOL(__page_table_check_ptes_set); =20 static inline void page_table_check_pmd_flags(pmd_t pmd) { - if (pmd_present(pmd) && pmd_uffd_wp(pmd)) - WARN_ON_ONCE(pmd_write(pmd)); - else if (is_swap_pmd(pmd) && pmd_swp_uffd_wp(pmd)) - WARN_ON_ONCE(swap_cached_writable(pmd_to_swp_entry(pmd))); + if (pmd_present(pmd)) { + if (pmd_uffd_wp(pmd)) + WARN_ON_ONCE(pmd_write(pmd)); + } else if (pmd_swp_uffd_wp(pmd)) { + swp_entry_t entry =3D pmd_to_swp_entry(pmd); + + WARN_ON_ONCE(swap_cached_writable(entry)); + } } =20 void __page_table_check_pmds_set(struct mm_struct *mm, pmd_t *pmdp, pmd_t = pmd, --=20 2.51.0 From nobody Sat Feb 7 15:21:41 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (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 CB4B32EDD7C; Fri, 24 Oct 2025 07:44:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291849; cv=fail; b=T7hQj77BR/rIYFyzy33YusQYzlziNT2GXMc9Yd948mcoi4fc/eiaf3DKjL0xCYyamUUFAidc7wuE8tLAmp3HsTEzS8UufIIvTXkFt5vmWA4CcUN5HoQnYMFs9vSsgnU1xOTca9+rTa29/mLToyLp3QMUu5Y9Ge07XFoYNn6lY+U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291849; c=relaxed/simple; bh=Q/DgZ2+L4UEo5ClGJ8n140rHxLSGvanSf+19YDUPU0A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=rMdkbnDw3mp04oj2z5n01/kuYkkRPBOPru/WmiISGALCLU8YdzdEKJCsYcGM1yMtmk7Efo38NR1ivKvyBoCBsNbuHXjNpQFB30jNsQ01DDZacG/y5qdHw5DJ14Fd7zQh6qvL4syromiUVrkOBtYUK6JUnpFwAHYpAIN5C3hhLGw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=gRyMpVYx; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=TVqRQPck; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="gRyMpVYx"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="TVqRQPck" Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59O3NKJ2005579; Fri, 24 Oct 2025 07:42:08 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=Kp0za8MBif51tvVUiYj9LdmOxs5E/y4McTtZS/aabWI=; b= gRyMpVYxXo7JpU64uZpHf2wH56VqKkd/GZ88813AuVhhbnsI3RCXPFTGkkRBpMhw vnYJ1YUvKNO507UqbJ4wzRoXIKn8DuZk/c6oIYsy+TCOwBdcFFXplsMDoZASI3BS 69OlB/sVj4+G8x8/za59KJNrnF2w+tUW9BT1UqycyPbR5B0fYeWbvofJqQt0il3V +8XbO8oC+bkung9e3NhfhZcO3gH0Ld/HVfT/zSPz/h5PuwaF1z4b+NGZ7S1yY3Fu KpOaomH61V+W+R1AyQAa3O4C+PwvQuKdP05Sic9VMmGrDYybAPUXqu/4nZZiS8mo usYT/H7501TNfTi+zjLDsg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49xv5wm53b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:08 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59O6Fxt3000945; Fri, 24 Oct 2025 07:42:07 GMT Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11010010.outbound.protection.outlook.com [40.93.198.10]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 49v1bfj8e4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=unEI/QN4Z0YZN/wyLcU0GY5zjYH0DYA+6ZwaIWht0GER5KcnA2dZGaVJ7oR/FGsrvvaM5HY6pzmvFi4wmkYnTY6rGdpFlfEVrif0WBsjXpST74nkEl4Kc7GS88zYJb8TjP4JLVftXb62r9Wc64YTTi/0blOa/dVmW74WlPzVhrgTljAEpSB9UtIHdIOsTp6CxRiN2MH6cHcDZl1yb0lxRgcO4qpUDAV+z754xTOwDkCkQ4kjuQoLQZmVUd+FO3tArBJS2RsCozZXWrWRXymH+Jy4xpp3aPKsUxmjbOHhaV2SpIOtettHAbXL2JIVz5mQGVSv3TyhOoP3P5wPq9WNkw== 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=Kp0za8MBif51tvVUiYj9LdmOxs5E/y4McTtZS/aabWI=; b=YDVUGgvw5qvNLAIzErqKguOIROpq8GCdXYk1Cc2K72MK+p35p0zcRmiJ1y9USa9Bljeq49KV6WStRO96Rrz2MKO+toW57cR+jlmIsfsaNl3xGPUuDoskVOCHfO89Lj6FXfXZvuVTDgBUfwHm2kOkni0rNA5EYAkquYOCyveSJ94Q4qZfAlvuF8u622GbkekcIsEApkVdU62LWktlJ2+UosMfG2U1JetG61JkF/ZHPIBTaTM+dasWNAGxu+823WqrFJYU5jiLfpoTSKEoGeUjYIvfj3lt2OpKgDLUS3gMyGhgfxqJgYlJ3ipgM3ZSu1h//fK2I0uVRBGsi9BoSDm5TA== 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=Kp0za8MBif51tvVUiYj9LdmOxs5E/y4McTtZS/aabWI=; b=TVqRQPckD8HPboSS/dqHUnOE0OOQ8n2vjKR9MQehbibeW9mPTtF0pvX0KWEmsoTJm+xqQV6HPuCb+VsJukfRpNYKT1d4qiVSi/gFNiU9Js7PbOx1VizUDYTALoa4gD1N2ozYZJ9xraz/pAnMvzyN8P/1sj/kcHc9VHFjdhVYdkk= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CH3PR10MB6716.namprd10.prod.outlook.com (2603:10b6:610:146::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Fri, 24 Oct 2025 07:42:03 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%2]) with mapi id 15.20.9253.011; Fri, 24 Oct 2025 07:42:03 +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 , Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Kemeng Shi , Kairui Song , Nhat Pham , Baoquan He , Chris Li , Peter Xu , Matthew Wilcox , Jason Gunthorpe , Leon Romanovsky , Muchun Song , Oscar Salvador , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Pedro Falcato , Pasha Tatashin , Rik van Riel , Harry Yoo , kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 07/12] mm: introduce is_huge_pmd() and use where appropriate Date: Fri, 24 Oct 2025 08:41:23 +0100 Message-ID: <49cf11ce2b91bb4648fc41c78fc4babf73879ee4.1761288179.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GVZP280CA0080.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:274::10) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|CH3PR10MB6716:EE_ X-MS-Office365-Filtering-Correlation-Id: f17b9d21-78a5-4af2-73d2-08de12d0d2d9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?WcTwOzwMTV/ufWiy5+m8rac2VdEEa/X8zuovBaraV6PQF77O9UYRZsLEntt7?= =?us-ascii?Q?xy+WWCBSdFC4x0JGCgHWHZPA62cmKrj7fDOaDBF3f6X2466gG51QGadqQ9GV?= =?us-ascii?Q?FVk0n/msWn3vgFJtw+9oD+3Y8crv9k30GKiJKCekGOjdGpGf5BmUrviDLArq?= =?us-ascii?Q?ta4wyY4fHG1TPzTEoS2YmVW/ZNTsIY5qjPYEZ3T/ihH/YClVbix0YN5uL5qe?= =?us-ascii?Q?S3E859dyYPiTy6jZQEU67xyz/SU+cM78qe/jj28M+GhBi43AUoU1qlSFeyvO?= =?us-ascii?Q?vybLWlnRB/rytsdWnGh2p/I+tyNnfXIn9ntEK0Tner36aAOwStDteWfXKqIf?= =?us-ascii?Q?lLebmqe2dcpKNyheDFrrh804vW5pAcmkxrIlm3v9+EZX9KkjJ8sMt11w5HPz?= =?us-ascii?Q?+pqe4YopWrtYTZ+FxoN4fS90PZfDSeZGOsXfFeny8crwvDHzbWHD5hdd1Zws?= =?us-ascii?Q?dr+SUZv1kVTZ8PNRx7NGymEaKGWjlpP+RXKkwBxedxFtOWSzwQmLBy+qrzIO?= =?us-ascii?Q?A1j2w+lvcODnz9CbR1GPf1fExOMPuN5+PW+Cp3Wsr5kj235eAgaXGGn8JT4D?= =?us-ascii?Q?VDZT1e+fxDunr0RFXPSTxiQLjtu5mXQ2ctXE0Bcqsa0aXxlxs+jLVhPHUNNA?= =?us-ascii?Q?Cmfr915HHHcQpgFiB/XBzsFsgbgCXC9XXfezZPpMxPxK9tpg1CnerBmavuT7?= =?us-ascii?Q?KhHRftaWUQ1DWbXqy8uBB21orgyKTQb7n06fS2kNCjiV7hMhMYoZlo341zvR?= =?us-ascii?Q?ox/RE0JpGsW2NLviltKE+nZNQKAV9HIm7AGPzxftR5n32chNwOhdTtWZjaeJ?= =?us-ascii?Q?6JXaIK0FW6dwIsf4wFfztTyKYooULzkaXfNeFojyipWt8v6LDVsvJ7e2Z35U?= =?us-ascii?Q?VFYEYDZTSneDIWxTpj6SYFCJeprv15HbT5ocX/hx0HCAm+Kimu/MW5X0exys?= =?us-ascii?Q?9KFI7iMyGtlrGciYB+bqs3GomvEMjrgXzimirMuRINhR8GDMB0K6o9P+tz3I?= =?us-ascii?Q?gq9dD60XlHyxwIi0Er1ogkts7PDjdA1vrKWLj2haGOQV3UERuG3Ay20uZGDL?= =?us-ascii?Q?uOZM6+hMW282VCjNLgjzqcRVWaXNbs0+AoNhrV1EdR/P6xs2lisEbx9eg412?= =?us-ascii?Q?221WCmWsT+TIgVf2tHXx31MYcS78V9BLv8vPPpV/qIQ/Ew8+vOgVAIb97hHv?= =?us-ascii?Q?Sfk1KZEcDBYDzeuAuP/QqbAKs8YcTlPp8MX28XWWLahrE4z3OTS47lLl39CZ?= =?us-ascii?Q?hK2jzzsgCrKuC7QfWF5LSUqaD2xONxSqq1iaZXW2VC5M3tYHLC/z8l1Zad7R?= =?us-ascii?Q?F48iewVGOIBSaqnF0ZMT9cBpvqkIwkMai7Zbozayjl2dQz0HKMdFyWZf9Tlb?= =?us-ascii?Q?ZrZbttsufm6sSSs+dmlET8e6lgZTbC+Sqx7Ai4DtnRltmKFSK1KrUOZb3ugN?= =?us-ascii?Q?lnex55X7564JtPF0sNziY4mHsHeV8//D?= 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)(7416014)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?qIDYfHFxFhIQvBl9y8rscfVYOPqSlnhsch/y33l90/52nD4uGPnmfvJsJQxx?= =?us-ascii?Q?zGpj7WS9VK5YMPQYN9/eLpfhVA2YPU04zkPmiUDwa1cfu/MCPwjXbcQyRI1A?= =?us-ascii?Q?bQqObL36k0HIQnBfHmLAC47W7/8oNqorWvVucCXXXe0ZHKFTUQ+E+dLMmue8?= =?us-ascii?Q?cF0YTDYmqTuLs5ofGlyd8gwH+3uIIP0qT3msYjUasIZu4wxV0BogcHS5boKF?= =?us-ascii?Q?Bu9ZGfRFVJE67IetD8kX2MWlpzhsXdaiGaPHK9tJD9WYAPIVW+4zcllcIoH+?= =?us-ascii?Q?E92W944+tOOM48IkZkslYLtAOdFcVPTt+Ndr7H/3+4Uh3Q9v0VBfiXxv5c6B?= =?us-ascii?Q?yMxwppwuxZJE6PrsfA7xjgR819M9wgVBiSp6vumjW76Wudctp5BDm70nPFzP?= =?us-ascii?Q?dvPIZsKdDO6UQF4OULin8BeniToJeLg9FNVCVSnOlHTzIGFDSnD1l26bAGfI?= =?us-ascii?Q?ArINQgezH63DDgCddX2YWBBqa9dJXAYcwXe9I9Uo3fMuyBdYn1kBH0Jp0B05?= =?us-ascii?Q?gSxX8TnvW5KaUEeO35aDDBflCTl5Y4RxljSCsPWxvh+D0X+K9RCeveSSkzuc?= =?us-ascii?Q?ftlm4c7K9XXto1XaLJL96qcmd47vChuBZJcPht4Gl9b+j8s0eGLyHdUBvHzL?= =?us-ascii?Q?nfEZx+d6601cKPWurhtuAmL8U/HScEvQDUXQK4/m1tyOPZ9PwTrMlGKY0lqR?= =?us-ascii?Q?OpyvVEwAju84+4iBOwz5Dl5urmLm8hasnbvSuwXIvs1+mZ8ewsNQWRBt1Rc+?= =?us-ascii?Q?KWcaTnstwL9+oZZ4rKiE8OKJISOo9MLzXU3o4LoyVDh1VK+1FtNShCvNr5PN?= =?us-ascii?Q?R67N4SaLtwebbK+4y4lWXYPUMm9ikrjtztf96bbwNoWOyf7TYWO9uAqUfpCH?= =?us-ascii?Q?Fw8jZoZAeSr5h0t3kvXkh1NCYAllNYos7iRukzttFA68Z3DMjboyk2SCUPuZ?= =?us-ascii?Q?MsmqFE79Uoq3V9kgCcenttnxuxf9bnzbea/FOVCG/BJjCqoINOh9EDvqjQNG?= =?us-ascii?Q?Rh+w6icdDLpYBqKI0Gzau5OVG2uLAG6a1/OtQ2rgpYhOct1UnKUrdQ0BzjQj?= =?us-ascii?Q?9pWdJFRDYsf3BVz0+h/ytQoP5AW/br30fMwdkqsX1efZeuuD1VaSaHFzDZWR?= =?us-ascii?Q?azHzFglYDQdPUDm+eatt88Gb4X3cd5tvqhy20UksZt+0nBM4ndLMTlkFQI83?= =?us-ascii?Q?TrA00cDkSD1fVB74KXNPgvLVe3qDAxkqwH5EyceDMw2p0Sw8Q1pNMGMC94fm?= =?us-ascii?Q?TkmnBO/hD8sZyGoHvHC8wM2rs1N2/GjIcR5Sxn9K0iewvvpMIOjYJtS+ouLU?= =?us-ascii?Q?C0dsD3cnFRSC/M4JUEkntdGLdWQM1GQSRLKY9bApxbKm7OyTIhZ6yMFX17fa?= =?us-ascii?Q?QjogFxdADsL09n01SAo/kBEm7b+DeMgkm87jx5na3CIDPNW0/B0MJHUPCxg4?= =?us-ascii?Q?hu9TiTTujAbz3VJDFWKDav9qAyOr3gIaS91P0CNKCkgaSsXyWlDqJpIqu8Ei?= =?us-ascii?Q?itRKHDPQhb0YH6NRis86+CPchFzs8f04wjpLwNk1v+IzXRgWAX5gVlmP9pGJ?= =?us-ascii?Q?bgQ6Ev6xCsfEK+hczyKSJkKVOG4sigxYr8wZgefLKUkGtYbQqhrfSakG3/jr?= =?us-ascii?Q?dg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: DlnDCd6MaPScYKHoYSZJ6G2rUTOs+o/573YJmPSCsMkzsXqlcd2mUCqmc000MtPpsdASUvpzeu2TzjWfdNvdQgolc1wb/8OIe5McEcsa8PbvC5YYMhTeNRmswzklPy/e+g4x2H/COwUi3pNYw9doLfcvpespji392ENP4TDsknlPSj31nqvLKnwV18h0rfhjMCazFPM0Bqogk50KhSeHP6gT9gHfwm+Ksy/IvlLcvxQ7KScs83CeEQ+S61m00fUz4V0C3Ls+tBXg3kbWnW3EcjQj2YrFcDUZiQXPuLmH0SJyZ5euybqJj6WXhlNhvR3DEcRXVTd470PBb5BcNa+pagvn7YP/D0jTMlGkG+mMwZEH6RxJFEEE9/5nLBylIiL6oXFqG4ZZ9OuSgL7Q9yh6JTGhMB9MsCK1Dxw81/98cyJJxY4ZwG25m1KSsBxNdg4ztDk5VVYd+Pg6j+7exxUK3c7Bdg6iKHtFYWpTgIFqecfsHE0+TwDtRvy/DOPXRXZ+UxbqUvF+hGJg2jaXXFxDvq0ai88IZVwCQZvfDZu2krqskWt96JeShzY6MyxYk0ItgRCAl1UcsYisoyyPF7QMl5KKRufj2sN3Fe4+RzA6G50= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: f17b9d21-78a5-4af2-73d2-08de12d0d2d9 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2025 07:42:03.4329 (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: iB+Ci/wTKW8WCLwsJo93uQ/Ud0NwDPSxymsuoUaVYpfNTQvLsXm/ua1sHzpJi9kp8SUHPyrb6rJhk3ctlPu2vRW0Zpu4ZN7sC9D09eWlZ1g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB6716 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-23_03,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510240066 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIyMDA3MSBTYWx0ZWRfX7UdtA4J+4Jwb rRLrfktVJjC9ANZ7ZxzeJHKcYriFPTDgFpEOL40M5by+kpp6/KMYHwN5CQfM9FRPkMGnoSqRxwa /2EOt+jVH0GIGUOBkAKmKoi6+FVCuwIdNa7bn9yuvYujXq1tydT/W/c6F1iAtRmMpeeBALPyTV/ jxTHyphBgAgGICNQo+0mpUi9x1tsr5lxuYqhD7KttKVxpLzYJwEz67Ub12HkfWMgzSGSSMGzexo LkIjGn1ofOFpPPJr+kBREjSceoFPW9N5DfkGe3tfG9ji03aBEFoR5NnwxEZ8z8g3I1ZcbPkYK8u pIVSYuc0Ch+40umfub1x1s1+huCTW/dUpiBSBnwXZ4W2yFoRTqTUr31Mb/5wCDAu6LRu18iSkxY /HcFxU8a0gO3DkctMGXnyy66a38kXQ== X-Proofpoint-GUID: H6xcx6Ni_T32BexC7wK8w1p517XueDaQ X-Proofpoint-ORIG-GUID: H6xcx6Ni_T32BexC7wK8w1p517XueDaQ X-Authority-Analysis: v=2.4 cv=RfOdyltv c=1 sm=1 tr=0 ts=68fb2dd0 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=SYrxmX9aDNqaPzm3yRoA:9 Content-Type: text/plain; charset="utf-8" The 'swap' PMD case is confusing as only non-present entries (i.e. non-swap 'swap' entries) are valid at PMD level- currently migration entries and device private entries. We repeatedly perform checks of the form is_swap_pmd() || pmd_trans_huge() which is itself confusing - it implies that swap entries at PMD level exist and are different from huge entries. Address this confusion by introduced is_huge_pmd() 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 assert here that is_pmd_non_present_folio_entry() is true for the input PMD if non-present. 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 is_huge_pmd() invocations and adjust logic accordingly to accommodate this. Signed-off-by: Lorenzo Stoakes --- include/linux/huge_mm.h | 40 ++++++++++++++++++++++++++++++++++++---- mm/huge_memory.c | 3 ++- mm/memory.c | 4 ++-- mm/mprotect.c | 2 +- mm/mremap.c | 2 +- 5 files changed, 42 insertions(+), 9 deletions(-) diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index 7698b3542c4f..892cb825dfc7 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -416,10 +416,37 @@ 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); =20 +/** + * is_huge_pmd() - Is this PMD either a huge PMD entry or a huge non-prese= nt + * entry? + * @pmd: The PMD to check. + * + * A huge PMD entry is a non-empty entry which is present and marked huge = or a + * huge non-present 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 is_huge_pmd(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 =3D (__pmd); \ - if (is_swap_pmd(*____pmd) || pmd_trans_huge(*____pmd)) \ + if (is_huge_pmd(*____pmd)) \ __split_huge_pmd(__vma, __pmd, __address, \ false); \ } while (0) @@ -466,10 +493,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 (is_huge_pmd(*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) @@ -734,6 +761,11 @@ static inline struct folio *get_persistent_huge_zero_f= olio(void) { return NULL; } + +static inline bool is_huge_pmd(pmd_t pmd) +{ + return false; +} #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ =20 static inline int split_folio_to_list_to_order(struct folio *folio, diff --git a/mm/huge_memory.c b/mm/huge_memory.c index a59718f85ec3..e0fe1c3e01c9 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2799,8 +2799,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 =3D pmd_lock(vma->vm_mm, pmd); - if (likely(is_swap_pmd(*pmd) || pmd_trans_huge(*pmd))) + if (likely(is_huge_pmd(*pmd))) return ptl; spin_unlock(ptl); return NULL; diff --git a/mm/memory.c b/mm/memory.c index 83828548ef5f..cc163060933f 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -1373,7 +1373,7 @@ copy_pmd_range(struct vm_area_struct *dst_vma, struct= vm_area_struct *src_vma, src_pmd =3D pmd_offset(src_pud, addr); do { next =3D pmd_addr_end(addr, end); - if (is_swap_pmd(*src_pmd) || pmd_trans_huge(*src_pmd)) { + if (is_huge_pmd(*src_pmd)) { int err; =20 VM_BUG_ON_VMA(next-addr !=3D HPAGE_PMD_SIZE, src_vma); @@ -1921,7 +1921,7 @@ static inline unsigned long zap_pmd_range(struct mmu_= gather *tlb, pmd =3D pmd_offset(pud, addr); do { next =3D pmd_addr_end(addr, end); - if (is_swap_pmd(*pmd) || pmd_trans_huge(*pmd)) { + if (is_huge_pmd(*pmd)) { if (next - addr !=3D 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 e25ac9835cc2..c1d640758b60 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -522,7 +522,7 @@ static inline long change_pmd_range(struct mmu_gather *= tlb, goto next; =20 _pmd =3D pmdp_get_lockless(pmd); - if (is_swap_pmd(_pmd) || pmd_trans_huge(_pmd)) { + if (is_huge_pmd(_pmd)) { if ((next - addr !=3D 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 f01c74add990..070ba5a85824 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -850,7 +850,7 @@ unsigned long move_page_tables(struct pagetable_move_co= ntrol *pmc) if (!new_pmd) break; again: - if (is_swap_pmd(*old_pmd) || pmd_trans_huge(*old_pmd)) { + if (is_huge_pmd(*old_pmd)) { if (extent =3D=3D HPAGE_PMD_SIZE && move_pgt_entry(pmc, HPAGE_PMD, old_pmd, new_pmd)) continue; --=20 2.51.0 From nobody Sat Feb 7 15:21:41 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (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 3472A2FB092; Fri, 24 Oct 2025 07:44:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291855; cv=fail; b=Zi+ODBoZFyw1V2P6icVpIeRA60MqcopCA4/264GUnn75XCLsS3x3etr5kGa+lChKmuq2+yp2ccXjnCii3s/4Am5ClP5r/u0YQmo/e6LVBVMJaQZQLo5tNTcjb8REc/i2GiZJKnAqVGYUUvCY+dsO2poEVS83JqT0JmgaXKWma5I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291855; c=relaxed/simple; bh=8lT1HGM1rw7PXOalGgPCF+L2lU8rcxc2IOvwp6WAJSI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=p6ZSmIMX+cQAJH5L8B+z1/riCc1FOi8alUQFfrMAVJRrdXmlfbbys+iTDo1LYmchS0+z7DO1+KfB2M7Mi1WcmgN3t/Ivs/FZeQ+OImenLBE5L7M/Df4rP0c4wjwaplM2rI5th6Fqb+2OtPHkR7cI/kphfSf/u9j4DWlRd3+54Ws= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=J8mbKl//; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=aPFXuxvM; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="J8mbKl//"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="aPFXuxvM" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59O3NaoQ013827; Fri, 24 Oct 2025 07:42:12 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=AoYmJWsB+N/I5jfbsRQfX74Q7w7LUl+HZ/ElB9RDX/U=; b= J8mbKl//8RdoTiquuG1yKmg/lAJXpDVk8MMyWIMhwXZBnBe4agfV4Yz8ltwkmU5w eIUHeY3A8jNLhxZPhoSqrAqjnfubRAXQdeL7AhJvDbUvH1e1vBq0bHCi/2tzH2Qz TmjHOhc5Mt0ut2GZZs7XUX8u6hk3epDE0MQgplDwKpFy9UezYhRb8ivMuPnXTDj0 4/ptI1oC7IyCAgKpBbGaYfwGkCLcvAZGt912XuzaIpsgB18oko23MNQ/THfQQ0Rb Cze4/+MqObfQ9wTInsNweGF5P5QLd6UKH2wiKz9+SpjcgXIkQWXvR4L5GU1uZadv Kitj9Tk9fOzLww4mBhZwqw== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49ykah1vee-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:12 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59O5USHI022309; Fri, 24 Oct 2025 07:42:11 GMT Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11011036.outbound.protection.outlook.com [52.101.62.36]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 49v1bgmc63-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=E/7a3L068k3ZxkmwCqKjBFqhFYW0aRpkDF+jFWJFvMuCRBCJi2/afL6irHsV/fhpDDpbubZdAMReqkFYo/CxgMju3BaDBZ13HQKGED22IrCYmhfeq0WDet/RgGtdqwgOmhjZvfjvrKmJPah3xeAryikBtmL5Do1H4lV3hZcUPJ3Se8XeBi2vr29hA6cH6pVyEgopWR4c/jQwfqdaG1fQzW9cT8kirKcNK1Jzhs/E4Z/pf9OBYcMYuJHPrmAZo+D2F3RT7cSoPtBfwtMKYARRFWZq4+SGYq9lUfnqIs2pa3MMn071FbQ7PPHG2Duk5B0Vul0HgrgAwcKb4bePzZKkuw== 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=AoYmJWsB+N/I5jfbsRQfX74Q7w7LUl+HZ/ElB9RDX/U=; b=W2athsI2/XrAqgoCAqjoL8b53kic7lregraNAo2l7sqq6d0Owh52aYPsTq5EYsWVmDGjK4ewf6+7q7CiP40dL3GinzbYzz5UrHPiX/WbcFXWCwlFvKfDlrGsNrD+PpVwIgs+KwAZkZIPm/MPWTFVhTI+eMqLE7S/ruS73B+GcGB2UIAvyWxFjxVSLtaSDMqrRVsDfTHXuJRll2Sbe+VquqzTbhOAmKiLG7dt3y11RUoTMMlvVhgNpcM61vct79pP3jJkd5NFHOS0XAmYC0hOCvMqUUZwonnTvFeSzIg6gxe6e+4fIScStmBLhOXtrmFqz4VLPEZmX8R4uoBqFEnd9A== 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=AoYmJWsB+N/I5jfbsRQfX74Q7w7LUl+HZ/ElB9RDX/U=; b=aPFXuxvMOCb4xYRn9cjhTx3iQvwyF8Q7c2yffZhDdZKFIm0kL3zyRM0pXFVFy5q4QE+Q2B8uFd22B9vNu4cgONOlIhYtFs/Y80DCaSY7/iSZvjjCLG18asFyxCoiKnBACCAIzsE3D7o8O73brnxdPR8z11q9hvRc7TR1YftqqSs= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CH3PR10MB6716.namprd10.prod.outlook.com (2603:10b6:610:146::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Fri, 24 Oct 2025 07:42:07 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%2]) with mapi id 15.20.9253.011; Fri, 24 Oct 2025 07:42:07 +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 , Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Kemeng Shi , Kairui Song , Nhat Pham , Baoquan He , Chris Li , Peter Xu , Matthew Wilcox , Jason Gunthorpe , Leon Romanovsky , Muchun Song , Oscar Salvador , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Pedro Falcato , Pasha Tatashin , Rik van Riel , Harry Yoo , kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 08/12] mm/huge_memory: refactor copy_huge_pmd() non-present logic Date: Fri, 24 Oct 2025 08:41:24 +0100 Message-ID: X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GV3PEPF00002E52.SWEP280.PROD.OUTLOOK.COM (2603:10a6:158:401::2a) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|CH3PR10MB6716:EE_ X-MS-Office365-Filtering-Correlation-Id: 95d0506f-3809-4f2e-2a6e-08de12d0d4ee X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?DOQM8+w+MIBdxLT2Y6nHV3SZOM2KpmFCmGDwq0SnIsbfdLYnmlRcnz/y/h5m?= =?us-ascii?Q?5lrP4Z6BtYqecPJrAYkSWaasbAcxY3B3zTBD9SjJRRNtt2R69uFJV9VbHGwx?= =?us-ascii?Q?sWrAX5T1j1R9I95QXYS0cO9qpoz8PZl5V3wDb57AqMsC6oN78MyOQmXiQCbI?= =?us-ascii?Q?tWM3YaFMwEhpZhEX4hNg190eEzT0oJaIJfIYzn+OpIrqMxZ2Y304kF/oaUL3?= =?us-ascii?Q?ypN5UbCobdeRKWpdg332IOZkCKc9onnz8a85LEt9u950UfIcMScLaGe0YN0X?= =?us-ascii?Q?8BFfTPpEps4zlkSX1wcuj94xxQtBQmUy2+G/QdV2wFStNBc8OX8rvsAQTs9O?= =?us-ascii?Q?ku7EiPfcXZvRjatTkrab/Kzwnz9rRIVFB9f72QAcOB5rl8WpT80kxctGydV9?= =?us-ascii?Q?k9yUr3FTDgmF/pOI4IYeZb0xLmyIXI1XmUiaQ5IvDXHtfXKjluLRfIeMew9S?= =?us-ascii?Q?7GwqhukoyqYT8BF3zXA7V+A+VYDXswpXpvkWSMpgIG72JXYPQxmzB3EagtP0?= =?us-ascii?Q?khoxwKAzWoJOJRTJvQGABz+uqsx8svfRIbnhZmn/1g6phI3boDQa/k1d6ZIa?= =?us-ascii?Q?u57hUCs/FXphAla2ADI+vRswBb0FecxRSk5j72vtwD/OVU1sVrfCjwQpgj+7?= =?us-ascii?Q?pYmJBWE8iZ4mHMghF1LSYxssV15/YKdVFadiHkIJciurV4XV/CbT/OHBxjhr?= =?us-ascii?Q?DC8UHlqhwj1CyxyenwSzh/TEJXX9J+Ky4bHokIHdus+qqcaSD7Gn6c4oeWpM?= =?us-ascii?Q?BG6s57lZOK553aPp5AZiqixsZcGBAzzHdsH8geedke5qrL68VWjSGiKu/IIZ?= =?us-ascii?Q?5OS3FEd9kmjsOnJY0wV2dz6XgI7bfcqhidyOosZ49VJ74BONyu3ZzVij2C5W?= =?us-ascii?Q?RVFA5P2EyRUw6Tz27SHtMgYwrRf4PVhdgMTyDJLwWH8nzLVB2abVyQN7ycZg?= =?us-ascii?Q?GU0H4EgHce5cDoVrWdpU4TzbjAzxPVzMYT5X5lOu5wJZ4X7YPpFuSIZSmkSQ?= =?us-ascii?Q?BcMHfBFQn8ewusQ30Reg45zC7ZnpDDbcRgmc1LlRjICjRBXfnZR6DTR/tpr+?= =?us-ascii?Q?vYgm+fUTo45lN7dmffHTQuH5kidVzUqgaN4Gr3HJZfMVGwqggdRL6M0Tf09A?= =?us-ascii?Q?xUxuTjMh1SWUgFadfwNLKTMEr1J5I4VwoQVL5VREEp2c1gtq79wuesM8rdmd?= =?us-ascii?Q?mleONhDn0PwBMFDSQGxy9arODET4pv8X5/ckCRXq7UDWXouqw4HGk87J+s0P?= =?us-ascii?Q?Q54HDCCAKGxX5Hb1uEG2pL5Np7sxW4mIjP3emxpS7cjTjb0uAYVubq9fgqyT?= =?us-ascii?Q?cDMMzi1Kq/HqqePoUbHuXTOUhJF7eSB25KOrOczu42mkc4+JX7f9iyCkX3jr?= =?us-ascii?Q?MEQu+DSvaavRsMHvHD2gYjlfaVgUBlm69HsvcHwSslorIfrncxsKSan3zJP8?= =?us-ascii?Q?zsT06OuSG37cCeFKRO8xx7Ijz/VaRpaQ?= 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)(7416014)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7DmDmWfIH2s5i/29Ij+WaknhIg8PsD/WVDoiqvTZaKX44HKLv8euWtV6vu2t?= =?us-ascii?Q?zDWWzdHJLIuGCqZjbjuEZO7N/h6oNONnNVdyDAmYsaf7/ATj5p65votz67dq?= =?us-ascii?Q?ZCyVyC/QyplofOuyrepYUy4ALyYEXLcYvDyQjRmljMx0001A2sxSHKDUZSRW?= =?us-ascii?Q?n5T/1HBuPisw89ScvE2ijSvI4cc3dSbaCLlB2SE30XIG1Lv1aPC3LhpSOl2a?= =?us-ascii?Q?d8gBc6uvHWSt3fEe1Tp3a/3VH97xlgY6gs14dt2dnJ+1NCW9F+jt4aEf/zmL?= =?us-ascii?Q?NumPvB+CABY/fchey+5pG9ty0ikYOH+Wr75o0ipiTGqQDL1OLiCKIDKxyJpN?= =?us-ascii?Q?ocx6Bwn5390bQzLk5hfCLlu2iWfR14mqnQgZorDSh/9ardT6+DexxtmnQnba?= =?us-ascii?Q?E/oww711MFz5Hx91wQLl4+GWajfX2MU40xaDG1/cwQFktEDi12dfm/G7AKwG?= =?us-ascii?Q?9+DepxfzfwMOaVCMX0Cu/unc2F1nBjJgh9XRGiwYR1kTsQZsgxenxB0jaXwZ?= =?us-ascii?Q?bKHSJ1gr1EuQAcIUjdbQP9skC7ppNcZNVsJNtiLkJACxUazu4RCOwIrk6pYP?= =?us-ascii?Q?U98xlUx+2urksA7yrRuabI4ObPgDzNMbEGd4HAAo8BFwyAC9gsOnEugGAoy3?= =?us-ascii?Q?zclvBAFhuNcFU7l6fopx3Ff+tPm6vDiWbJ/rjP95zeki+pQj9z6UDMjAxlx9?= =?us-ascii?Q?HTU9UI0K750S/L9UybYpba6czGs4tKMT+OP8p5a7sQsZE9Gnl4WlrRGpaJTK?= =?us-ascii?Q?2aqZBeHxpbn/VXQBGmAWOMYVVLsy7uhfKxouJPK9YX6eM2KpLmjH28yCcdqf?= =?us-ascii?Q?Gbs/Q59UOCtIQqQY30iQkKUcbpqYBvXUUEbsS6wazk2zaofih69UMQ6Fep6G?= =?us-ascii?Q?KfD6ZjGtNCveVTnvbu5VFcgwK6pbeAIapa8Rxcjisf2mQH3LhOEkzqdrmQJQ?= =?us-ascii?Q?M1nWVkG3QNp3PfdQxqjULelZekofem1/vJs9nies96e8IbX8C2nw24UNLEGs?= =?us-ascii?Q?gNxKGzkVNby/zXPTEEg3OSzHlGj4mdt11eqH2lOk52BYtpK/eiP4aPAkgBSv?= =?us-ascii?Q?i2SUCDJ/5QlMBqyRIeTmjhcf1YhkfiSDsdfQjw+6NjWZON5/TsSHij5XCmUI?= =?us-ascii?Q?mE5cHMxYdsJLSrIT5/ay+jfVMfHAzNQrBtKIxjuEiVqxRYrIliDsi1v9q5qE?= =?us-ascii?Q?zLtqj3hVFPI92pA2p650UAXpf+rwF6CQ5qA3BUQw6omZb7T//WLjCVpv+3tz?= =?us-ascii?Q?4SSOF/1zsafCdgXZ5pjI4x1ORQM+WppGIAi0qv7FFLCHDOhLXNA+5tqJ/7ID?= =?us-ascii?Q?bK6nTzSbimZUxYzJyALlEIRekbrtW/5lRdcSYC1shpmAFkqtVlKZ4LjMymJw?= =?us-ascii?Q?sftZJzQ652Symz7USZ6ax3FxOdlXs70EnIWBAYLgH9CbEEIcKfLbeahIusdm?= =?us-ascii?Q?/Wc0jyPwit0G2yi4aXB471MspLw7acm1txkUmNaNd/c99wDV8I/u4oFstt1I?= =?us-ascii?Q?3124LTI+qGhks3nbuhrCFvcVbjfzXJRv0o6z+HeIX3zFVlAEGXzwBGiu0fD7?= =?us-ascii?Q?fZrHU15+RCmxRmOKzoCs4rLth+NB5OTtXKD4sfwU3yOcCtNaajL2mfbiU0At?= =?us-ascii?Q?gQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: AMmAZqfNwXcPu4WZYXNU11ezV6lK0xmf7PefqDnQXNYCbRwS8KQpGJgsz4k897N4gOSyBmgNhnuh3Dt8KGcxSvuuJOVfB7ygpVigrirVirqywrT/3vg7eP3rv1hbjwOm13nb9V8W96ZU/J/ohSQG++30yXOqwHKPWfhvTRg86W1Z87QOo2MEh/KltrC5xJ/iK9Hmy9EZVYyPjgSrr0dBGc7UbTa8zdnDuGtWbpxKucOnvsDLaozwiXiS/NtSkFNnm7CMqb2HRJNf3zV4nXDwH+gsuEpNyuHOeOb3540mULUFBapstZSarskxtmkzm1ai5iqRRhMXhwlv/VKQdb+LavwRMafqDKoFXcU5jnu/CAIYvVFYd88byF5hiwXQmRxLKM3lTMODHaaxhhVJw2w3+89EnDwY8vXNbPoeuoTmCUbR9RY+ySclDee5Bo6sSj3/8dRSd0iGplO5DHHLvoCCRVjoxm9n+rbt41SJhqRGiOWmv5mcPkbPnGPvWRNV1u0RuCFxyjQk81ZgUmUNw7N5BJFwOrCtYL94Myu5ZotAsoD4RbIFcrnnnX8tFJ9/CNBD9xTfMD3/TzMpTVIfZ79SzB74jpJTS70B2V2n/yvyf5E= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 95d0506f-3809-4f2e-2a6e-08de12d0d4ee X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2025 07:42:06.9963 (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: oPRRkgO2HfIPVZ5IRWhq6a9euQiAB+7VfcnMNVLY4wbW9QrX+xXHIiVUgjnCu0X6mbJJZFq7KFn/Oonxjn4s3uSvWcGE2mZgzkelrYn4Hns= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB6716 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-23_03,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=999 phishscore=0 bulkscore=0 mlxscore=0 adultscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510240066 X-Proofpoint-ORIG-GUID: K9ShTx8KlTkAEplRQw8l-amsYUBq07Ag X-Authority-Analysis: v=2.4 cv=XJc9iAhE c=1 sm=1 tr=0 ts=68fb2dd4 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=9UmCEYkwnbpDqGD1g-YA:9 cc=ntf awl=host:13624 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIzMDEwMiBTYWx0ZWRfX0a8Piq0Ak/Zk I023GXMF/kUQrfptU1DkjOKMVEqOG9TAq2Fb2Hp2WOf013DWr2BDJJ5sOQirF2jt3vA7xRBCLXf wrvCJTgGrE1fzWAqGEI19a+nRgwVBlWRyqdwFohsDPqJpCJW0lWFurwwcVfjpcJIVtb9V3G1LZs l9Wf7U/pPDh6SStHgGBKvJeoDtKc2SYXaS9K5A3/6jd5r7neYeIuxFAf7a21vwYCtt8FWbyRe8d SGCThCKvaD1ALJKvyEv4wAM6IRE4fp+p9A9fB4N0z7bu6ztzFiNyUPMdPmMD01IbmF/wq8XKUbr HzWatRQM6XDuMsTLOi1+vjgSntruEyZriS3ugIzfQOtFYaT4kgJ5wBSIJZmQyOrqmOF1lWJ0WJ+ qmFJH+X8ziDKxq9mjiyAr24R5lnEKphe7QQPl2P2MdHlcDDrckc= X-Proofpoint-GUID: K9ShTx8KlTkAEplRQw8l-amsYUBq07Ag Content-Type: text/plain; charset="utf-8" Right now we are inconsistent in our use of thp_migration_supported(): static inline bool thp_migration_supported(void) { return IS_ENABLED(CONFIG_ARCH_ENABLE_THP_MIGRATION); } And simply having arbitrary and ugly #ifdef CONFIG_ARCH_ENABLE_THP_MIGRATION blocks in code. This is exhibited in copy_huge_pmd(), which inserts a large #ifdef CONFIG_ARCH_ENABLE_THP_MIGRATION block and an if-branch which is difficult to follow It's difficult to follow the logic of such a large function and the non-present PMD logic is clearly separate as it sits in a giant if-branch. Therefore this patch both separates out the logic and utilises thp_migration_supported(). Signed-off-by: Lorenzo Stoakes --- mm/huge_memory.c | 109 +++++++++++++++++++++++++---------------------- 1 file changed, 59 insertions(+), 50 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index e0fe1c3e01c9..755d38f82aec 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1773,6 +1773,62 @@ void touch_pmd(struct vm_area_struct *vma, unsigned = long addr, update_mmu_cache_pmd(vma, addr, pmd); } =20 +static void copy_huge_non_present_pmd( + struct mm_struct *dst_mm, struct mm_struct *src_mm, + pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr, + struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma, + pmd_t pmd, pgtable_t pgtable) +{ + swp_entry_t entry =3D pmd_to_swp_entry(pmd); + struct folio *src_folio; + + VM_WARN_ON(!is_pmd_non_present_folio_entry(pmd)); + + if (is_writable_migration_entry(entry) || + is_readable_exclusive_migration_entry(entry)) { + entry =3D make_readable_migration_entry(swp_offset(entry)); + pmd =3D swp_entry_to_pmd(entry); + if (pmd_swp_soft_dirty(*src_pmd)) + pmd =3D pmd_swp_mksoft_dirty(pmd); + if (pmd_swp_uffd_wp(*src_pmd)) + pmd =3D pmd_swp_mkuffd_wp(pmd); + set_pmd_at(src_mm, addr, src_pmd, pmd); + } else if (is_device_private_entry(entry)) { + /* + * For device private entries, since there are no + * read exclusive entries, writable =3D !readable + */ + if (is_writable_device_private_entry(entry)) { + entry =3D make_readable_device_private_entry(swp_offset(entry)); + pmd =3D swp_entry_to_pmd(entry); + + if (pmd_swp_soft_dirty(*src_pmd)) + pmd =3D pmd_swp_mksoft_dirty(pmd); + if (pmd_swp_uffd_wp(*src_pmd)) + pmd =3D pmd_swp_mkuffd_wp(pmd); + set_pmd_at(src_mm, addr, src_pmd, pmd); + } + + src_folio =3D pfn_swap_entry_folio(entry); + VM_WARN_ON(!folio_test_large(src_folio)); + + folio_get(src_folio); + /* + * folio_try_dup_anon_rmap_pmd does not fail for + * device private entries. + */ + folio_try_dup_anon_rmap_pmd(src_folio, &src_folio->page, + dst_vma, src_vma); + } + + add_mm_counter(dst_mm, MM_ANONPAGES, HPAGE_PMD_NR); + mm_inc_nr_ptes(dst_mm); + pgtable_trans_huge_deposit(dst_mm, dst_pmd, pgtable); + if (!userfaultfd_wp(dst_vma)) + pmd =3D pmd_swp_clear_uffd_wp(pmd); + set_pmd_at(dst_mm, addr, dst_pmd, pmd); +} + int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm, pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr, struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma) @@ -1818,59 +1874,12 @@ int copy_huge_pmd(struct mm_struct *dst_mm, struct = mm_struct *src_mm, ret =3D -EAGAIN; pmd =3D *src_pmd; =20 -#ifdef CONFIG_ARCH_ENABLE_THP_MIGRATION - if (unlikely(is_swap_pmd(pmd))) { - swp_entry_t entry =3D pmd_to_swp_entry(pmd); - - VM_WARN_ON(!is_pmd_non_present_folio_entry(pmd)); - - if (is_writable_migration_entry(entry) || - is_readable_exclusive_migration_entry(entry)) { - entry =3D make_readable_migration_entry(swp_offset(entry)); - pmd =3D swp_entry_to_pmd(entry); - if (pmd_swp_soft_dirty(*src_pmd)) - pmd =3D pmd_swp_mksoft_dirty(pmd); - if (pmd_swp_uffd_wp(*src_pmd)) - pmd =3D pmd_swp_mkuffd_wp(pmd); - set_pmd_at(src_mm, addr, src_pmd, pmd); - } else if (is_device_private_entry(entry)) { - /* - * For device private entries, since there are no - * read exclusive entries, writable =3D !readable - */ - if (is_writable_device_private_entry(entry)) { - entry =3D make_readable_device_private_entry(swp_offset(entry)); - pmd =3D swp_entry_to_pmd(entry); - - if (pmd_swp_soft_dirty(*src_pmd)) - pmd =3D pmd_swp_mksoft_dirty(pmd); - if (pmd_swp_uffd_wp(*src_pmd)) - pmd =3D pmd_swp_mkuffd_wp(pmd); - set_pmd_at(src_mm, addr, src_pmd, pmd); - } - - src_folio =3D pfn_swap_entry_folio(entry); - VM_WARN_ON(!folio_test_large(src_folio)); - - folio_get(src_folio); - /* - * folio_try_dup_anon_rmap_pmd does not fail for - * device private entries. - */ - folio_try_dup_anon_rmap_pmd(src_folio, &src_folio->page, - dst_vma, src_vma); - } - - add_mm_counter(dst_mm, MM_ANONPAGES, HPAGE_PMD_NR); - mm_inc_nr_ptes(dst_mm); - pgtable_trans_huge_deposit(dst_mm, dst_pmd, pgtable); - if (!userfaultfd_wp(dst_vma)) - pmd =3D pmd_swp_clear_uffd_wp(pmd); - set_pmd_at(dst_mm, addr, dst_pmd, pmd); + if (unlikely(thp_migration_supported() && is_swap_pmd(pmd))) { + copy_huge_non_present_pmd(dst_mm, src_mm, dst_pmd, src_pmd, addr, + dst_vma, src_vma, pmd, pgtable); ret =3D 0; goto out_unlock; } -#endif =20 if (unlikely(!pmd_trans_huge(pmd))) { pte_free(dst_mm, pgtable); --=20 2.51.0 From nobody Sat Feb 7 15:21:41 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (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 967AA2FAC14; Fri, 24 Oct 2025 07:44:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291853; cv=fail; b=bTTS1t1DzBwunjs7LwjbpFfCoEEZYs9Z9/f7XOCkjsa7asvy9HD9GuPrQdaSX3UdGtUxwz5Nexkj8rlGinVRf+CbHMz8eHnhk2bS+SyBcBshchUENE7C9BB4r3oMdVt1EK4a8MaKHlHI6eJno6meX0n8Pnr1ABkDBTSvONpYBRM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291853; c=relaxed/simple; bh=aAxZiticGzyRjqPvVh+Adj04dvvrgYwJP5rdBgH1QJc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=HgB4tl6jFBYwF9xKuDfiStZmjsURoBI4TjlO8UVRXHkVUdtIfZI98Ypx11JbfQOPq+KMRYqzZwyb6oN/6gwcIW5aPDQbaJEqJKDmkyVKDxbxamNuwekUEwGTfhlt3Vb3BmV0ObuJHI1x/kDUH0dYfX/itkUV17R8/JwbXOSiDiE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=mNBR1bO+; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=d8J98eK4; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="mNBR1bO+"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="d8J98eK4" 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 59O3NTnJ021637; Fri, 24 Oct 2025 07:42:15 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=tmHqIK1K6YJL5DltqSzp136H5TfbUkWYVXIOWQlLyos=; b= mNBR1bO+he68ijcejEkPo1fncjguPh+YOitdCFWts1d8TuSFcVvZbL1IGXu5WQaj /rKl44sjwa8fGQ7/YOStdwy3TZPnnTHc55PCfk//lfd+2YMP0V5xXVpyHMo2/EVP 4ryC7VUzXBvMtuxYsXSnnbF29DP/S4g6CJy/JoGc9gq130cdVhimwSpIa65KDSrf AxppiPILxBkHMLPfFA52Uktsp0nHPJa38f+V42gU+nShIUVj6eS9AL86fOwYG1xv DfDlK94Rj5EI1XyB1psNJcWUAEubs0xx3SVjIiXR5rj/q8BQzCV7c1TPc4OG53FP 4n7htesUfTAVJj1UOe3G0w== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49xv3k46cm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:15 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59O63wa4000933; Fri, 24 Oct 2025 07:42:14 GMT Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11011061.outbound.protection.outlook.com [52.101.62.61]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 49v1bfj8h4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QGx4Nv8a/o7wpUABIxdTVRFCb1ZRH7PJl0v0oXXN3ycO2aK2AJMGbtrzQxt01pZ/Pbkl/Nr8BZmWmLvOMY4PnnX1rSo0hrqe2/PePykQzFI/02iwGYSACI+htQviXTNVSZ/hKWeq8lUgaPsco7lr9AQTmjVoGaxZUzeUaw0gIKsSK+DoO/VbkCn/p5boLnHIs/TIIer5Kw6vAuGCBCuori6RX0SM8YEFClQa/CWIeOKkIsE1jYRKhD49DfFo2ha/RJZAOFhxXs4I2wKsK37yMPCVvHOQg6xAbPW43Bg46LffFGiyxR5qXp5v6L0tObm4fkPXa4QR4MJn8QtySnMBww== 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=tmHqIK1K6YJL5DltqSzp136H5TfbUkWYVXIOWQlLyos=; b=VpoYLjDp2t5ZBKWh+k9R8gtLqoFrDAt/z/AYLC5wHhA71/oqgG68nQbBjSGKET99kqQUkUOXcV7XkBAB9l35JBE5RibWpiqcrU7bs03cCLpzDhrOTa4+NKBimA2EeHfrhLwVEJ3VBb48kADz9da9w9ExUscBuowsx/FOSQNf7wpdeGOIMWrcJIrUss2eQCU2wEXqObx80T6McLWrm8hxXZ8q9btiuUMsKqUWwt0dpPBC5psueW+A5ygvB6bHYjyj9+TItfqlaHDrkcnUZ1LZYbYdBBqgGtp4gTJRaKC4OD7t3VfVBt/5qYQMOFJwavn1wt1NtezGjj5aT16WF9fWEQ== 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=tmHqIK1K6YJL5DltqSzp136H5TfbUkWYVXIOWQlLyos=; b=d8J98eK4Dnmya5IuCI2yFv81q8GKpmo7/pCasDK3FnlfboqQT8BR3HKdGffaebiDbKSZcmr4GvJvpMAezwiNMrrj5hwJ1wmHzFnSt5i12nkSdVsos8Ipg4+dPc01bpzko10fc+bhR9U1YmarH3HMxr1qFTCoYrKjIlgLC1vtA0k= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CH3PR10MB6716.namprd10.prod.outlook.com (2603:10b6:610:146::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Fri, 24 Oct 2025 07:42:10 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%2]) with mapi id 15.20.9253.011; Fri, 24 Oct 2025 07:42:10 +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 , Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Kemeng Shi , Kairui Song , Nhat Pham , Baoquan He , Chris Li , Peter Xu , Matthew Wilcox , Jason Gunthorpe , Leon Romanovsky , Muchun Song , Oscar Salvador , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Pedro Falcato , Pasha Tatashin , Rik van Riel , Harry Yoo , kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 09/12] mm/huge_memory: refactor change_huge_pmd() non-present logic Date: Fri, 24 Oct 2025 08:41:25 +0100 Message-ID: <282c5f993e61ca57a764a84d0abb96e355dee852.1761288179.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P190CA0002.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::11) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|CH3PR10MB6716:EE_ X-MS-Office365-Filtering-Correlation-Id: 8cce6c36-0ef7-41d6-6f7f-08de12d0d6e1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?3sTE1cDp6DSglPxebEc2UPkF1/UvL5rCBFbQ8A8GJxDg3Lt1Zo6EcOKmi6vV?= =?us-ascii?Q?R9KdAxw8wka18WZ3IC11WGrGyfQCVijmm0SAqxS5/MGNccEuWyRBeQRU2Cy1?= =?us-ascii?Q?8A99I5D4fmqtwbsIIqSvLj7J2B81VdfiryIRdm8JlfrM+uSSFNPmUBnXFtDY?= =?us-ascii?Q?aXy0Gfqx5dvRdqElB0R1zoEVOLopwtJwOUOUDNxc70Ay0Q34TeUPzt+dFgZZ?= =?us-ascii?Q?jToA4bmS3KhezU3xE6TaKnT3jZ46WqYNsMH1LwQ6aYh1ihy0iqxbFfwDc4x7?= =?us-ascii?Q?S4PX3RJWMAv0jsWu9qDeQhr30inQiZZNycODt9G0S1PEiVJQXWwDxUTEd+Ef?= =?us-ascii?Q?as73R5MJ7MyJq5Znm0M5RNS5UUIgOslXU1CGEEIuHpHTZtx+A8Alhazq0vc/?= =?us-ascii?Q?IN0g4mQX311pF44fIEX3cH/QXkKDShcDD3Y3UDawtxo0Bi87+nvpVKL/VHDT?= =?us-ascii?Q?JfWFQxRA8raV12f1m+MX7DwRsbr6249ZFhySFNvss03HqKjd0/6zKURV+5Vw?= =?us-ascii?Q?d04w8nwBS6e5F+LWNfcPPHm5WDGme+U0D0YTPFnzlDeHNwkcNNn9hb7pUpji?= =?us-ascii?Q?LtihAbqX3Yo9gloDIW0X4mlcL8i1bGrfy9lajE4F8gLvt/g2xbRxMkGuM5Kw?= =?us-ascii?Q?9epcrEvn+ozm2RpIIQrtk2/9dt4e8hMX/4itrhHzioeDSSyavpP1ZG+eUysS?= =?us-ascii?Q?V6991cSrqIVuTcAtw8J2TfmUXQcON6yhlWJxONyQZrtdIOknEZ/2LwAMt8gm?= =?us-ascii?Q?La1fFc29fT0NrumIjzdP2O1ZqqtJ4zf9yLE/JiEOIJ0neoWEaJ2a9ASDOaXG?= =?us-ascii?Q?UEiIS/yXoQP0Q1V4i9cF7t0YEM5kTCm4y2Ny0H69Axs0WDO0YfT6kkzMfeUQ?= =?us-ascii?Q?1b1PNKRFx+LvBgd1SrPIDmlp/sJCjYb29EXODqfhuG0ojt19ZjC1jPNgo0Fe?= =?us-ascii?Q?+0kT7M0FsjvcPAZILzTiQgk2uMYcPfhwhBZ+WFQqpyGCYGpKHLaYJ0YRucbf?= =?us-ascii?Q?r3NMpbTvD+ZWENUauX4473FmkAJwxcVy71kxQN9IJcq6G2QdpEfdHlrhmuZR?= =?us-ascii?Q?8Hsu3Pd6cEq1/0rp6pRB3656zpjfYwuZe4NsX/EtYKMWARNcL+XEX9Y66R8h?= =?us-ascii?Q?tSz8amuZUjqt3XDawU28/fuPKAi81xE5S0PStp/NhW5IeQdxorD5eYpVvSAb?= =?us-ascii?Q?KEQ8eQQCmT1DGe7uTtSvzd4eVa4tBXjbyKdE/fFk8hXdTSlU25GCnVm7tSJE?= =?us-ascii?Q?jtdaQRsjt+NLr0g5kfZM7qFcVM1tXlxszPq7XrWV+wxoAJCfPRncG4qN06Xf?= =?us-ascii?Q?QemLp5dbrXxLWhPGCYpKZillV7AYktbHq5E/PeOTgSVKS/AXwNaabvy9Rn3N?= =?us-ascii?Q?0WaIJMd49HJZJ9V3bittvHC1+ImHHz94N5R3w7cia24fGCsGSeL5Yg6PG9xE?= =?us-ascii?Q?qL9bWrHuKPVZmq8G8RCEer6sno7LPgXB?= 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)(7416014)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?RrXkuEUgSXgORyotcQfW2cQbnpIneN6hqyGlM+fqVl+p+RrCRhu7aDJiWSPu?= =?us-ascii?Q?sNv77pY7MH59RcT8Ral48IB35DaX97JtyZsA3Az7xczNk+4FXyfvtmti5Xhi?= =?us-ascii?Q?YGraOVAmVNoj1fx+TDZJIm5n0yR2GRulWXuGo8fXV84LwbpnSOxuANII4A1f?= =?us-ascii?Q?feX7YcUmP4uZU+l0wNRqSizDtms2qpBa7OVpfye/AlYiEK88WwXY04aL7dxZ?= =?us-ascii?Q?GiFttn1Ks9ncoalxqIuvfBxtNYSiq9lZvfbCzNdOFrrJA+B+gWY0Ora8S7Es?= =?us-ascii?Q?tjE2qF9bR5kKYCRGe8TUbSpnOrNQbfZF3f/TAHLPh9egAU+EOQkzRPcBBQQ3?= =?us-ascii?Q?bVqEiAc/lpM7xWhf5DuQalBGEn5hFjkBbOpoROeN43BjGyBG0e0nAmdWHG9W?= =?us-ascii?Q?NEEV0cyIcK8mwMEY43UE5vmGj6TdI3o6dS/VjmJZISyjDt2E1M2YxtKtzNuL?= =?us-ascii?Q?5l2IoPfD8W5bZUWleaeQPre/5HxcG1JRN2WwLJh+U0ov2PyE4dPZO8G8KE+E?= =?us-ascii?Q?A74HEDJfv1oBZRcrAkAKkJ8HqdsW0LXj1837gjKE/1ylVCbAs+F8hE+mu08z?= =?us-ascii?Q?7c2Zr3x2ITBbmAqn/TNxoUOg4p4LVFpQuVcf7PHKrGphrxe/tFukVRIJgzSi?= =?us-ascii?Q?ZhLJBIotHnmSbqIavrtJZ7dBDxpz/4RbTTZSRuqLLpzW6tFhQQ1FmrsFKNma?= =?us-ascii?Q?23c07wg5QdlOTBRjqoDAjariJu3KGZrT/n4X8y0ce9BPIdaiTcPXsgM0M2cb?= =?us-ascii?Q?lhXf4fqkEcRRqNeG3kLUTh7fgjm7xAT8LGZuU/C7DtKMd0B5k0wzxsFaCGxz?= =?us-ascii?Q?+N+oZWaL/gKQ59e5wgRBfZ1+/TPRF47NaiHkz3+x2+0MJVUFFfwZOAq1DHKR?= =?us-ascii?Q?Lh7DCrXWiYmjgFX/f4pfrPYQtR0Id/GTv41qakvXa6qMb1i177LPG68+zyzH?= =?us-ascii?Q?7UW4CF3rNwy3kpUcd7ANT1qvhKhTyCa1/K8OWaM6oKkvC3sVG+A8/jV56bIF?= =?us-ascii?Q?/7ydD4HPI7WgRWDvtvWMGUD/vvYm2aXVpkwB0RVtE/LbWUd0NOoqksWj4N3V?= =?us-ascii?Q?LO4Hvgr9VrxjO2p2oJ7raACz26hCQ6/XGgmYcmb5Itm4WOpM0uqTl3tcItek?= =?us-ascii?Q?wpBvlOKXw596tksG3ima8na6K71ao2lZaINB9zW9QXxXmOmzh880tAWhrD8T?= =?us-ascii?Q?nx41eMQGw5UmeVaeUG/jpAIK7CY9NPzrHe4V74CvZez2mswPv+WkGbb1AxcV?= =?us-ascii?Q?0cfvd7IebceVW3JAWrfK0Pqcd0/dXxi438XmetXrh3BU38/3E75S3xRg5DIM?= =?us-ascii?Q?bKEon1GIOimkqe8yiYPVNs91CP3WXJDXUiXEixvJ6FYXbBkiQwcSIvUIkX4v?= =?us-ascii?Q?phpU3VgWpHNDTLdK9zwQ6BZYTbXtAgHy2bwUdXU70JcXVuSLYbtgbVJteQ4J?= =?us-ascii?Q?yn7+TKhsCT4JNLVVGbQm/3zeJzG4ElErG3p2Yw8dHvIJTR89KCXdbJjho7V8?= =?us-ascii?Q?IQ6ce763igcI8FkB2SC9JQjfFTVDNLCrCI9XQyOJ4csgH5ffPn04NIjWELXm?= =?us-ascii?Q?melFot0qbuhgRCX1ey8svudVMc9FIfVjJ28D0KNe5uJWnt2FIVNVafy0Yods?= =?us-ascii?Q?vg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: EoQSfc5JBXXkHVCIOb777cMMSJyP1lzfQWhVgO1o+mbjSL0OzlK2EqRSJKpZ3Rm08DWtXyvPmRwCoXTfIc3EwNX6J47TZgdi36Z1P76eli2Wuizp8c+b713quxr+q6x6bBPdn4f3NjClITkbFAzTfz+obcFziZT+arPYu1zq3pBsjr4O5PuuIKsNls1vHVcWpuPnz1bPx8U02FvvBnnBQ15XmHR/7jZmA5sH92NRp5ojVQPNK+lRl5mXuqBf7tDiKeNaXe6CHQEA6mzCUTQFVh35O3zke4tVc0NAgnb77hVihnEg6ig9luYAD9PCvlNnfOxdjCmwPFYrKa2u5r8K3k6wWWb2iKsTVw2088i6ctBt9HvL4e4oZP3N8/busHn9N1XZ7qUI+vZxId9nC69PyjvF9pkEENIt1P76w5xZ4bNqysZsA60FNEi2DYyc7bLsGZvIPj/+UQvVyDqjg9y2OpyvNT5eJPiZ12C951P9Wdm9+V63TBz/ACup0vdP6qTne4xd5e3Drb/Is8nrRkW22mE35MMviklj6CNISZfddsX1EjoYWjgA8bwpVD3mQq36+tS0eLEWU6sJDfqtR7HzeZXs2PB095WJRoEDTpHaPAg= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8cce6c36-0ef7-41d6-6f7f-08de12d0d6e1 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2025 07:42:10.2564 (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: piyO08NW4M/obJTy6NiFdi5Bgwoli1iw2z6YCq4AE4bW6xEYSg7ObHYAg94A16Ap+lyjWO6Jfq18tx5X+iPlzcKpAtIVBXnb7WUOl3xZnbo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB6716 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-23_03,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510240066 X-Proofpoint-GUID: hXgG_6Am8CIgsjwF73Q0-LmFaClCv8Nf X-Authority-Analysis: v=2.4 cv=bLgb4f+Z c=1 sm=1 tr=0 ts=68fb2dd7 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=GiTFkVEORUr9-xJPv0EA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIyMDA3MSBTYWx0ZWRfXx54pccBLoia8 NpVImIFmrkYBBWEQw9e922bvsB1vfAxNQj6nCobeFaQVZAvn+0uo63OAVt50WfMtsYyvNCiAPnq GU9NHBCWa/QBXFO5XtxC2wUresM3+Iu/Gw9V40/GAH65QBJo50CU+udaa9Bj9pSpKQwBAhXQZtP UTzJDocM7d7+lKGVB4i2oMPSGaLCBwn/9RrqQ+xrEtJYGCnT2Q816O3m+V7GxgVJMow+GzS7YXD tVmO9r9m8ILXZmz3qDudUdh4WJIE3a+feifJoPOGBeo834ts2scudzFRLYSPWibhmrNnD3i/U5f MG7qGbM5Hz0m8o5158i+YluHPSk8sJN9gjvGp8jWZRGk/5JB1jBA2Uf+V7Bd9kfFe/BiTsRugjU 4cTafwXzNzSPUvreDEoqxUU9EhE4cg== X-Proofpoint-ORIG-GUID: hXgG_6Am8CIgsjwF73Q0-LmFaClCv8Nf Content-Type: text/plain; charset="utf-8" Similar to copy_huge_pmd(), there is a large mass of open-coded logic for the CONFIG_ARCH_ENABLE_THP_MIGRATION non-present entry case that does not use thp_migration_supported() consistently. Resolve this by separating out this logic and introduce change_non_present_huge_pmd(). Signed-off-by: Lorenzo Stoakes --- mm/huge_memory.c | 72 ++++++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 755d38f82aec..fa928ca42b6d 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2498,6 +2498,42 @@ bool move_huge_pmd(struct vm_area_struct *vma, unsig= ned long old_addr, return false; } =20 +static void change_non_present_huge_pmd(struct mm_struct *mm, + unsigned long addr, pmd_t *pmd, bool uffd_wp, + bool uffd_wp_resolve) +{ + swp_entry_t entry =3D pmd_to_swp_entry(*pmd); + struct folio *folio =3D pfn_swap_entry_folio(entry); + pmd_t newpmd; + + VM_WARN_ON(!is_pmd_non_present_folio_entry(*pmd)); + if (is_writable_migration_entry(entry)) { + /* + * A protection check is difficult so + * just be safe and disable write + */ + if (folio_test_anon(folio)) + entry =3D make_readable_exclusive_migration_entry(swp_offset(entry)); + else + entry =3D make_readable_migration_entry(swp_offset(entry)); + newpmd =3D swp_entry_to_pmd(entry); + if (pmd_swp_soft_dirty(*pmd)) + newpmd =3D pmd_swp_mksoft_dirty(newpmd); + } else if (is_writable_device_private_entry(entry)) { + entry =3D make_readable_device_private_entry(swp_offset(entry)); + newpmd =3D swp_entry_to_pmd(entry); + } else { + newpmd =3D *pmd; + } + + if (uffd_wp) + newpmd =3D pmd_swp_mkuffd_wp(newpmd); + else if (uffd_wp_resolve) + newpmd =3D pmd_swp_clear_uffd_wp(newpmd); + if (!pmd_same(*pmd, newpmd)) + set_pmd_at(mm, addr, pmd, newpmd); +} + /* * Returns * - 0 if PMD could not be locked @@ -2526,41 +2562,11 @@ int change_huge_pmd(struct mmu_gather *tlb, struct = vm_area_struct *vma, if (!ptl) return 0; =20 -#ifdef CONFIG_ARCH_ENABLE_THP_MIGRATION - if (is_swap_pmd(*pmd)) { - swp_entry_t entry =3D pmd_to_swp_entry(*pmd); - struct folio *folio =3D pfn_swap_entry_folio(entry); - pmd_t newpmd; - - VM_WARN_ON(!is_pmd_non_present_folio_entry(*pmd)); - if (is_writable_migration_entry(entry)) { - /* - * A protection check is difficult so - * just be safe and disable write - */ - if (folio_test_anon(folio)) - entry =3D make_readable_exclusive_migration_entry(swp_offset(entry)); - else - entry =3D make_readable_migration_entry(swp_offset(entry)); - newpmd =3D swp_entry_to_pmd(entry); - if (pmd_swp_soft_dirty(*pmd)) - newpmd =3D pmd_swp_mksoft_dirty(newpmd); - } else if (is_writable_device_private_entry(entry)) { - entry =3D make_readable_device_private_entry(swp_offset(entry)); - newpmd =3D swp_entry_to_pmd(entry); - } else { - newpmd =3D *pmd; - } - - if (uffd_wp) - newpmd =3D pmd_swp_mkuffd_wp(newpmd); - else if (uffd_wp_resolve) - newpmd =3D pmd_swp_clear_uffd_wp(newpmd); - if (!pmd_same(*pmd, newpmd)) - set_pmd_at(mm, addr, pmd, newpmd); + if (thp_migration_supported() && is_swap_pmd(*pmd)) { + change_non_present_huge_pmd(mm, addr, pmd, uffd_wp, + uffd_wp_resolve); goto unlock; } -#endif =20 if (prot_numa) { int target_node =3D NUMA_NO_NODE; --=20 2.51.0 From nobody Sat Feb 7 15:21:41 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (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 6FD232FD1B5; Fri, 24 Oct 2025 07:44:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291864; cv=fail; b=RaqeZIRe99oHYjM3C6VuTA/b7FFg7THKN2s0w7mxZTPRlnAlaRt8KEIZJaXkDdvynn7O1F1H9i0vxtJ7HVp9pRTqL7Wj0hEhGEQdqzIb9ppLvpghWsIpsKAtrH3s4a2GOA2Rkn/WDxqyBQ0NeKWqyn6Yr4EZ8JJXSah7UBmPqjI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291864; c=relaxed/simple; bh=w9xu4UoNQn58Wzw4yQfPHTDT+0DjzY9I410qKSbqgJc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=uqV5HYIUn5bckmEHsM7ZACr444BWFwftXjA7dp4L18kgENY1zyR+OVIpVa0Pp1UJyWyRfIMcAtCDmCa1ajOR9DIu+HC9XgaGyZjhIHdAF5KgaA1RhgWIz1OY+hYV4DOL4cPHlcozK0Rj48cH7k9VnUyw1bS7ndQpDnUWUJufcoM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=rcewT99e; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=xosXiQbV; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="rcewT99e"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="xosXiQbV" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59O3NwH7014049; Fri, 24 Oct 2025 07:42:23 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=Z9/HFJjqZTASuCVIxrIGG//9Ex7AwZtZrcOQCT/O/Yg=; b= rcewT99eZkd3KgXAbx3Wnao0HjBoW0ovFyt2s3nK7cE0feGcH8PuQFm9KBbKkcqW 10Ack2OPUrSkcpCnaYiLD79TyWIF6qX8soTDtKCBefRF5GjldcP6ZJNhCyL5pagD R/MFQLmeIqgbJnxNxkspUMoqOVcnRcfgEgJ/UCk/uGePtCENUa5zKUesKrZkDM9w 1IjX5YzQwxMFnqCIoSD7nibN2hDJikpdb2KxQKPqFBzUJsupzoBAv3HrLBCKifL3 IhAYJ4qM6bV52OPgOm0Kkc+ZtGTLVt3Dp4uyz0LysgNXyYBBzrB8L8mOhvtIQz4P Rg/M9b5tUF4WVvBSesXLdg== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49ykah1vem-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:23 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59O5cSME035805; Fri, 24 Oct 2025 07:42:21 GMT Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11011051.outbound.protection.outlook.com [52.101.62.51]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 49v1bgm583-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YLCs3aHrR4XTlUAhTIZ/ebmfiO7WdGavcu4ljUoxJIiYToXd/jZtysTPSXy5LgbOUIsGcZkjJ5nGpJkXyhbuslbZoWdMX8WV1swNIXmDO5v51lR3hePDyExvnkkSsBu0gK46IwBmUvMEtr0WcGOIcltwNp2LLiYVXgVH0aNOIUjvsizmgn2kLC3my8txkAxHNSyfiuQpeq9bDAOJ6ZfnWNzbSUAuo80h8CaqEF58t8Z//QAyFtl6lIEb7DO/wzkqHJjfZcEzk6p4FUb1ZC/utLzZdIr5kOQVRZ8ZUCmCWSDXpV5OVTCmpKIQ/GQaYtpsck2QcLaVLVzzDkEIJpXRow== 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=Z9/HFJjqZTASuCVIxrIGG//9Ex7AwZtZrcOQCT/O/Yg=; b=TVx9Ol7aVoatdJQsoJ/DKpzkf+XzW0PEgedLmMSGr86c69GU3PwDMVJGw42/OPo5M7qwxZbuuFhMYl3Q1XA053UZ7R7M/2C6wLKqFw95g/lmWFnUClr53kAmaWJKL/3ix5P8fy+AetM7j0jnuvS5jfCwPK5KKzyZO81HtPtBJFJVANcQehEYsEa3rToCvfnU93+JmsaA1K20rMN5uHTGBbKG4WlM6vPMPBoKU7BzHl4Gh/E9OEgD+Yp9vpdOc24A1h+6+OVbUAY/9KmfL6t5U91j5exYHS95xTUhiahIgFDgcxVIh5VcpAWWilrjbWjuzUt6r4b7khUWXNFaW3wfjQ== 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=Z9/HFJjqZTASuCVIxrIGG//9Ex7AwZtZrcOQCT/O/Yg=; b=xosXiQbV7YZptkNWTL/O5TkXjBF9f/jxNRfWS9H+WeXeOInr95da3vu+yTV5NBM4CIlnQ561TSMOPEsWzm9CrqAyTkIgfYI5ty+BGWJ2PVBhtHkNHCY80h1kFeNVrHJo2rdZN0DCtpLZRSUEA9tyFAqkOEJrv/4Bf+kmOB9UF8k= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CH3PR10MB6716.namprd10.prod.outlook.com (2603:10b6:610:146::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Fri, 24 Oct 2025 07:42:13 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%2]) with mapi id 15.20.9253.011; Fri, 24 Oct 2025 07:42:13 +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 , Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Kemeng Shi , Kairui Song , Nhat Pham , Baoquan He , Chris Li , Peter Xu , Matthew Wilcox , Jason Gunthorpe , Leon Romanovsky , Muchun Song , Oscar Salvador , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Pedro Falcato , Pasha Tatashin , Rik van Riel , Harry Yoo , kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 10/12] mm: remove remaining is_swap_pmd() users and is_swap_pmd() Date: Fri, 24 Oct 2025 08:41:26 +0100 Message-ID: <99ac314a609ad7c4cd0c1cf40db7d25d1c5ad65a.1761288179.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P192CA0044.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:658::8) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|CH3PR10MB6716:EE_ X-MS-Office365-Filtering-Correlation-Id: 84eaae50-5bd8-44a1-d9b8-08de12d0d8cd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?0C3b63kma7idbbES8b81FoI2AShlTKrRsaskLh23sF0o6/yk5+YOGKSbf7fU?= =?us-ascii?Q?6XcGwQ9lFy1ZJJOZroKS9otOrHj4eE5y/wB4cvvvIk7ajCCqMHK5o/hIyGcO?= =?us-ascii?Q?Au1DkSn2dt8IJs6CuId9yndajHZGfLuHwg/ddm3AUXDyCK+wNRJfaR8ZITaO?= =?us-ascii?Q?5pawuxcEvXm/KIHhypuBi5WS3Vwjz5zC41T+f2M7QxZGG6za6E+aaBXLy3ei?= =?us-ascii?Q?bYSlHGOQev5mw79A7ZrnMuiHc6Du0gjV3pdbnbH6QQvvbhbMJr539olpFlFY?= =?us-ascii?Q?gLRRDS28NslgpfWBT409mWrm6RpGGg0tYQDxlDxghwsJa/t1DnLVzuQ0bo41?= =?us-ascii?Q?Ft2fSVJ593Gryb91Qcpq5I3V2ERZxTFXGFBT8PN/r5b/n4hRJpznGws5TWvF?= =?us-ascii?Q?kW8CPKa91+IFqQ9g7+rLn/pliKXx+oOQCfyn2oQHe9B8yadfuEJKJkMzUvUY?= =?us-ascii?Q?+f/qq+QsjJFyk5a9kbBkbavTispvU3ztQI8AE1iTxF6WKTGOTlycpcOUe2+N?= =?us-ascii?Q?q4YINebHI27C/gbH7KFLO1MsYOc4+3UOiOZCpKESlH2VYJ78SyOhifvgfK+0?= =?us-ascii?Q?cEtmLWJYeydJh4OvdXNU/nOQ3snuWj0yeRrbqhGxHPo9PlM0Qcn2YdqUChLa?= =?us-ascii?Q?/QPrNkMCTbj528WhW5ACCgCsL4HPOv3QvhMhyhGO8DZi2amwbKVIxbts3O2L?= =?us-ascii?Q?hqrEPsxBoOncXn/tWsTn0FckPMtUMvNDNawWFxJzwCUOyKu94qvQHi43krnT?= =?us-ascii?Q?07YsSIS9ReknvWr+Lu0Z0xG9MoiMyKufxgDWFO6EiH2teBCwcabK1JRL9lGA?= =?us-ascii?Q?hZW5zeTfYH04i9Os8twnHyl1uZ98FoMUFq2z7tOfbBYLQM+1lMeZdRGemmlN?= =?us-ascii?Q?T3vgrIRBl8rU2/g/dvsFbrjUeZ5XUKqnB8R+5MKiU221+MmeTHZdivp2F6BQ?= =?us-ascii?Q?QYukya24UsM98PFFLeQJiZo/6eIOD7D2elCb+eKqFEwaYra4NS5qjpo40wlE?= =?us-ascii?Q?wOL1rsN60swdwRywMKccG3sr0en2nqdAxLfTN81eiet9mGBFT4o3uhN8T84K?= =?us-ascii?Q?Mu5PNwe3W32HXLNgMYJtG/vIZ4l67UCj/4IisKMBsKlLrYIPzEkOMinRIi4m?= =?us-ascii?Q?UVSyp1QDrLfpgEW/BHiwUA8kFJf+ueseTvp5xKjgfw5zy5xTWfCyobWiZa9W?= =?us-ascii?Q?5mAWK/1c1GoHpYiC8TaRfBgYz1697OeB37OAXoSjlw5cda5hRVHj5r06Bxa2?= =?us-ascii?Q?0soTp/VSH/oTYxDaf+FFrH16I2au4QrdmJct/C8vY1pNq76gOfVHVJEkLnWV?= =?us-ascii?Q?F5JwTeY4v7nJcClP+BY9rudAT8beDdhoXJVn4iFgeQXDY3n4IloYVXK2DYZx?= =?us-ascii?Q?iMY1riSyOZhTISpvEZwT3d++tsRy1lary9XkwHchfFhyvfG78iAVVOihuxft?= =?us-ascii?Q?b9/JUgw/7U7th3UgfZDLg7Ek4okh/Di9?= 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)(7416014)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?TDx/12cpFKk9UW/nRTENM+rp3WKpoie+D2gDpRINSMIz0+TLOl/QMfBoIr6+?= =?us-ascii?Q?sX1YPFF/RZ75A/sqWJbJ5jqb+ulZFnR4UMB2kt2cjGOsFKbAcbFAJpD4Huoi?= =?us-ascii?Q?RUOEY69OEz610lWXRO2TZsSogZWPkl6QOiOx4+cnKtTxHfBwxjyOI0CnOOyT?= =?us-ascii?Q?WHijJCScskMwg9JkRAlrEzghcl1/SW9zNbQXNrfWHHSfHeS9Ys2RlVUeq/bH?= =?us-ascii?Q?pf6Y1p9ORtyeD4v5d/2hg0PitD5J8xYn3lQwAwspu5OZ3b1mfUflftEGPcp3?= =?us-ascii?Q?ATaN0lJFpsitpm1I+xjc+SqFE69sFNQnxWNcQoohn8Dhz+DzW5rYn2VZm/5q?= =?us-ascii?Q?p6f1/ALR9K2EjdxrrAizBTpaHNSD2F/42K1iusOnzbPb2p/o1c4mLUekA6vX?= =?us-ascii?Q?7x3p4nVxRiLmhT0dIGQguqltj+q6vD9pYQ157l81x3FeM6/C7eH/WhFJp2In?= =?us-ascii?Q?1Vohv6l/ijGnElaCOY4v2mrjMYXZLzCas+vYTRpDYpb9BAVkH7YfvDyoxEj3?= =?us-ascii?Q?JyrYkQIavDI0zyERr2XvCMhwXF0J9gq8UwiyOLbEUvgIlERnqzkzZCaLOLf1?= =?us-ascii?Q?slBSTVm1t85K3yzNtVH4y6nflA5UD0EyvwABMt2sw9aMEFWsaN7uhMJH+Qm8?= =?us-ascii?Q?n31A4oskI+kRbS/N8okosk+H2uh1z6uoD5XwjzkFvOGjog8ZE4o4j2hBpGQE?= =?us-ascii?Q?q44qxWIQg4+gWLmdOoSkoKkKDcHo7TrJlrQBk1kMzp7S9B0wEChd72ED7Gh6?= =?us-ascii?Q?v07gcojimjZILz8mch64rByAypO0Ols9buM/ZZGWYXj42kLodfM3h6IGQzci?= =?us-ascii?Q?LsyvcjI1zr3FPruuWEEhnNe/Nr8wiWyn7af9uDAHCvOarbCXMu8B2dl82K5m?= =?us-ascii?Q?gCY8eA1M3oafSMGgQIdWoJvg2z/sBQ1YTc2m5KpUq6YciAhhlBqG2StCNNVF?= =?us-ascii?Q?1OIRO6nJglXRXCadWlfA9FCh4nms7lJGIr93ekC9RFjDz2tIuS8ylqt4p3mg?= =?us-ascii?Q?hpy84W1gwfmdrLV4rfFuM+Vnd0AwwCxt9kEssPm58z/x2WrgoeJTmMEo30MJ?= =?us-ascii?Q?KJsH46n84XOh8iUr2KqONFqnvTgXFKgM7yDKWMhWVJxZ1D4yxiZfAEMGpYwD?= =?us-ascii?Q?oxjQ23LQFb1sW77v1FjTee7PX+w699SSA0CK71hhWheRxr+zwhmGA47Pp+Qo?= =?us-ascii?Q?22062PVgcl6OjRdtflD8Yc8o9Q+1F6YFnxkXzuOelNpwidudrYB5b3uQNOke?= =?us-ascii?Q?GOgwguRbtSovitngIRenNXf05rt5w1KGlZ3dCe0MTqnu+NX+U32YY2eobdgv?= =?us-ascii?Q?INV34p+jyPbjB0aPXcaKTdr7woPtBfZetafl36g2JoAUr3NjfHAg3e4BuWzg?= =?us-ascii?Q?d3XXShTXIeLzvNvQnmYqf/a/XYfefSVx8MWTt9NgnqiZTxx9iMghYk8wnQP7?= =?us-ascii?Q?lI9UEpuGLWS1DGdifwzH32tuocbSzXucDa1gz64VfHTIRQfQLJ/l7eelSNsn?= =?us-ascii?Q?I4+jjSsIOZTyLWwObB5V3IER94M+571gbM/i2okE2wDlTpTpuMaykmsOhMDj?= =?us-ascii?Q?3EUr47IMilvwdjwHI7AM+3hbQsD3nkVeF4/kjGkviphtnSm9+zfRhY8vNd8i?= =?us-ascii?Q?fQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: vcSGxTYHKyl0//sKpvzEysFrAckHOHoRDzWDEh1rbAIWHRG3Xhke2oX2KvbGvgrlic1nu8awyzhICxIVfdHshDy5lktvY/e42XcDCd3CH9oXNeID55t4zOgNmeKnqxEIw43RuWrhZku6+uMALH8cV7qFqDHUr7hvaYgewuYEz5n06/L6cfOSx0ja1d7+5tcEPXx/g6qjBRRJ55otD/7JhfQ3zVn7ieayAumuk1lHhIF8F47oq1mlIEU5hRu26Vr5pOVst1R7aALFr1bCX7etjswJSvPtxkcVa+qM8k+0qaUeBaCu6h6Bxa2g2PvWE6Nds+gpo/xthUqJyecrZke3UTE39l6Mx05hLLWxol8uNBqT8dDe2/4DVclAF3yeV+3MEYANWt1328rD7fpW0VULsLhj+3wZpBwTb/m5rMR0hAQYZI2Ea/qYHDyPUu+qcyp0xjdQq4pT/cUF2TUZwokH5aR/RVN6FDPwLK+kVDBOc/BwIer1kMZbnrjCJQXtOm4b3OTiE0Ygo0bKxIzQ61cau/X3qYttOkBGz9hlOie6H0aAfUY+LehO51LYWv86BUXsBaI4cCaWRAMsVPxMkcu1O4QEzbU6VEc6YRa1MQHnOP8= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 84eaae50-5bd8-44a1-d9b8-08de12d0d8cd X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2025 07:42:13.4820 (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: 9/y8cHTpLE9PZjqhGLT0TnxcxNrrq3nDNERX5jg/RqvLWQQSIEBGjDjXlmplTJVd4NEX75ESSTrojd1coB4ptAOCsPQrgoUTHL7HzOKl8J4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB6716 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-23_03,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 malwarescore=0 adultscore=0 bulkscore=0 spamscore=0 suspectscore=0 mlxscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510240066 X-Proofpoint-ORIG-GUID: 4aTeWCQIpipV4c7cnXLKXJR9R0ApzoUP X-Authority-Analysis: v=2.4 cv=XJc9iAhE c=1 sm=1 tr=0 ts=68fb2ddf b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=J3929my6B9elC3dWIwEA:9 cc=ntf awl=host:12091 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIzMDEwMiBTYWx0ZWRfXys+uuWOeH58v BJc8jmag+yVYAiKWuTGyzO5uyg3eSt3HeAN1GbzKzQlChvpsQ7VO3R2MDauo/vp4NgpdCii3vLU 8pdsTRhqVdQrz38eeWn4smfkdYFXEWthkmd5xJ97TtydtwTrQ73iH3N065RujyMTt92F05xb1BN HeIloaU/dEM0jAA4FF9AfoO4A4UUBqMgtDy6j+Q8HAdvJc+tmy5L6Q0axScgrazqSllUHS0CSMf ACK+8MKNi4GQsDdyb3eIRF23y68AFxecFJDmhE5lG0fZBOernfrCjrX9SFqIWEWsVRu5SXOUMo2 lYLzswf4h7nz/5mCovGbsIZAikMin9bRIPpzGv60XmuInlPJ+LAoulOK2UiIMVLdf0a71jzcoSC QfCTZpiN6opePGS/pmGQZVdPiCpk07+z1yAp7b0Hz/ZkCRSAw+o= X-Proofpoint-GUID: 4aTeWCQIpipV4c7cnXLKXJR9R0ApzoUP Content-Type: text/plain; charset="utf-8" Update copy_huge_pmd() and change_huge_pmd() to use is_pmd_non_present_folio_entry() - as this checks for the only valid non-present huge PMD states. Also update mm/debug_vm_pgtable.c to explicitly test for a valid non-present PMD entry (which it was not before, which was incorrect), and have it test against is_huge_pmd() and is_pmd_non_present_folio_entry() rather than is_swap_pmd(). With these changes done there are no further users of is_swap_pmd(), so remove it. Signed-off-by: Lorenzo Stoakes --- include/linux/huge_mm.h | 9 --------- mm/debug_vm_pgtable.c | 25 +++++++++++++++---------- mm/huge_memory.c | 5 +++-- 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index 892cb825dfc7..0c3a002dc10f 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -484,11 +484,6 @@ void vma_adjust_trans_huge(struct vm_area_struct *vma,= unsigned long start, spinlock_t *__pmd_trans_huge_lock(pmd_t *pmd, struct vm_area_struct *vma); spinlock_t *__pud_trans_huge_lock(pud_t *pud, struct vm_area_struct *vma); =20 -static inline int is_swap_pmd(pmd_t pmd) -{ - return !pmd_none(pmd) && !pmd_present(pmd); -} - /* mmap_lock must be held on entry */ static inline spinlock_t *pmd_trans_huge_lock(pmd_t *pmd, struct vm_area_struct *vma) @@ -684,10 +679,6 @@ static inline void vma_adjust_trans_huge(struct vm_are= a_struct *vma, struct vm_area_struct *next) { } -static inline int is_swap_pmd(pmd_t pmd) -{ - return 0; -} static inline spinlock_t *pmd_trans_huge_lock(pmd_t *pmd, struct vm_area_struct *vma) { diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c index d4b2835569ce..5b8b0024a492 100644 --- a/mm/debug_vm_pgtable.c +++ b/mm/debug_vm_pgtable.c @@ -74,6 +74,7 @@ struct pgtable_debug_args { unsigned long fixed_pte_pfn; =20 swp_entry_t swp_entry; + swp_entry_t non_present_swp_entry; }; =20 static void __init pte_basic_tests(struct pgtable_debug_args *args, int id= x) @@ -731,7 +732,7 @@ static void __init pmd_soft_dirty_tests(struct pgtable_= debug_args *args) WARN_ON(pmd_soft_dirty(pmd_clear_soft_dirty(pmd))); } =20 -static void __init pmd_swap_soft_dirty_tests(struct pgtable_debug_args *ar= gs) +static void __init pmd_non_present_soft_dirty_tests(struct pgtable_debug_a= rgs *args) { pmd_t pmd; =20 @@ -743,15 +744,16 @@ static void __init pmd_swap_soft_dirty_tests(struct p= gtable_debug_args *args) return; =20 pr_debug("Validating PMD swap soft dirty\n"); - pmd =3D swp_entry_to_pmd(args->swp_entry); - WARN_ON(!is_swap_pmd(pmd)); + pmd =3D swp_entry_to_pmd(args->non_present_swp_entry); + WARN_ON(!is_huge_pmd(pmd)); + WARN_ON(!is_pmd_non_present_folio_entry(pmd)); =20 WARN_ON(!pmd_swp_soft_dirty(pmd_swp_mksoft_dirty(pmd))); WARN_ON(pmd_swp_soft_dirty(pmd_swp_clear_soft_dirty(pmd))); } #else /* !CONFIG_TRANSPARENT_HUGEPAGE */ static void __init pmd_soft_dirty_tests(struct pgtable_debug_args *args) {= } -static void __init pmd_swap_soft_dirty_tests(struct pgtable_debug_args *ar= gs) { } +static void __init pmd_non_present_soft_dirty_tests(struct pgtable_debug_a= rgs *args) { } #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ =20 static void __init pte_swap_exclusive_tests(struct pgtable_debug_args *arg= s) @@ -796,7 +798,7 @@ static void __init pte_swap_tests(struct pgtable_debug_= args *args) } =20 #ifdef CONFIG_ARCH_ENABLE_THP_MIGRATION -static void __init pmd_swap_tests(struct pgtable_debug_args *args) +static void __init pmd_non_present_tests(struct pgtable_debug_args *args) { swp_entry_t arch_entry; pmd_t pmd1, pmd2; @@ -805,15 +807,16 @@ static void __init pmd_swap_tests(struct pgtable_debu= g_args *args) return; =20 pr_debug("Validating PMD swap\n"); - pmd1 =3D swp_entry_to_pmd(args->swp_entry); - WARN_ON(!is_swap_pmd(pmd1)); + pmd1 =3D swp_entry_to_pmd(args->non_present_swp_entry); + WARN_ON(!is_huge_pmd(pmd1)); + WARN_ON(!is_pmd_non_present_folio_entry(pmd1)); =20 arch_entry =3D __pmd_to_swp_entry(pmd1); pmd2 =3D __swp_entry_to_pmd(arch_entry); WARN_ON(memcmp(&pmd1, &pmd2, sizeof(pmd1))); } #else /* !CONFIG_ARCH_ENABLE_THP_MIGRATION */ -static void __init pmd_swap_tests(struct pgtable_debug_args *args) { } +static void __init pmd_non_present_tests(struct pgtable_debug_args *args) = { } #endif /* CONFIG_ARCH_ENABLE_THP_MIGRATION */ =20 static void __init swap_migration_tests(struct pgtable_debug_args *args) @@ -1207,6 +1210,8 @@ static int __init init_args(struct pgtable_debug_args= *args) max_swap_offset =3D swp_offset(pte_to_swp_entry(swp_entry_to_pte(swp_entr= y(0, ~0UL)))); /* Create a swp entry with all possible bits set while still being swap. = */ args->swp_entry =3D swp_entry(MAX_SWAPFILES - 1, max_swap_offset); + /* Create a non-present migration entry. */ + args->non_present_swp_entry =3D make_writable_migration_entry(~0UL); =20 /* * Allocate (huge) pages because some of the tests need to access @@ -1296,12 +1301,12 @@ static int __init debug_vm_pgtable(void) pte_soft_dirty_tests(&args); pmd_soft_dirty_tests(&args); pte_swap_soft_dirty_tests(&args); - pmd_swap_soft_dirty_tests(&args); + pmd_non_present_soft_dirty_tests(&args); =20 pte_swap_exclusive_tests(&args); =20 pte_swap_tests(&args); - pmd_swap_tests(&args); + pmd_non_present_tests(&args); =20 swap_migration_tests(&args); =20 diff --git a/mm/huge_memory.c b/mm/huge_memory.c index fa928ca42b6d..a16da67684b4 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1874,7 +1874,8 @@ int copy_huge_pmd(struct mm_struct *dst_mm, struct mm= _struct *src_mm, ret =3D -EAGAIN; pmd =3D *src_pmd; =20 - if (unlikely(thp_migration_supported() && is_swap_pmd(pmd))) { + if (unlikely(thp_migration_supported() && + is_pmd_non_present_folio_entry(pmd))) { copy_huge_non_present_pmd(dst_mm, src_mm, dst_pmd, src_pmd, addr, dst_vma, src_vma, pmd, pgtable); ret =3D 0; @@ -2562,7 +2563,7 @@ int change_huge_pmd(struct mmu_gather *tlb, struct vm= _area_struct *vma, if (!ptl) return 0; =20 - if (thp_migration_supported() && is_swap_pmd(*pmd)) { + if (thp_migration_supported() && is_pmd_non_present_folio_entry(*pmd)) { change_non_present_huge_pmd(mm, addr, pmd, uffd_wp, uffd_wp_resolve); goto unlock; --=20 2.51.0 From nobody Sat Feb 7 15:21:41 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (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 C6AE42FCBE9; Fri, 24 Oct 2025 07:44:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291862; cv=fail; b=mkl/K9yhjWNujRo/NQRZDIXurNOIctJaWQ/ROCVAU7+rlPQp5mZaiPgcOpwcu1n1BHHuHliA3KnyCYAvWqeKRUQZS8rdivk5zCT9Q9/sgv0UVCvtzmtRl6CMPHmGKKkg1uTXHda7yzicgRvhyExQGobQZF7Xc3PDthDlLFXoI4Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291862; c=relaxed/simple; bh=UWHX9UHnprcyLb5kMeKNmtqeEJ2U1uqpbJpiYbdUnd4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Gzo15uofIWquOIxlp6NMSdxyRC8nbdq+uRz/NkP5qumv5r1Oo7VBEADT7fHeSbmejjVFiTJNYiKN13v02FZ6RPJdUJek3OIEecYVYpxX77OvdvU77iymQ1uGgv42LCx9slBHcDNMvxqgIlasJWmCPqhnavv0o8OTkfjo0VcSCTE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=l6OmIo7N; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=YR4BoARq; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="l6OmIo7N"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="YR4BoARq" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59O3NTOv013975; Fri, 24 Oct 2025 07:42:24 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=LVpJDWyXcfjTsF8jl2cXqkq4T4wMAJmr5/sSgKUEvVg=; b= l6OmIo7NhxwK2KT6i6faafg7R9PtnKwB1NUlr9rJ7CY0CnPa3DONeiVSrESF/Ca+ HL6AhTduZfSfjLyHlSHVJcOMWAd68d791MiZOHrnM1jTGgezw2urO+MWV2qVVlPJ 1O/ptNChdkV4izHapjhIejYgE4H+/yovg0kQDjIeNRgpGdSd+zv5X4w6tT+ScjS/ Yyh4y8g743WLcGs0BWY69Vo1dBpzGeFd5RbP3lmk6n6ce5w+QMR1cmASS4HTHdol n4hYnnEoofysUukPmwW1b7zjxbvkcc2ltXhywAq3wWoTiPG/Re4MoYgdHTA9sZN/ aeHjHXs+TgDs+hY/7wevYA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49xstymdr7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:24 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59O5cSMF035805; Fri, 24 Oct 2025 07:42:23 GMT Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11011051.outbound.protection.outlook.com [52.101.62.51]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 49v1bgm583-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jRjFj8ms9Fst7OZr7JXepmwnHP63SquEZLG/ArafbfymOSEO1ozKEZ45tr21qwYinGguXAPmWgQvKueVbXfTmMMsocwJriDTqJv/DjJesFBHW726iid6zxdm8seM2COOobV5dzr+1DmpNJzRtddRILL1/RftuL3GllR9H/Z1RaQc8a3Xlxo3jRVp9Ock3Aq0/rhL/AGC5IA3RBcZgcxsLGGNbtv1wJ+omc2/THzHx+LPVtTHjYfFJzMH8pER1jSLGeBbrEWEJz+rcPdRqNMnYz1irvHxR4MoDsMXPELJvebCwHs7kwVstuutEN7Wj2nTsxl/gPBJ21H8+cGnmJ9EwQ== 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=LVpJDWyXcfjTsF8jl2cXqkq4T4wMAJmr5/sSgKUEvVg=; b=UIoX/mXE8fyGTonorNlaGrDMKcwnXiHgZJQ5JGXX/+LIM6aKUL/FadQLigMcFC/Bnd2dNEro5uRvC603zdGOwAF8OPXsL3/+11gEDd1tDFxZi6pfnKAZCRO+RTthJoO+R118kf7RQ98Z4Ow3kSYOw2JVZPQ1r/bxMmMvgopNPi6XKSLSs/Mgpg4MWtA7PZm3rePY6LAyJkjoONm5B7foKaHPqf7JrNsJKweDdgiZZR7kzpNYKHawcjbV5o3WWOmLB4edzHdD9EkIEYTMRdW48EUEBccRXVY5tTjBqeiaBBeu4t1nsM3GbfJj5NB9WIF70RtKkRlLmopCDWGFfycSYw== 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=LVpJDWyXcfjTsF8jl2cXqkq4T4wMAJmr5/sSgKUEvVg=; b=YR4BoARqERw0CxU8bKSBL0/Wr6jyh4xtcdp8bTfwbbStbW7GlMO1p8kPoG/KwryQBura8t0gsK2N1ynmRQiGckJslvooJ1CiDAhbb56cDlkY3mDQuXctdsavmHwJXwznMcrDt9+aRnBXb1mOFbdsx2DZ2bKQYw0j4SG7HMsAGXc= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CH3PR10MB6716.namprd10.prod.outlook.com (2603:10b6:610:146::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Fri, 24 Oct 2025 07:42:17 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%2]) with mapi id 15.20.9253.011; Fri, 24 Oct 2025 07:42:17 +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 , Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Kemeng Shi , Kairui Song , Nhat Pham , Baoquan He , Chris Li , Peter Xu , Matthew Wilcox , Jason Gunthorpe , Leon Romanovsky , Muchun Song , Oscar Salvador , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Pedro Falcato , Pasha Tatashin , Rik van Riel , Harry Yoo , kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 11/12] mm: rename non_swap_entry() to is_non_present_entry() Date: Fri, 24 Oct 2025 08:41:27 +0100 Message-ID: X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM0PR03CA0062.eurprd03.prod.outlook.com (2603:10a6:208::39) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|CH3PR10MB6716:EE_ X-MS-Office365-Filtering-Correlation-Id: 1fa4aec4-b3e6-40bd-d22b-08de12d0daf6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?XgmY425H/Tu4OzvpIgGAZ+dFx8IhU9jpzbJY/JgTvzaBMdrS66pxkgZv3sni?= =?us-ascii?Q?km9D5ojvUTHO6tCCBmLKNHUDLsOf0Rmtg3v7GsvJdlcuYDXFO23AM3sy86e7?= =?us-ascii?Q?E+5P4VPevb3db23J1r2y8Gj6uwHck+Ba3+XmL9kEW6L6RCxukriimE5rnIfQ?= =?us-ascii?Q?YAGlMcCxOq2eR+LWz1RDR4emCJIqqs/r4eDMjodUUFRzS+Qt/1FxthE3jTkU?= =?us-ascii?Q?C0ZKJBL8AFOs8lrJIgiaql5FJVhCAErfCIEOY2FhSLXBQyjW1lNZ/hwqjw2S?= =?us-ascii?Q?rISagFOVnxbLNVzFLTwGY8TJR2pi9fOt2nabWVZtRQeEni2cgYCpePEM22mv?= =?us-ascii?Q?A89QBY4UavYc5YGO/4x/5ZHEawCOmaaQTi85Zld4nL3+e72gfHyPgPOizAc8?= =?us-ascii?Q?JvT3ZGG4bgQ4JpXyJHGHmeewuPq/4MlxCMEyIOfqElNqE5BokBXjWPrXn+O3?= =?us-ascii?Q?Pe52jFSSdzrR6sgP9QjJd5AdKTdWUF39FwJbXg+IxzDjhvG2SbdqYPavlkqc?= =?us-ascii?Q?vCVgQYzGJM9HpXeTznyVgJWnJvEyOiXLnTPMZGQQ3VLkpZC2DyQbR48HN4b+?= =?us-ascii?Q?IOC5cf9xMQrWTqEls8iARRWV2ZE2BW3iOPwZnGOKEon8l1nPERWjYBVsUtjo?= =?us-ascii?Q?5CwuZXP7qcFzlFfSEmMup6J5iOs0xVLGPFMgimxOlt5d5U3ZW4gMIieIgRtX?= =?us-ascii?Q?l5VlGbJgtPehwKnB0Cjh/E1WrazMAfLW2RMxv0jupW4SYI1K/yZ3DBSxdTdO?= =?us-ascii?Q?iIt8Y6qiCE/j2dC10CAkwGwMoQUDjRIKcSuvzoJvlZD+r0j9lG0b4BV+Dnl5?= =?us-ascii?Q?DXln0JvtvjbErHzRdpZXXEYn3arUd3pPh/2ihFBONFOV8S3i3OGK78pfmYCN?= =?us-ascii?Q?n8v3TmWusT6xPTp7GtiALyOU0n9O+oqRiDYPYEMNc7d2QRcik1onwMTsmSik?= =?us-ascii?Q?TrUh/R6Ru3d/d/90VsrT+CCiRToRsN5qvOrSkwo0YfQFSNOG4CYU+36DsRIs?= =?us-ascii?Q?2290PiLsfuTEgNoNIWSGmTSNZnGmHLNWQE8ch0jd3slKrKg/GTia7c1RHdFa?= =?us-ascii?Q?oBASPv0Is6qX3fFn+mQcsL2d0jT72uZynokG7MrWapbRzwU2HwF+/Hkv5Xrw?= =?us-ascii?Q?eyQAkXjTKujQIlzwDyTd5QA1+ptcdBq4S8Hn0yRWqsiwh18ioWlE7fOuQREH?= =?us-ascii?Q?TmYqEGd8HhhtPKdnOM7AlUs6nb1JbuRsllBfeTS2dJo7GIDVju6dDE18ilag?= =?us-ascii?Q?2QqFO5tOuGKazDkux26uQAZvMZfhx5lT8RtXUImOzCF5ug0VoBTn8tb9WUdG?= =?us-ascii?Q?937/VRT03ZzLXtrHWJrQ4efpDn5VcH8X5Hafp157Knex3Frbxzm/8S+xxlcT?= =?us-ascii?Q?uyXb2YRCGi2nTHN6zgS0+6j0DnWWV/KkWpb9JgmgO30Oqez29EPBNL9yG5E9?= =?us-ascii?Q?bxHiZrgXJ94u1jiP3JOuvVYN/YjTzJ08?= 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)(7416014)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3yINlQJFMmj4DIUNVwCLIiiFEzmG9vTulSbOIzg4Vqx8MTxScyXf4almvTsi?= =?us-ascii?Q?QTL1UJgJ2f5s1t1iyz7qTOr+x0bRXJd1WXskfY92glaLtf0I4sT4Tf4o44nz?= =?us-ascii?Q?apBsTgcMePxADRUlbjVbmyaEr0+mM1wkEL/A0Kqy5VpoM2h/wS7O26Qt+X2P?= =?us-ascii?Q?7AknfMoyxCks7mtZoSQp7GNgNbKglhvJM4a/bflz0bIqY8o8CSdO+efwGy/r?= =?us-ascii?Q?Bi2yO6SpfDQLaF0/aaSVrQ6WbhyU6KcUb3QWLpwR2GO/a7b/kJBd4FCg9oze?= =?us-ascii?Q?Hm9XtwukuF4SWyKtllDvDjtVdfd0td2iry2fs5QLpLETwXkDE7DuwDh1MJeJ?= =?us-ascii?Q?RQgQLhkUE50m/UH3yCLM67/Cu8i+k2di72RM6l6xEnKOl0kloPM/cHgPI5S7?= =?us-ascii?Q?kgLSJagLD1+ziBvL8TOWHBCvR1D+scMND4XMVH9E9vZO3CbhtlAIJ+pST3If?= =?us-ascii?Q?Wzy617q8Wgrx84QzkM9kvvUCsMpqzWbD0/mBcacic+0Te3Rerv/knV8bDpsk?= =?us-ascii?Q?+RCwbqYjWWX1rArZDG/tugP08Nf8Ist9VOyq+IlGqyfvdCJlXjPOqHXHZvfL?= =?us-ascii?Q?6WFXKINJm2Tc1vw/UX8gY8hVtbHWC/zoiPjVbEU8v8MM4WY5MYQFCplMYf8a?= =?us-ascii?Q?fBdqX4vMjs7wBrNVBwugdJTjafKvscAz/wbERsvxvD+wj21k9sZeRDdZtSOs?= =?us-ascii?Q?MwW7nFN3JfHwfdfdADyFJVICTFG1HJFmPt546d1ZN+R7DYwG+rUykfbKwuKh?= =?us-ascii?Q?7pWMHnfglZSSK0DSl9k2iPWLC9XrvQBeX9d+9nHAxwyv5uaNYWqcW6VjuOMV?= =?us-ascii?Q?cbsDdEE//jFN8epvcqLmXDskpRL3DGTGnon+y91XIFRxOSmW/55D+iCbWb4B?= =?us-ascii?Q?Ms6pZlBL9VF96FSGs4VWNPEuaNCSy+qvcp6q5UJIkq0qqcAoUI49sqXnI9sm?= =?us-ascii?Q?2hyFaPrNXQAzBGnHTxaMN2oUc+Ulz1DH/z04hJKsyk86k5/POMoWakzc28Iu?= =?us-ascii?Q?Hici/Ianr7j2nFkhVPQYJ9IiWd2MG70arq5JSgkEBWHOVtmv+L8gpuYGP15f?= =?us-ascii?Q?+M1s+kbhVQ+UFGp7+ieLfJAlFIpEDFoTIPDVkekShayhHr0KzanIP9hsNgyf?= =?us-ascii?Q?0RfKa7dyFE4qhJEHpXfS/yeE3H275zXTQh8KLqGJ6uTjkGRab4JFHuyG2dwf?= =?us-ascii?Q?eDbeyTuURF5zBooc7IsQovEJJEPaQdQ92YQuiNLU2vSzYdXr3Pcg/ertQOp3?= =?us-ascii?Q?G11lSDZGXK+I9Di4qBOccZUiSJQYyNmHT33Wy4QusuR9Hor2oJncS/aYKhfl?= =?us-ascii?Q?F/Jl3Kse/kFbR9XU9bbAcg9mZpTRg7YA0ZI1Am6TkksLHspTy4AYyojlwwDn?= =?us-ascii?Q?r9onuoxKWsPwJmlNrLlfKSzLTlORNsKYso+lYi0U8nGJlMOHnGAb44RmYj0C?= =?us-ascii?Q?gJsw8uWrJpZZpZ6Chnrungw6KJyCz/YSbBgZIG3FsAO31ZKl9chO6Q/EPCWU?= =?us-ascii?Q?mMoCDCge95X5S1ghtsY4TVbc5M+L6OqWF/8zGXWdbVoNzyBlLPoSMVvfmzea?= =?us-ascii?Q?HNrEwbhX2ADTWghx8VBhdPk5GPpDP1s3owaJRpUEfZsO75pFkpsKFah7yP08?= =?us-ascii?Q?pw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 4+aP0lmTnMio8Ow973LthBb0XTP81IjCK3+irEXQsjmY7k0MLuN7+h14QW7K95yUGPfzF4yo5FMMx8AQWn1qn67QBkn/aGqN3R3paGKXBBZ8oauu7RqQUq3LjRgVPw5/Iq57VduPd0NUQtEe5D3uiz5zyvDOux/YOPAlT+DlXiJlpAf1B1TNuVwvJvwxfMrotl37LYPJhsgZlsF+uOqNjrqgiatX4WssDak1Pd5tUuri+Nu5bjyZLM1HavxWXf71pLVXt1aMq50/xR9c7Z/T0gQI4qswtVmXp/MVkVOatnttke2PdgU+FZT4nHV0YXzaojdVD3yCSjWONlWFKXpMBIKVmKXK6fAi36K2jfRnkDRWrrO0HExtA8TWzJMupy1/KFtQIJd87QmEKlNSqk4bTW6a9boYncwXjbvUrLtjttwtODLhz6ACINxl/hAOAC7J+8F43pG9mP3jJnlsUowc9Z8xgV9Nt6AqHzyGKRcDqCRCY42qiRzb/AumgVfG9kLUuZumRuIgvNHk6lqhVQPxL7JUPc95bLhp9KfDgKmpRHTlw6nCMavrGeHnXqTXTFkzgOvM3jQTodboBCmr2lXUPdAsZl540DQP5zablyN4eZ0= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1fa4aec4-b3e6-40bd-d22b-08de12d0daf6 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2025 07:42:17.0519 (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: /uJt1cqLFDF1dvcrPbLe3xkFJ3sEdtv4YWP2q8SnACG0Srb8bl/NK8cdSUbYMJzIOOV8WmL94f9wjf8aMKRIg3gZqlApJdDCzz3+Ld/llVM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB6716 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-23_03,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 malwarescore=0 adultscore=0 bulkscore=0 spamscore=0 suspectscore=0 mlxscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510240066 X-Proofpoint-GUID: rQ8M9PSRW27JN6ffzOru9tLbKUxwFRbP X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIyMDA1MCBTYWx0ZWRfXwA8EEKnvuFrD owibirGyRxyKkvYLCa9eSZNB+WLOUZbqYxzAYROBP1aojoeesNdeQMprNz2H/J1yH1OGxsZ6ebZ 5xuTTQ/Lxwvt/Fo62BvPhipFT7bna2iGymel8TYwSW4ltYfUCWqPV1oVuSTCnuhNdtiy9nrtNC2 V0m1tbcaulIkrop3dXlqmBTjuHDbAvS1Prc+aeBnFaVPHXkVHCkeUypU81XlqY0YdUxB++LQSou L91VVJxxXLacgKPo5mD7+Xp2Pa57Eg6JNBdCRTjlA8nFvZ4vjMBWOnreaU9LLJh2J0k74mjIEpn y7u1LEdbXf/FoDzzCYMt6GjGFBlKBeup52b3Uqeofi/y/s8frWGUTsDhkmA0ZzQL7fOzY1vARdU 86enaTDaBIyaGglgxp0Plfd0Lr2g0jvPd20+V+vHYkQWsrGkXuA= X-Authority-Analysis: v=2.4 cv=OdeVzxTY c=1 sm=1 tr=0 ts=68fb2de0 b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=axU3H-fZgswgVZ17bgAA:9 cc=ntf awl=host:12091 X-Proofpoint-ORIG-GUID: rQ8M9PSRW27JN6ffzOru9tLbKUxwFRbP Content-Type: text/plain; charset="utf-8" Referring to non-swap swap entries is simply confusing. While we store non-present entries unrelated to swap itself, in swp_entry_t fields, we can avoid referring to them as 'non-swap' entries. Instead, refer to them as non-present entries, as opposed to strictly swap entries. We achieve this by renaming non_swap_entry() to is_non_present_entry(), which also adds an 'is_' prefix for consistency with other similar predicate functions. Also update comments accordingly. Signed-off-by: Lorenzo Stoakes --- arch/s390/mm/gmap_helpers.c | 2 +- arch/s390/mm/pgtable.c | 2 +- fs/proc/task_mmu.c | 2 +- include/linux/swapops.h | 21 ++++++++++++++++----- mm/filemap.c | 2 +- mm/hmm.c | 2 +- mm/madvise.c | 4 ++-- mm/memory.c | 8 ++++---- mm/mincore.c | 2 +- mm/userfaultfd.c | 2 +- 10 files changed, 29 insertions(+), 18 deletions(-) diff --git a/arch/s390/mm/gmap_helpers.c b/arch/s390/mm/gmap_helpers.c index d4c3c36855e2..2c41276a34c5 100644 --- a/arch/s390/mm/gmap_helpers.c +++ b/arch/s390/mm/gmap_helpers.c @@ -28,7 +28,7 @@ */ static void ptep_zap_swap_entry(struct mm_struct *mm, swp_entry_t entry) { - if (!non_swap_entry(entry)) + if (!is_non_present_entry(entry)) dec_mm_counter(mm, MM_SWAPENTS); else if (is_migration_entry(entry)) dec_mm_counter(mm, mm_counter(pfn_swap_entry_folio(entry))); diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c index 0fde20bbc50b..0c795f3c324f 100644 --- a/arch/s390/mm/pgtable.c +++ b/arch/s390/mm/pgtable.c @@ -685,7 +685,7 @@ void ptep_unshadow_pte(struct mm_struct *mm, unsigned l= ong saddr, pte_t *ptep) =20 static void ptep_zap_swap_entry(struct mm_struct *mm, swp_entry_t entry) { - if (!non_swap_entry(entry)) + if (!is_non_present_entry(entry)) dec_mm_counter(mm, MM_SWAPENTS); else if (is_migration_entry(entry)) { struct folio *folio =3D pfn_swap_entry_folio(entry); diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 1c32a0e2b965..28f30e01e504 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -1022,7 +1022,7 @@ static void smaps_pte_entry(pte_t *pte, unsigned long= addr, } else { swp_entry_t swpent =3D pte_to_swp_entry(ptent); =20 - if (!non_swap_entry(swpent)) { + if (!is_non_present_entry(swpent)) { int mapcount; =20 mss->swap +=3D PAGE_SIZE; diff --git a/include/linux/swapops.h b/include/linux/swapops.h index 8642e590504a..fb463d75fa90 100644 --- a/include/linux/swapops.h +++ b/include/linux/swapops.h @@ -645,7 +645,18 @@ static inline int is_pmd_device_private_entry(pmd_t pm= d) =20 #endif /* CONFIG_ZONE_DEVICE && CONFIG_ARCH_ENABLE_THP_MIGRATION */ =20 -static inline int non_swap_entry(swp_entry_t entry) +/** + * is_non_present_entry() - Determine if this is a miscellaneous + * non-present entry. + * @entry: The entry to examine. + * + * This function determines whether data encoded in non-present leaf page + * tables is a migration entry, device private entry, marker entry, etc. - + * that is a non-present entry that is not a swap entry. + * + * Returns: true if is a non-present entry, otherwise false. + */ +static inline bool is_non_present_entry(swp_entry_t entry) { return swp_type(entry) >=3D MAX_SWAPFILES; } @@ -661,9 +672,9 @@ static inline int is_pmd_non_present_folio_entry(pmd_t = pmd) * @entryp: Output pointer to a swap entry that will be populated upon * success. * - * Determines if the PTE describes an entry in swap or swap cache (i.e. is= a - * swap entry and not a non-swap entry), if so it sets @entryp to the swap - * entry. + * Determines if the PTE describes an entry in swap or swap cache (i.e. is + * a swap entry and not a non-present entry), if so it sets @entryp to the + * swap entry. * * This should only be used if we do not have any prior knowledge of this * PTE's state. @@ -678,7 +689,7 @@ static inline bool get_pte_swap_entry(pte_t pte, swp_en= try_t *entryp) return false; =20 *entryp =3D pte_to_swp_entry(pte); - if (non_swap_entry(*entryp)) + if (is_non_present_entry(*entryp)) return false; =20 return true; diff --git a/mm/filemap.c b/mm/filemap.c index 893ba49808b7..1440e176e124 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -4553,7 +4553,7 @@ static void filemap_cachestat(struct address_space *m= apping, swp_entry_t swp =3D radix_to_swp_entry(folio); =20 /* swapin error results in poisoned entry */ - if (non_swap_entry(swp)) + if (is_non_present_entry(swp)) goto resched; =20 /* diff --git a/mm/hmm.c b/mm/hmm.c index a56081d67ad6..66e18b28a21d 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -274,7 +274,7 @@ static int hmm_vma_handle_pte(struct mm_walk *walk, uns= igned long addr, if (!required_fault) goto out; =20 - if (!non_swap_entry(entry)) + if (!is_non_present_entry(entry)) goto fault; =20 if (is_device_private_entry(entry)) diff --git a/mm/madvise.c b/mm/madvise.c index 578036ef6675..a259dae2b899 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -248,7 +248,7 @@ static void shmem_swapin_range(struct vm_area_struct *v= ma, continue; entry =3D radix_to_swp_entry(folio); /* There might be swapin error entries in shmem mapping. */ - if (non_swap_entry(entry)) + if (is_non_present_entry(entry)) continue; =20 addr =3D vma->vm_start + @@ -690,7 +690,7 @@ static int madvise_free_pte_range(pmd_t *pmd, unsigned = long addr, swp_entry_t entry; =20 entry =3D pte_to_swp_entry(ptent); - if (!non_swap_entry(entry)) { + if (!is_non_present_entry(entry)) { max_nr =3D (end - addr) / PAGE_SIZE; nr =3D swap_pte_batch(pte, max_nr, ptent); nr_swap -=3D nr; diff --git a/mm/memory.c b/mm/memory.c index cc163060933f..8968ba0b076f 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -847,7 +847,7 @@ struct page *vm_normal_page_pud(struct vm_area_struct *= vma, * @ptep: pte pointer into the locked page table mapping the folio page * @orig_pte: pte value at @ptep * - * Restore a device-exclusive non-swap entry to an ordinary present pte. + * Restore a device-exclusive non-present entry to an ordinary present pte. * * The folio and the page table must be locked, and MMU notifiers must have * been called to invalidate any (exclusive) device mappings. @@ -931,7 +931,7 @@ copy_nonpresent_pte(struct mm_struct *dst_mm, struct mm= _struct *src_mm, struct page *page; swp_entry_t entry =3D pte_to_swp_entry(orig_pte); =20 - if (likely(!non_swap_entry(entry))) { + if (likely(!is_non_present_entry(entry))) { if (swap_duplicate(entry) < 0) return -EIO; =20 @@ -1739,7 +1739,7 @@ static inline int zap_nonpresent_ptes(struct mmu_gath= er *tlb, rss[mm_counter(folio)]--; folio_remove_rmap_pte(folio, page, vma); folio_put(folio); - } else if (!non_swap_entry(entry)) { + } else if (!is_non_present_entry(entry)) { /* Genuine swap entries, hence a private anon pages */ if (!should_zap_cows(details)) return 1; @@ -4646,7 +4646,7 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) goto out; =20 entry =3D pte_to_swp_entry(vmf->orig_pte); - if (unlikely(non_swap_entry(entry))) { + if (unlikely(is_non_present_entry(entry))) { if (is_migration_entry(entry)) { migration_entry_wait(vma->vm_mm, vmf->pmd, vmf->address); diff --git a/mm/mincore.c b/mm/mincore.c index 8ec4719370e1..61531a7cd8b0 100644 --- a/mm/mincore.c +++ b/mm/mincore.c @@ -63,7 +63,7 @@ static unsigned char mincore_swap(swp_entry_t entry, bool= shmem) * absent. Page table may contain migration or hwpoison * entries which are always uptodate. */ - if (non_swap_entry(entry)) + if (is_non_present_entry(entry)) return !shmem; =20 /* diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c index 00122f42718c..04fab82a1119 100644 --- a/mm/userfaultfd.c +++ b/mm/userfaultfd.c @@ -1427,7 +1427,7 @@ static long move_pages_ptes(struct mm_struct *mm, pmd= _t *dst_pmd, pmd_t *src_pmd struct folio *folio =3D NULL; =20 entry =3D pte_to_swp_entry(orig_src_pte); - if (non_swap_entry(entry)) { + if (is_non_present_entry(entry)) { if (is_migration_entry(entry)) { pte_unmap(src_pte); pte_unmap(dst_pte); --=20 2.51.0 From nobody Sat Feb 7 15:21:41 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (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 D09C32EA75D; Fri, 24 Oct 2025 07:43:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291808; cv=fail; b=O7F3I/SIcQzTTAnba0OUUo6Mi4mjGLRTP3rI0if1+hUe3A6wl6u8VWYjckr8Nex6W1LDeFT+meZT3sZZr50DSAHqM8oGQu7FvjTWJjmn5tuxbTKw3eRQb5RxUBw8oticyDzpiKG8kBneesV0Z83na68RwcB6/OpiFQPeNjX9/+Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761291808; c=relaxed/simple; bh=El8T30aOBq+Us0pTbWg/3iJpWuz0lqL5bTGjbDxaAck=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Ouj92X0W/T+6pOGFEyZYflyLlUNi0Z+iTCyhO4JdBuJnzI6f/vrh8B0JAeMFdoOdwpKWDO5oLfLL9A5ba/KR57qyvSnjhR2SatFPFJx84yU93LjwVG6ezXAWsZrvAlAKP72AMKUqLlGqxP4HIn69s6C1TYLiql8UfEWP5ZNEMV4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=pR8ma1dV; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=SiTCmjBg; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="pR8ma1dV"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="SiTCmjBg" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59O3NO2Y029133; Fri, 24 Oct 2025 07:42:25 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=PZIf4iwlsRTuR1TUuVn87GVYdvfE10OBNGyBDmXDRTs=; b= pR8ma1dVIOsYNCwQIf0ubLupLG1Rz03T/3U4P4MkdG8BYttWV1Sij/KC0tuUg5ky L8Yeq8z2V94ArVoWZ9Arlcbhf2fiHMEjsAsVALV5Ag+x+W+ocVliZNIKI0Zxs+XP Xwil1M5WZW+h9KxfVMD3tjUPGBT/G2Qt34O+Y0/aCgXo3EU1h0UfAEYZVFdYYH81 1r/enF0o/3tTZrbtGfrjGd0Sge9Q47+pqTQchTuqCjhDvUSaMdTJ+BtfVmJ8uHjr blnQ3LvqmoFBB4KWTGaJs5LhCQGRsjqHC0Tz1f98o8DVhz3xUw0MpGMqwBbKynCc G0+PLpBSYBQ3fudIkd0OgQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49xvd0v4jx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:25 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59O5cSMG035805; Fri, 24 Oct 2025 07:42:24 GMT Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11011051.outbound.protection.outlook.com [52.101.62.51]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 49v1bgm583-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Oct 2025 07:42:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=a7iF8VR4bh5b1qWCdAQH25o80Uzfz7l56lHJ8md4TEp43prxvLl41sIl4MsfCclkl8/41yW+053Sf63dmJl29Ou2ByI0TmBXBMEo/SSMne5iKkSGXLI4eNna1YtstzjZovXWNZyI07KbvGZYAoK2IzMoKQE4MCUxiss97y02lgNOF87xbw7U1g/lAtQ48lzPOPYBsERABt6jQGVedKGiwHgpLHSPxWQn07NKcofRVfUQbciiJtB3dlOUK7rLE6Vp98QIZMGmcn4THYN/u5qdX5Mz9oGBZDdwfj82OFRzWj8LbfW7WigtLZRECmS+veHxS6/xZL/kGvx3U4OtiejLKQ== 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=PZIf4iwlsRTuR1TUuVn87GVYdvfE10OBNGyBDmXDRTs=; b=FoC14kE9K6G3iIn3BWAtIJJnPXm8730nmFqBA1A7Y+O5Bw6Bf+dVKWgwwqSGwVgQVZIH/FVEd3daRpjcyXFNFd/ETUeqMsT8RPD7XE9ud4juA3NQ2bxbzFDXNhO2HFc63x9pJallxtkyZsSIH57rigu/9WehgThkpFP06t9E1UIa1l92C6SCT5ZO3qqQMcKfj/NmGL4Wa9KmdLByIPNaVUAWiZZr+HoQSmzB2S6MFmCQTIqT+yMuEt/Q0yXMP85aeAokTzUMaYKV8oRnjeCBzkqAxz1kebAsvqoIfp9meAGtzUnJR8abVPCDxk9Mcm3v0ybQ8k8HbG0tSZ+6Ug29Wg== 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=PZIf4iwlsRTuR1TUuVn87GVYdvfE10OBNGyBDmXDRTs=; b=SiTCmjBgR5/oy7w1IXSzYOPZnrm4G5Ag5P3g6LZC7eqWYZCBZsLkXUWNyvju8tmkUJJoOqD/m48QiPa9gzzeoEvg+zN6fA/nOcHtWRoL92o6GdMOozKBuCG+ia5L1rpn28NcclEuajXj8G3PdYPLrq9WVDOgPsGDGKpUNiVBJpA= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CH3PR10MB6716.namprd10.prod.outlook.com (2603:10b6:610:146::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13; Fri, 24 Oct 2025 07:42:20 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%2]) with mapi id 15.20.9253.011; Fri, 24 Oct 2025 07:42:20 +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 , Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Kemeng Shi , Kairui Song , Nhat Pham , Baoquan He , Chris Li , Peter Xu , Matthew Wilcox , Jason Gunthorpe , Leon Romanovsky , Muchun Song , Oscar Salvador , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Pedro Falcato , Pasha Tatashin , Rik van Riel , Harry Yoo , kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 12/12] mm: provide is_swap_entry() and use it Date: Fri, 24 Oct 2025 08:41:28 +0100 Message-ID: X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM0PR03CA0066.eurprd03.prod.outlook.com (2603:10a6:208::43) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|CH3PR10MB6716:EE_ X-MS-Office365-Filtering-Correlation-Id: bb927ff2-0f16-4ab0-8643-08de12d0dcca X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?V/GnxFDlhpgCp0Kp7pjJuTHK3eqVX1HDt1CvfYKRS4d3NU5db8dJjv0w93++?= =?us-ascii?Q?1tSd/3cDSh2hx4XzDaK6CmLHf++hIO9GSukAN+GS8Qlm96Bhwod8jXGL9g/H?= =?us-ascii?Q?FheP2b6r5tCHJmXLZuafxEcnCBb8GuAeOUWJRX+jorq+gpUxyn2vB8ZKJp/u?= =?us-ascii?Q?tqdQQIFJP57fZP3XSOMonFjah89W9112jHKeU3yBEVuAJZfh3vL6ATPzI7nB?= =?us-ascii?Q?7arLnU3odqgs8FQd8zKdsUP8VbUBwWJFHZIgVFIU28oVzbtkFGiCYklJz6jf?= =?us-ascii?Q?QOuTvsYP+SvpGk4EPPwc122zAPYJL+/+mLL+jHlzE1iyN/65SKzfPvxe8Vrt?= =?us-ascii?Q?Vt2dXvqmEDfhsKBQPbYPd7oPRn+60hqV6wSp+mdQWtUlaPFa/7I++ilNoQko?= =?us-ascii?Q?iDw1tBASwLyo4BWLk4QWnr4SJkbup600FlW+mrgXXM6ETLPRTosVqw71BB/L?= =?us-ascii?Q?6NrEKPJDShKTMoIqO+UMszbjxjfGKxHlaWXApRemDrHfo2jRawxJjsoYrpD1?= =?us-ascii?Q?1Ygz3ju3wVvRtZ47q5h8ec8XHGh6jc+OKgkW3lo5ocvQzoDYZ3eUvUQda8To?= =?us-ascii?Q?c820PpLia18Idp2Qs+11amyl0CvVuZNhJNoyITe1Y7BwX0gX1QhJDAxpMEeR?= =?us-ascii?Q?NG3IurlyeUI0Eo5jhvk2TUIoKqT4BP2eWySJoaHuO5ECgrJGlPC0AJsNsLS7?= =?us-ascii?Q?Fy522ZzxD6FE+626mGGPEJa0caEok5FGyRfIouFbAwZcP7j8IDv9Tu4OC25g?= =?us-ascii?Q?qiFWr2jPbU1fhVQxa3SlkgwFN8tRRebSBpLch2bdrhGQX0G8w41FMdI9HMY0?= =?us-ascii?Q?nxSs2vJedHYxIOuqJh5PQshblacqSF2sEAZQfOuSdV0R4hssTC3+cHj0pNio?= =?us-ascii?Q?S7puqq2hCJfdPpElIavduA3LaMBWsBWooVxtq90ojqeOUmO6s48obHwXWhTs?= =?us-ascii?Q?TJ+bdrwiT1xzclVd2j5QeMbBT8OmbGclF/96jsDXbIl2PBCaJT/UsTvswbZJ?= =?us-ascii?Q?Sv2yrErG3f5okbvK1LtEj/iBfl8RvSBeLJeZaZ+IXGo5S8Z31zyBcioLPZbl?= =?us-ascii?Q?BnV1JjhUOK7litCvF8kOD6HyDnLmrSvivGH5FOnRBUE0rZd/M5DXlc9QiVVv?= =?us-ascii?Q?FE3VRaK9drUwtRY59WGQFp9BW5yhsKa/khI4XI8SY1Z4iSDIJrKcD9taVXKQ?= =?us-ascii?Q?6EfZJ/L9K8lu3gd0fA8mUE+pQrcA8OYoV/5ja9LR8YTT0QESKcdBybKuIF8P?= =?us-ascii?Q?R/qa/Fc+Tjm/m77KvsSuVhE6nQ5Ko4xqUPbTWgdj/U6jYfHR+hPFRUaVrbq+?= =?us-ascii?Q?XZ6PuN44A/EKTGPGbMY7Rjdgp2ksNHN9DADddC0Kb00utQtX3OVYIDJbAmhw?= =?us-ascii?Q?GzrpfhywddEMmdDoemiCx3fqdil+gE290QjNRBbZr3xy8Zj+jqKYVbCMcsbq?= =?us-ascii?Q?8tuWAaI0JlsPkyH4TvbnG+/0nX9kHZ+P?= 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)(7416014)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3KLTgfIPEG7NS8j6jRIrELk5Bpm9KI/1QBDCykpS88BEf0dIfrIPahnyZo/M?= =?us-ascii?Q?Fn9AKfVLO1l17ZUJ9RymmIvNvUw0/IVJm0JHK6dhjBsCjnTn1EzYQOa9hGHr?= =?us-ascii?Q?orYNEub/kVRK2n2VrYPlTf2bdTWSgDfWBqsk4HPj5MdlRjP2jEvw0xojgTLh?= =?us-ascii?Q?kLRexZPe1K3sdAMAdiJvLBPp2zGyzD6QmB+vzG7rDTikgB1Y7A+Uqa6/lV/k?= =?us-ascii?Q?oIhM7szgHdcFZMQQo8TGDMSmjYFdXj/VaBXV/EYYTairhLWwIH4GLnOB7HYz?= =?us-ascii?Q?KYlz+rnFD7Cu97DabKUeZ/yARWR4QL4OKFB8pYFzI+GBiJG4EW1tmyfRpNsm?= =?us-ascii?Q?qfz1w1IEwkr5iotUMGV52RskPLk3hjQtqPtGyaPV5qB/i2ieFuVAP3JOyWbC?= =?us-ascii?Q?zSkGXkDTeXPRkv1HrWlX0/SjmhkahgWUucbPzGPh9QA308iH9GfH/vA6T5Uc?= =?us-ascii?Q?lWRGUf3753qK8k0QZA8FPCvzypnPK2ebyrtw5gKprc0ZATWTA7lvBZ1hdgTl?= =?us-ascii?Q?8xTvEkE+YWvNx6KJ5yvqRa6Qu1E+bl3rooTkhWX057vKuc8DgKVzPmx3ZIHd?= =?us-ascii?Q?p2MNTXyyI3odS4WciScziMZlpbAJkoi/+1XLWzj5qpqqAqznEKBKn6wdlysC?= =?us-ascii?Q?6Sv/FQR+27eOBUS/SrHSe70fJek76qAWc1skr+w6sHJoHyHV2Ota4Noviu4c?= =?us-ascii?Q?3hegTvK2m3fzzsk+4aj4uB5bCes1aBHitioM2XYShD4O4CpMyRu6AyKAACes?= =?us-ascii?Q?fVv3Z5QjeyVap2j/YxoUSRwQG3cmzc2gtdfatgzMTPmyUsxoh0CExQqbASMR?= =?us-ascii?Q?VGyRVS7C65uuCB1GIpsVaVyzrao11oIl6Dxb5xrYM2t0JG830AMJPQkp4V0z?= =?us-ascii?Q?pkgyyE2ASA6UpKG5gLMTtNic3kSg7GtrIKdMwCChMbYvryVexEclf4CURins?= =?us-ascii?Q?M4XIVmxx436rb51xXsneV9G4z/BFUcowqVY358/R/YnYy5hDRJxvJsJNvE6E?= =?us-ascii?Q?NvTsVXXrbQR5EWlrk7wa6HAtB9OQt/WOjVZpg3abJUhVmrQ0nNweIEMgyTdc?= =?us-ascii?Q?bmhVaJtBWk3QwilvSf6EDOOtFHV4+WsHTR81gz8ZgI4AvK+OFTpYK0RQkbEo?= =?us-ascii?Q?mgYaCeUMMYoDQ6ixgh4mGqGeGTwncAakvlqiKg9E1GKBAmv2mLFUTLLHLKUT?= =?us-ascii?Q?hWcUb+Ib/fW1aLKhOE5Ypu5sTg4TJkzh5sYb2xAHW6+wFwSduYUxCsBlK7ZT?= =?us-ascii?Q?bgInA6uWIVgIu4wh/Y6haazc3J2y1Vpk6Rn754OaMQfuPzMjLDAOkBy8eWVs?= =?us-ascii?Q?GwPXdo2RtZbIILaqiF37PKpm9qVVFwwW6KOAeGVPUXGEnAAkDhC1Eln5OalI?= =?us-ascii?Q?NZDRLJrdDLZhgTTidf26ayDYGfvh+uP2K/0wFWAmjFXynp95eXdcEZYo40mp?= =?us-ascii?Q?KA3I0iwtSovdYxHpvlhC0EGKezxF3f8+zs5/DhiQwBaCMDLHAHx7TboH8kuE?= =?us-ascii?Q?WeRhGld5FoBBTPAHBnAqmG0ABgut+vVvTS22AlidiUo0mNCZFBfetkajqdYE?= =?us-ascii?Q?9+qvx2s/oPNCgXo/jiQ74DRyiJBRGWNfKFZXYk5wEGNIatSUC0iJ8wy4wMQk?= =?us-ascii?Q?EA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: nZjsstAXD54pliqC/0035YtLN3kPEZGafbG+B/rl4/f+rVr64MEOVBElJNV5EjaT8g5t0YHm9GN0AILkRFbF1rVs6JPt5kMSRGpIbD6fC5Hloc3Yg/3OP5QDFbDvtJwPFdVIyfbHpNl+WnG4JDhOpBOplmBM9dWU/NpUKj7aXaI2FpVBtkiqBFh0b7ALXvxYX9/V58bNRjUEXYli9b237ZAloDJisWFNO96CsdlNDe+Gqr7NurTJA/p+2KI0Z9zYgTbDsx6Ezw71KZ0ysl5YBiuM0OGCEt7AT5p+fF+UcRZyo55TACMkj2631oyv408EezHnBbS11NF3BCNK4W3x1U2BlkWUJGzGIw3JKk/1JY4nZGa+09N8ImFfcPI9IVguWy3TMyUFVkeaepV0eTt10MaRw0i3iVCHoNWYH+EZR6UaizGwY1+4wivWtvm2832xdOAQ2F/VUoQSjcrbLMZ7l5HvaaSTJVb+F2p65EXSGuu3k8/LBlgPJzRmbm/uXk05+qQYcWizvr+ckOwS02pEGKT34DqjsTWPCAPPzEts+BUiQViUZ4SMEY/vzooC3nkZuHvwl1DQzGDrMN6D+Z9wMHdjuaHKzGRNsCvljKUyTSE= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb927ff2-0f16-4ab0-8643-08de12d0dcca X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2025 07:42:20.1677 (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: qicx68hm6KdEPmtjxhi/Zjkz2ngtYMayFahLb/g0S2/DNVap+5QcZ3G5vQBOvSooZGZ6nGc1nam6HKNObEoCB9xzAtBppBGcEtfO3IjA5nk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB6716 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-23_03,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 malwarescore=0 adultscore=0 bulkscore=0 spamscore=0 suspectscore=0 mlxscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510240066 X-Proofpoint-ORIG-GUID: naydow1zWbuWHjnXnw8aDB_nXUnhTcCu X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIyMDA3MyBTYWx0ZWRfX10fivsBy2/bB 6RMy2zho4r39umkoYsBv8bTn2HyLJCKfJuauRDWLELGM54yUZsBqDAImJ+VXfTd2CfryaTBR9mp xkqJ4zQe4I/ILgLZ8AfBvZh7vsl72wNVgeCPAu4XVKnV5RjL7HscZcH/uXL8+03TrMIJVFcLuOm e7AzdoGtdxVb027GN0+2XIAd5wuMj/SZbKM31FDDnXVMaQWTEQ4PT3275skgeeqeb01g/v44sBS B/0DCLYykTrCHOQhNeLgJJQoY7TWOwaDLc3N+5wIAPgkHMGtRUkXUleBw5x78R1wGNUt/9VLjbp X5P6nB+B2FQbp/o3jNCxZeWxQssUTMt/R/b3KUVrKkJyrXZUgHI5HL8HlYlYuFfvEJ6oIxQuw+3 gx4Q3ZPczSvFkHO5ifbqrS+kFug11F4hWfoUNX07swcZmHMoZ6g= X-Proofpoint-GUID: naydow1zWbuWHjnXnw8aDB_nXUnhTcCu X-Authority-Analysis: v=2.4 cv=D9RK6/Rj c=1 sm=1 tr=0 ts=68fb2de1 b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=8AgD5g9lTelieRX7BsgA:9 cc=ntf awl=host:12091 Content-Type: text/plain; charset="utf-8" Previously we have been in the insane situation where people check whether we are in fact dealing with a swap entry by negating non_swap_entry() - so determining if a swap entry is an entry for swap by checking that it's not a not swap entry. This is really rather sub-optimal, so rather than engaging in this dance, and now we've eliminated confusing is_swap_pte() and is_swap_pmd() helpers, and renamed non-swap entries to non-present entries, we are well placed to introduce a new helper. We therefore introduce is_swap_entry() for this purpose which simply determines if a swp_entry_t value encodes an actual swap entry, and update relevant callers to use this instead. Signed-off-by: Lorenzo Stoakes --- arch/s390/mm/gmap_helpers.c | 2 +- arch/s390/mm/pgtable.c | 2 +- fs/proc/task_mmu.c | 2 +- include/linux/swapops.h | 15 +++++++++++++++ mm/madvise.c | 2 +- mm/memory.c | 4 ++-- 6 files changed, 21 insertions(+), 6 deletions(-) diff --git a/arch/s390/mm/gmap_helpers.c b/arch/s390/mm/gmap_helpers.c index 2c41276a34c5..222a26d09cbb 100644 --- a/arch/s390/mm/gmap_helpers.c +++ b/arch/s390/mm/gmap_helpers.c @@ -28,7 +28,7 @@ */ static void ptep_zap_swap_entry(struct mm_struct *mm, swp_entry_t entry) { - if (!is_non_present_entry(entry)) + if (is_swap_entry(entry)) dec_mm_counter(mm, MM_SWAPENTS); else if (is_migration_entry(entry)) dec_mm_counter(mm, mm_counter(pfn_swap_entry_folio(entry))); diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c index 0c795f3c324f..a15befcf6a8c 100644 --- a/arch/s390/mm/pgtable.c +++ b/arch/s390/mm/pgtable.c @@ -685,7 +685,7 @@ void ptep_unshadow_pte(struct mm_struct *mm, unsigned l= ong saddr, pte_t *ptep) =20 static void ptep_zap_swap_entry(struct mm_struct *mm, swp_entry_t entry) { - if (!is_non_present_entry(entry)) + if (is_swap_entry(entry)) dec_mm_counter(mm, MM_SWAPENTS); else if (is_migration_entry(entry)) { struct folio *folio =3D pfn_swap_entry_folio(entry); diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 28f30e01e504..d62fdae57dce 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -1022,7 +1022,7 @@ static void smaps_pte_entry(pte_t *pte, unsigned long= addr, } else { swp_entry_t swpent =3D pte_to_swp_entry(ptent); =20 - if (!is_non_present_entry(swpent)) { + if (is_swap_entry(swpent)) { int mapcount; =20 mss->swap +=3D PAGE_SIZE; diff --git a/include/linux/swapops.h b/include/linux/swapops.h index fb463d75fa90..c96c31671230 100644 --- a/include/linux/swapops.h +++ b/include/linux/swapops.h @@ -661,6 +661,21 @@ static inline bool is_non_present_entry(swp_entry_t en= try) return swp_type(entry) >=3D MAX_SWAPFILES; } =20 +/** + * is_swap_entry() - Determines if this is a swap entry. + * @entry: The entry to examine. + * + * Determines whether data encoded in non-present leaf page tables is a + * swap entry and NOT a migration entry, device private entry, market + * entry, etc. + * + * Returns true if it is a swap entry, otherwise false. + */ +static inline bool is_swap_entry(swp_entry_t entry) +{ + return !is_non_present_entry(entry); +} + static inline int is_pmd_non_present_folio_entry(pmd_t pmd) { return is_pmd_migration_entry(pmd) || is_pmd_device_private_entry(pmd); diff --git a/mm/madvise.c b/mm/madvise.c index a259dae2b899..4bf098986cb4 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -690,7 +690,7 @@ static int madvise_free_pte_range(pmd_t *pmd, unsigned = long addr, swp_entry_t entry; =20 entry =3D pte_to_swp_entry(ptent); - if (!is_non_present_entry(entry)) { + if (is_swap_entry(entry)) { max_nr =3D (end - addr) / PAGE_SIZE; nr =3D swap_pte_batch(pte, max_nr, ptent); nr_swap -=3D nr; diff --git a/mm/memory.c b/mm/memory.c index 8968ba0b076f..4f4179eb70c0 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -931,7 +931,7 @@ copy_nonpresent_pte(struct mm_struct *dst_mm, struct mm= _struct *src_mm, struct page *page; swp_entry_t entry =3D pte_to_swp_entry(orig_pte); =20 - if (likely(!is_non_present_entry(entry))) { + if (likely(is_swap_entry(entry))) { if (swap_duplicate(entry) < 0) return -EIO; =20 @@ -1739,7 +1739,7 @@ static inline int zap_nonpresent_ptes(struct mmu_gath= er *tlb, rss[mm_counter(folio)]--; folio_remove_rmap_pte(folio, page, vma); folio_put(folio); - } else if (!is_non_present_entry(entry)) { + } else if (is_swap_entry(entry)) { /* Genuine swap entries, hence a private anon pages */ if (!should_zap_cows(details)) return 1; --=20 2.51.0