From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0D590C5AD49 for ; Thu, 29 May 2025 06:35:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9C3976B00A6; Thu, 29 May 2025 02:35:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 99B016B00C1; Thu, 29 May 2025 02:35:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 83BD06B00BF; Thu, 29 May 2025 02:35:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 5AB286B0103 for ; Thu, 29 May 2025 02:35:26 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 034A4E8B2C for ; Thu, 29 May 2025 06:35:25 +0000 (UTC) X-FDA: 83494983852.26.D92E34D Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2086.outbound.protection.outlook.com [40.107.244.86]) by imf02.hostedemail.com (Postfix) with ESMTP id 2B9AA80006 for ; Thu, 29 May 2025 06:35:22 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=LtggSNE1; spf=pass (imf02.hostedemail.com: domain of apopple@nvidia.com designates 40.107.244.86 as permitted sender) smtp.mailfrom=apopple@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748500523; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=DMTtQZec2GicJd2EchNkWfjbbbyd5gkuscUxAf7Fau8=; b=mlaJ/4BgtPeHvsMfOeSpZywHfow5PJMkXJcDNWtElIUX6B79BqGfEB8VbOb0M52A0U43WZ KPIiKklT2tmDPj7cmE4VARWdtprGC6DekNdfSIqT1RXc2vE8sMXUoZmb59hDCoEM38xLLN C6df+4XM6paASSSFBDajPquj/hwiehk= ARC-Authentication-Results: i=2; imf02.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=LtggSNE1; spf=pass (imf02.hostedemail.com: domain of apopple@nvidia.com designates 40.107.244.86 as permitted sender) smtp.mailfrom=apopple@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1748500523; a=rsa-sha256; cv=pass; b=g9oLGJcIAgYIBKBiP6ZZ2LzIV/xSHcF96tmknU8D9uQveOCps4SIGQL7mcz7ydkdtkcgJN tHCtErb7qJTZL3Nh1E4bXivhqAihaXpmR1Sefxd2udG0sBCfi1M5jynPvS4ysX98pjcqLZ tJc2dawYdXlsg6MKBhQonbB1noq9kgI= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cAdhAFO7m0HK4bY/DtaD6N635Z854S1cWf3gj2U5QzDkH2iGxuTKkuoYbbf3YTqfqwCWosbs//HT+rEjoMCuKejKRpglHW7w5Oh4za4DUJC3QdA7cA5Jm+INSNzuFSTUndy2yUNzk4FQPPUgXiP+kCz3rCmxa1qnMCs9Kl1zml8nU29nnNLdcgLNEpaJ67Wlo34Wyaw5pZYHI9H+N/q/OlkWJQmCgJmDXZlHSNvDVxO1vX70PFmSt9wxGrWnPZ572ile6THxBgpUhDzDHEQBrPvBgCyi/uXXHbOi3adqbxsePS6mU3aO8gi8jxEP+zpbt/iOT+NR8yb7Wu85yZegBg== 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=DMTtQZec2GicJd2EchNkWfjbbbyd5gkuscUxAf7Fau8=; b=Jc9mtpjGdKJRogeTdaTFntOO8Ow60wqlfIdr3IHwvuN9yluWPXAYs/k5UF3evX9rR7EL/cGmk9I20jWS4KTahTSveg8xrBYx7mq5p/Ai7idJw4cKMIbZLvSD0KzTlEJ3bQwNjyq2Dfbiqyh+rT+ykvbGy0QD/3hWHqETkzWsa6Jytq1Sx0s+65fOiMCo+Yg4hMreWvXJJuQnAOfowPEccqBbA9jZ7P/2uz3ia8RlzmE4VXX87SFY20vapr8Gp48D6aAKuunMsDEhIXuMH0cFii0yp8skEopW7XeUaPVpk+ywV1tNo8oOcY0jLbxNb1eqzqjGxSGUDeBAn4uTkG5cqA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DMTtQZec2GicJd2EchNkWfjbbbyd5gkuscUxAf7Fau8=; b=LtggSNE16YBK0me2aY+VIm0rO5GChm20q9vdauEHqJ/9JFrzct7rvIzKzm3tT6seRnvYCdirC7wcVhO+MsZbn0l1QGQcZ6jkAzwOC6o0scrkuDeC184wWECammfqjVPU9TFlSnPN/eDkJ4F86bKjJQPpUfDU+hSGmKC0KUqdBO21iAq1qMo5MGOhqtCsi+j1dg47iJ8jWdsbc2PfAZJeB+kVLaQzveJjCXUbuJq+lAtUMrg7PpdahhEaJV7FQlWjUENq0VnCZBZef/yB9SygeS1Y+zjmXFvJuCCwL91wpbfdsXuIwOU653FReKbfhmFOIl09XxSEj175lXFrKKx31g== Received: from CY8PR12MB7705.namprd12.prod.outlook.com (2603:10b6:930:84::9) by IA1PR12MB6092.namprd12.prod.outlook.com (2603:10b6:208:3ec::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.26; Thu, 29 May 2025 06:33:10 +0000 Received: from CY8PR12MB7705.namprd12.prod.outlook.com ([fe80::4b06:5351:3db4:95f6]) by CY8PR12MB7705.namprd12.prod.outlook.com ([fe80::4b06:5351:3db4:95f6%5]) with mapi id 15.20.8769.025; Thu, 29 May 2025 06:33:10 +0000 From: Alistair Popple To: linux-mm@kvack.org Cc: Alistair Popple , gerald.schaefer@linux.ibm.com, dan.j.williams@intel.com, jgg@ziepe.ca, willy@infradead.org, david@redhat.com, linux-kernel@vger.kernel.org, nvdimm@lists.linux.dev, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-xfs@vger.kernel.org, jhubbard@nvidia.com, hch@lst.de, zhang.lyra@gmail.com, debug@rivosinc.com, bjorn@kernel.org, balbirs@nvidia.com, lorenzo.stoakes@oracle.com, linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-cxl@vger.kernel.org, dri-devel@lists.freedesktop.org, John@Groves.net, Will Deacon , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= Subject: [PATCH 10/12] mm: Remove devmap related functions and page table bits Date: Thu, 29 May 2025 16:32:11 +1000 Message-ID: <32209333cfdddffc76f18981f41a989b14780956.1748500293.git-series.apopple@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: References: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SYBPR01CA0038.ausprd01.prod.outlook.com (2603:10c6:10:4::26) To CY8PR12MB7705.namprd12.prod.outlook.com (2603:10b6:930:84::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY8PR12MB7705:EE_|IA1PR12MB6092:EE_ X-MS-Office365-Filtering-Correlation-Id: e209ead8-05db-4778-c71a-08dd9e7aaddc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?B?eWZBendvMVQzUTJZcEhHVkgwTFo3ZFZPZjYrRlhhNk1ERWRwVDZqRk9lSm1t?= =?utf-8?B?VCtPVTZrU0pMT1lvQnVYNUl4eVVFYWUrSWpDYXN2cWRZR3pnUHptUEpUdCtz?= =?utf-8?B?MnJ2ZExVcnNmTWJqbUtyZFpDeGhlNGk5M01KZlBKS1pkQllycEpEUUtxdVZD?= =?utf-8?B?OVF5ellDR1U2bWxoN29JMHBlUGtDRkFndldjTkgwVFJGckdMSUhraldIcWNI?= =?utf-8?B?UWNMbCtRRnVkSWorU0dub2dHZjZ0Wk5PUjNPZjRFQ3BhMS91czNIbW1DR1B6?= =?utf-8?B?dmF0N1Q1dkg5K0RibzVRYjNmaS9FZ3h2V3BxWlk0NDJCUWhXUEFUcUN4MXlo?= =?utf-8?B?dlpRdURjRm05N0lPQk4yMk9HdzZhUmZYaE9tSXF1dklkTHlRLzlLLzN3RHVS?= =?utf-8?B?Ky9wV0hpcUVkN3ZIQk9vRG1ubW1hKzNOOFk5ajJTRndLeW5VcTJJNExVTkxr?= =?utf-8?B?NHFheHNhNGVFOTB1aTlvODNoQ1BLc3diVjgyd1k5Yi95QmRWdjBpNjByMmFW?= =?utf-8?B?dnc1Vk9LU1ZRWmg0K0hZeDhUWTNvTzF3aEkrQmZBUWE0TktwRzkzUFRXT3lx?= =?utf-8?B?ZUpnS1ZRditNbVNTRTJMN0E0WXBIUzRKVXFBRG9GSWxKaE5CMGtHY0VSMVdR?= =?utf-8?B?d3Zsb3ZsTmxhZ0Y5L0IxSFRIazVIZDlxTW9EbHYzWG1OMnJVazdmaU44TEM1?= =?utf-8?B?RjQvOTl5VXMwa1djcTQ1R1hLZlJ4YW5JdndLeFUyNVlJblNFTVdVa1BDQ1Rp?= =?utf-8?B?UjdNL2Vpd1lHYVlRell2dDRlTjZrYTUwT2xzdmgxR2NnZlUzK1IrV29Yc0pk?= =?utf-8?B?eWVONU9uRVdLR0tvUkl0SnZrTEpKUXBpUFJQYU1xNWhIN1pxMFJMSG5IbUdQ?= =?utf-8?B?aTNVbktXVENRTHlUV3dTTXVnaWJhM2FaQS9RcGg3NlJDU2FwZzZwMzZTa0h0?= =?utf-8?B?OFY0VzY0VTNuQ1pUV2NWTDNuTEtoVWM1Z2NFSWR1dzlPRXd3Ujl6NXFxalJ2?= =?utf-8?B?RVBPb2FVQkY1eHBvU3kzUEcySzY3MGtFUG41RUFSSURWL29vWWFacWhGRUNW?= =?utf-8?B?aDV5NW9CV0FrQUJGbmx1Rm5VRlJsbHNDKzVHb2gvOHFHcy9KL2hsKzFQOEJv?= =?utf-8?B?bTNTWWI2ZGJ2ZVkySlJSdTZEWElHQldpaURyM3JCVEhsQk1Ca3NYTkhJK2ti?= =?utf-8?B?cGw1eHRRS09MM29aQ0FZcFp0TllOTHFOeFR0MGVwUjhYd0V4SldWUHNtSnFa?= =?utf-8?B?YzRVakJDbG5yMGs4aXlOanBLWXNQd3RhM0NaMUh4WFlCdkFJTHdJamJCb3Ey?= =?utf-8?B?dk8zdzdEQ3duR0ttc1p0NGxIWUQ5RkxERHRKL2FDeWNSZEg4WWI5V2FwcndL?= =?utf-8?B?bzdablVkbE9kckxJRGRySjBYYlVUMFFzRnVaRXRIS25sZnZubC95Ulo0ZlFu?= =?utf-8?B?Yy84cFdnYVowMGNDLzhhZ0NhLzdMWDQ0RTJ1cDhQZ0hkWCtyNUNoMldZNE43?= =?utf-8?B?TExCekgwdVlZV2VrTUIvcGg0aE9pUmFZMWJvL2UrTFJLVFE1Q1FKWEphTWxS?= =?utf-8?B?ZkFkUVVHbURjT0FHYnVnN2pMeFFjMVVHOWh4V0lUVnpwTEtyMDhOYUlBZkpK?= =?utf-8?B?YlBGNXNpdkE0Y3FMdlBLbXJBc1o2U0Q2Ny8wOGpZYWk5TFI4NFRaVThpRGdz?= =?utf-8?B?Q1pCb3JNdXNVd1gzbHRzc091Z2NkVmlBeHdnVFpWdE1KaE5qM3ZNWnN5bmpt?= =?utf-8?B?MDkraS90a1dIN2g2S1lwTEtIblVkMTdmVnQ5RCt5UGN3bWxhckQ4T2lvZjll?= =?utf-8?B?ZGFqMkhBczlBRzRrcm5hbmhlZ0xXdysrcC95ZzM5M1JTR1hDSGlLTmVwbHRa?= =?utf-8?B?c1R5R3lDZGg5SE5yMWp3cTVIQ0IydUdpbFVjRlJ3aEZjZTlNOXAyaEJqa3JW?= =?utf-8?Q?qjroTEQyiuE=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY8PR12MB7705.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MGZweGo5M2JDNmdYRmFadDd4dTNXRGN0aVlpOTRGaCtrc0VRdEtEYWF2bi9R?= =?utf-8?B?UXE4TFdVQ29kN1UrSmVKRmZPQzRrWStMcW1iaGZWc3lNYURBeDlOdUU0SUFy?= =?utf-8?B?M3ZzTW5ZNHpzZGJhYW13UXM5RzZxV0c2SlMrbURzS3FMQnQ4NFNoUngyS1R5?= =?utf-8?B?SG9xWnIvOS8vMFEwcXlNL2p1RENpdnJ5VWFkMGRTZDJPbU0zZHh4ci9pUVpl?= =?utf-8?B?cmdBTS9zRmFXRXMxeGhVNDllOHp1ZkFwbTl3K3F0eEhELy8wNjAvVE94Qm00?= =?utf-8?B?ZWtRZ0w0NVdPZjVuYXVJYno5djZMbUpOUWdGc1lkVUk0N085dTVxVkhjd2RJ?= =?utf-8?B?MWtnTXRIL1ZoT2tPSGNSa3UwUUp2NWU4eWEwck5LaEdrSGNERlZHK1I4ek1E?= =?utf-8?B?WERkcnZkR1VqcTJyMjFMYzBEei9pVis2WnF5SW11dHJQWGJPWFpzMjd3RVBQ?= =?utf-8?B?OWVOSVowTWgrMmxodGVrbm5UeGxVZ09pZG16WUJidkFJeURqaVplSU8zWDlR?= =?utf-8?B?RjBOUHBMTlJjbTJoMHYwTTJhTzBtS1VhR3JxNEtFa3h6eE81UDQ1cENzNUJk?= =?utf-8?B?WjlheWtGNTBsMFQ5ZGE4RXM3SjZtSlg5cWF4VW5nRVV5ajFMZHM5WlE4cnMw?= =?utf-8?B?amkrdW5obE9BOG1jcGJvTmpzZVNiSnQyc1NxMitMeXpyS3FTclpKdVJGN1Qx?= =?utf-8?B?OGZsTGxoOHNwSVoyRG9NUTU2UEtkOTN5OWNmS0tmbjYzVGM5dUVJVy9LWkI3?= =?utf-8?B?cjdiUGRkU1Y4NmRBc2JHeWdLL254QjhJWUE3aVFaZ2lHV0RCcG5uK2dLbEVP?= =?utf-8?B?SzZucTJMUUFIUERHK1J6U2hJUjZxVlVSWTk4RlhQTWRZRENwZUsxZ2ZoZlZw?= =?utf-8?B?aEZETTVpdkpPYlBzQitUOFJaMnByTUhhRHpRdnFCWlZrVmFaNktHV2RLbVRp?= =?utf-8?B?RGFocWwrRDRCMko0RkUyV0MrRXRsTHhYSDdFbUV6WEc3V2drWWxOUzJRQWpz?= =?utf-8?B?NmJzRlFiMER6WDdKaDdtRWFPam5LVlE2SVJCZ09ORDM2czJ4aEdaQTNlQXBP?= =?utf-8?B?Yk1UcGJ4ZHQ2K040d29rOGZCbHNmQk5Fd2tvV1ZPRW5JU3BJQjludUduSHVO?= =?utf-8?B?N1oraHBUNVBiYStnWHo1QXRsRkphSlBkNVhzRHBkUHdGV1o5b1M5cXYvK1oz?= =?utf-8?B?VnhoMWg3QXg0enFvWXN2RzN4MnZkRXBzeVhuek9RRElaK3dRK2xGaU5MK05n?= =?utf-8?B?WC9BUCtXcDFiek8wQWhGUFhqL0FvdUgzVXVLMlhyUFlqaWhpdGdJTVZrOGpa?= =?utf-8?B?OVBIUGdNTGFHZU1GdzF3TlFzdXdrMlo2dW90c0hTK3RKZjJ6SjFybGRFTDcw?= =?utf-8?B?c0pCN1l5d3YvaU01SWVDT0R5QkFYcHJTaGVGdFlRVWhhSHVZYWYrYWpRTm1u?= =?utf-8?B?NEhEZTZRdUhINEc3NG8xRVp6bjA0bWpoWUpsaXNibTVTTkhrLzd6MFQ3S2J3?= =?utf-8?B?MThnVFBzcTMwT0owWG5SNlJrRFd5NlIyQk42Q3RYa0NBM0JyNm14aWJwUzlt?= =?utf-8?B?dmNnRmdaSGlLZE1nQ3k1QzZZa2ZObm10bkhlVGYwOVA4NUxDUXIzY2ZFRkVs?= =?utf-8?B?akhYQ3lENnJiL3c4OFNUV011cjBjQmVzbjJ6VXpXYVY3bGdyTFQ5VGZjZmJ5?= =?utf-8?B?RkpkaGVNVjRiUGpoeFNrc0dka1Y5Z2tGaXhNbzAwNFVyem43aUJqa0xvZXlW?= =?utf-8?B?NU01Rzl3dGdHL3duMDEzaG0waC9ucjBkb3BOZDVQdEFJVTludlFOTmhnVUdE?= =?utf-8?B?bGcxdHF0OUd1a1NNNTVKYklFMTB4dm03U1F6RGp6QWVlcGY4ZUp4R29PWG8y?= =?utf-8?B?K2IzSUVkVG5rVUxZRVVrOFM2ODlaelBFczlSbHp2Zjd3M1J2eTlrbXRnVVBU?= =?utf-8?B?aHFOcWdFRzZsbzRmMFo3Uys3L1YzbEQ5UDJHdWhNYThqbVlBRUQ3MUZWWVpa?= =?utf-8?B?S2QzK2tDR2tPNllSVEtuSllGZmtxRTVWdkh4NWlpV2NyUVBQMEcwM3pMaUNy?= =?utf-8?B?eC93SGNGYXRLei9IVi8rUE05WDU1OHMxeDVZV3hzQVo3dnlKZzlLaWl5MmE0?= =?utf-8?Q?Uibrc8O2gQQ1pRwtuF8UDnuQG?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: e209ead8-05db-4778-c71a-08dd9e7aaddc X-MS-Exchange-CrossTenant-AuthSource: CY8PR12MB7705.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2025 06:33:09.9935 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: cSic9I09F14K33Xcnw6kFy5ZhIQ7nF7E9ES2pXk4XnFNtZnBOWpxZFQaNeeYt7iGoLWDzePRGh7zxJFagAE1Aw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6092 X-Rspamd-Queue-Id: 2B9AA80006 X-Stat-Signature: 17a84wzzu1wz7537k9tty4b9omrfwfsj X-Rspam-User: X-Rspamd-Server: rspam04 X-HE-Tag: 1748500522-956202 X-HE-Meta: U2FsdGVkX1/s0pSxHhrKOL2XEnj0naXUKrpKqBsn80Zu1DY+XEkzMNfctnTDOgjSXdoNjtTgecwq+kWXjJhAHCGFOZ7x+e3JacJQmdTfmxfaMTA83h8disRb00z1PKBVBDKKS3hs19fkcHRKTw1X8QkTyACO9PL/XUjGe71e7XH8pGyCJ0xAmYxGJqepn7fceLxuXufeK8RSIHX+kt2X5gx4kWBe7vWKS1KzD4Zd8IyLKo9j1yfPW7MMEe8h++J8Ch+7MQbAwHqIlsO4RbMibQHeG8Q6y2Xb6CDDAhH/4tahayFCBP+30MkzfELd5VHa5ojiULWMB7Wgwt6TH4qhToYOtakU2x3T2VE+V7v2xS6FhZB+sc35ahW496E7GkNzBKo7vto/Mf+XHd+vqumZ4tYHGHTgurmrBAGmOiztEx8oOnWChpDMYw0N9P17jJOI5e7SnQs7lxVqdoNoYr6MfaFVgRC3jNSQY6BzThST2/8yGVTfc3qSqHuegRPfvaM5ITe485k/blhkLCAn7ENr6DTOpq9/aPDvVRKASIuCjnfwMWwQLKMu1hsEI0e6TWEWFw3VB8jBIADR/uvnzyRR4AP3Ae2T+kfmjP+CS0c3mBXr/Abt1Dt6cAOzSqFw4jPB7TyOsmm2CI4H0bhoA2FWE6ErrhS/lC3eGM8GXA1C1txKFu+G9aDJRNVS9jSkusW6q7mRigDx1A9b8igE3x7OaASPBYe6FYTyCE4Yv8jvU5fHTwRVNY4eUOwOJgRvvR+Ti9fx1wIjyMnxk2Kzy0Vw/XTLjBjjjWhGK9QPSANjfnrwHh6FE1gqJ7hk82dcQTq+fdxvXC1bpx1NVdtfuwZeoQzQTi3VUWKJsx3H7C4kiQgtbprbbjDpyrCXrPOdAEQQfo6QmGCqv35YS3j2ydGIGOse3XaMqkm/PEe321JSEkKZZRazhvKb7/TVlWI2aT8nPInUyFzMJNAZmvGZUf9 VtAFqDRM 5OB8UbnCWsvzxuVWLy6hqJCAVC6pvh+WdHskwsSLCyw/1xdLz5TyyUalpWN8cg5WgZjF8cJ1n6TfNTfNkcZ5nOofW6pkkV8+tZLKLjDLD7+cgNzcEXUyKrgy2fixVel9XWVjE X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Now that DAX and all other reference counts to ZONE_DEVICE pages are managed normally there is no need for the special devmap PTE/PMD/PUD page table bits. So drop all references to these, freeing up a software defined page table bit on architectures supporting it. Signed-off-by: Alistair Popple Acked-by: Will Deacon # arm64 Suggested-by: Chunyan Zhang Reviewed-by: Björn Töpel --- Documentation/mm/arch_pgtable_helpers.rst | 6 +-- arch/arm64/Kconfig | 1 +- arch/arm64/include/asm/pgtable-prot.h | 1 +- arch/arm64/include/asm/pgtable.h | 24 +-------- arch/loongarch/Kconfig | 1 +- arch/loongarch/include/asm/pgtable-bits.h | 6 +-- arch/loongarch/include/asm/pgtable.h | 19 +------ arch/powerpc/Kconfig | 1 +- arch/powerpc/include/asm/book3s/64/hash-4k.h | 6 +-- arch/powerpc/include/asm/book3s/64/hash-64k.h | 7 +-- arch/powerpc/include/asm/book3s/64/pgtable.h | 53 +------------------ arch/powerpc/include/asm/book3s/64/radix.h | 14 +----- arch/riscv/Kconfig | 1 +- arch/riscv/include/asm/pgtable-64.h | 20 +------- arch/riscv/include/asm/pgtable-bits.h | 1 +- arch/riscv/include/asm/pgtable.h | 17 +------ arch/x86/Kconfig | 1 +- arch/x86/include/asm/pgtable.h | 51 +----------------- arch/x86/include/asm/pgtable_types.h | 5 +-- include/linux/mm.h | 7 +-- include/linux/pgtable.h | 19 +------ mm/Kconfig | 4 +- mm/debug_vm_pgtable.c | 59 +-------------------- mm/hmm.c | 3 +- mm/madvise.c | 8 +-- 25 files changed, 17 insertions(+), 318 deletions(-) diff --git a/Documentation/mm/arch_pgtable_helpers.rst b/Documentation/mm/arch_pgtable_helpers.rst index af24516..c88c7fa 100644 --- a/Documentation/mm/arch_pgtable_helpers.rst +++ b/Documentation/mm/arch_pgtable_helpers.rst @@ -30,8 +30,6 @@ PTE Page Table Helpers +---------------------------+--------------------------------------------------+ | pte_protnone | Tests a PROT_NONE PTE | +---------------------------+--------------------------------------------------+ -| pte_devmap | Tests a ZONE_DEVICE mapped PTE | -+---------------------------+--------------------------------------------------+ | pte_soft_dirty | Tests a soft dirty PTE | +---------------------------+--------------------------------------------------+ | pte_swp_soft_dirty | Tests a soft dirty swapped PTE | @@ -104,8 +102,6 @@ PMD Page Table Helpers +---------------------------+--------------------------------------------------+ | pmd_protnone | Tests a PROT_NONE PMD | +---------------------------+--------------------------------------------------+ -| pmd_devmap | Tests a ZONE_DEVICE mapped PMD | -+---------------------------+--------------------------------------------------+ | pmd_soft_dirty | Tests a soft dirty PMD | +---------------------------+--------------------------------------------------+ | pmd_swp_soft_dirty | Tests a soft dirty swapped PMD | @@ -177,8 +173,6 @@ PUD Page Table Helpers +---------------------------+--------------------------------------------------+ | pud_write | Tests a writable PUD | +---------------------------+--------------------------------------------------+ -| pud_devmap | Tests a ZONE_DEVICE mapped PUD | -+---------------------------+--------------------------------------------------+ | pud_mkyoung | Creates a young PUD | +---------------------------+--------------------------------------------------+ | pud_mkold | Creates an old PUD | diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index a182295..ee9031c 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -43,7 +43,6 @@ config ARM64 select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE select ARCH_HAS_NONLEAF_PMD_YOUNG if ARM64_HAFT select ARCH_HAS_PTDUMP - select ARCH_HAS_PTE_DEVMAP select ARCH_HAS_PTE_SPECIAL select ARCH_HAS_HW_PTE_YOUNG select ARCH_HAS_SETUP_DMA_OPS diff --git a/arch/arm64/include/asm/pgtable-prot.h b/arch/arm64/include/asm/pgtable-prot.h index 7830d03..85dceb1 100644 --- a/arch/arm64/include/asm/pgtable-prot.h +++ b/arch/arm64/include/asm/pgtable-prot.h @@ -17,7 +17,6 @@ #define PTE_SWP_EXCLUSIVE (_AT(pteval_t, 1) << 2) /* only for swp ptes */ #define PTE_DIRTY (_AT(pteval_t, 1) << 55) #define PTE_SPECIAL (_AT(pteval_t, 1) << 56) -#define PTE_DEVMAP (_AT(pteval_t, 1) << 57) /* * PTE_PRESENT_INVALID=1 & PTE_VALID=0 indicates that the pte's fields should be diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index d3b538b..991c9fa 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -111,7 +111,6 @@ static inline pteval_t __phys_to_pte_val(phys_addr_t phys) #define pte_user(pte) (!!(pte_val(pte) & PTE_USER)) #define pte_user_exec(pte) (!(pte_val(pte) & PTE_UXN)) #define pte_cont(pte) (!!(pte_val(pte) & PTE_CONT)) -#define pte_devmap(pte) (!!(pte_val(pte) & PTE_DEVMAP)) #define pte_tagged(pte) ((pte_val(pte) & PTE_ATTRINDX_MASK) == \ PTE_ATTRINDX(MT_NORMAL_TAGGED)) @@ -293,11 +292,6 @@ static inline pmd_t pmd_mkcont(pmd_t pmd) return __pmd(pmd_val(pmd) | PMD_SECT_CONT); } -static inline pte_t pte_mkdevmap(pte_t pte) -{ - return set_pte_bit(pte, __pgprot(PTE_DEVMAP | PTE_SPECIAL)); -} - #ifdef CONFIG_HAVE_ARCH_USERFAULTFD_WP static inline int pte_uffd_wp(pte_t pte) { @@ -589,14 +583,6 @@ static inline pmd_t pmd_mkhuge(pmd_t pmd) return __pmd((pmd_val(pmd) & ~mask) | val); } -#ifdef CONFIG_TRANSPARENT_HUGEPAGE -#define pmd_devmap(pmd) pte_devmap(pmd_pte(pmd)) -#endif -static inline pmd_t pmd_mkdevmap(pmd_t pmd) -{ - return pte_pmd(set_pte_bit(pmd_pte(pmd), __pgprot(PTE_DEVMAP))); -} - #ifdef CONFIG_ARCH_SUPPORTS_PMD_PFNMAP #define pmd_special(pte) (!!((pmd_val(pte) & PTE_SPECIAL))) static inline pmd_t pmd_mkspecial(pmd_t pmd) @@ -1220,16 +1206,6 @@ static inline int pmdp_set_access_flags(struct vm_area_struct *vma, return __ptep_set_access_flags(vma, address, (pte_t *)pmdp, pmd_pte(entry), dirty); } - -static inline int pud_devmap(pud_t pud) -{ - return 0; -} - -static inline int pgd_devmap(pgd_t pgd) -{ - return 0; -} #endif #ifdef CONFIG_PAGE_TABLE_CHECK diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig index 1a2cf01..7b4b871 100644 --- a/arch/loongarch/Kconfig +++ b/arch/loongarch/Kconfig @@ -25,7 +25,6 @@ config LOONGARCH select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE select ARCH_HAS_PREEMPT_LAZY - select ARCH_HAS_PTE_DEVMAP select ARCH_HAS_PTE_SPECIAL select ARCH_HAS_SET_MEMORY select ARCH_HAS_SET_DIRECT_MAP diff --git a/arch/loongarch/include/asm/pgtable-bits.h b/arch/loongarch/include/asm/pgtable-bits.h index 45bfc65..c8777a9 100644 --- a/arch/loongarch/include/asm/pgtable-bits.h +++ b/arch/loongarch/include/asm/pgtable-bits.h @@ -22,7 +22,6 @@ #define _PAGE_PFN_SHIFT 12 #define _PAGE_SWP_EXCLUSIVE_SHIFT 23 #define _PAGE_PFN_END_SHIFT 48 -#define _PAGE_DEVMAP_SHIFT 59 #define _PAGE_PRESENT_INVALID_SHIFT 60 #define _PAGE_NO_READ_SHIFT 61 #define _PAGE_NO_EXEC_SHIFT 62 @@ -36,7 +35,6 @@ #define _PAGE_MODIFIED (_ULCAST_(1) << _PAGE_MODIFIED_SHIFT) #define _PAGE_PROTNONE (_ULCAST_(1) << _PAGE_PROTNONE_SHIFT) #define _PAGE_SPECIAL (_ULCAST_(1) << _PAGE_SPECIAL_SHIFT) -#define _PAGE_DEVMAP (_ULCAST_(1) << _PAGE_DEVMAP_SHIFT) /* We borrow bit 23 to store the exclusive marker in swap PTEs. */ #define _PAGE_SWP_EXCLUSIVE (_ULCAST_(1) << _PAGE_SWP_EXCLUSIVE_SHIFT) @@ -76,8 +74,8 @@ #define __READABLE (_PAGE_VALID) #define __WRITEABLE (_PAGE_DIRTY | _PAGE_WRITE) -#define _PAGE_CHG_MASK (_PAGE_MODIFIED | _PAGE_SPECIAL | _PAGE_DEVMAP | _PFN_MASK | _CACHE_MASK | _PAGE_PLV) -#define _HPAGE_CHG_MASK (_PAGE_MODIFIED | _PAGE_SPECIAL | _PAGE_DEVMAP | _PFN_MASK | _CACHE_MASK | _PAGE_PLV | _PAGE_HUGE) +#define _PAGE_CHG_MASK (_PAGE_MODIFIED | _PAGE_SPECIAL | _PFN_MASK | _CACHE_MASK | _PAGE_PLV) +#define _HPAGE_CHG_MASK (_PAGE_MODIFIED | _PAGE_SPECIAL | _PFN_MASK | _CACHE_MASK | _PAGE_PLV | _PAGE_HUGE) #define PAGE_NONE __pgprot(_PAGE_PROTNONE | _PAGE_NO_READ | \ _PAGE_USER | _CACHE_CC) diff --git a/arch/loongarch/include/asm/pgtable.h b/arch/loongarch/include/asm/pgtable.h index da34673..d83b14b 100644 --- a/arch/loongarch/include/asm/pgtable.h +++ b/arch/loongarch/include/asm/pgtable.h @@ -410,9 +410,6 @@ static inline int pte_special(pte_t pte) { return pte_val(pte) & _PAGE_SPECIAL; static inline pte_t pte_mkspecial(pte_t pte) { pte_val(pte) |= _PAGE_SPECIAL; return pte; } #endif /* CONFIG_ARCH_HAS_PTE_SPECIAL */ -static inline int pte_devmap(pte_t pte) { return !!(pte_val(pte) & _PAGE_DEVMAP); } -static inline pte_t pte_mkdevmap(pte_t pte) { pte_val(pte) |= _PAGE_DEVMAP; return pte; } - #define pte_accessible pte_accessible static inline unsigned long pte_accessible(struct mm_struct *mm, pte_t a) { @@ -547,17 +544,6 @@ static inline pmd_t pmd_mkyoung(pmd_t pmd) return pmd; } -static inline int pmd_devmap(pmd_t pmd) -{ - return !!(pmd_val(pmd) & _PAGE_DEVMAP); -} - -static inline pmd_t pmd_mkdevmap(pmd_t pmd) -{ - pmd_val(pmd) |= _PAGE_DEVMAP; - return pmd; -} - static inline struct page *pmd_page(pmd_t pmd) { if (pmd_trans_huge(pmd)) @@ -613,11 +599,6 @@ static inline long pmd_protnone(pmd_t pmd) #define pmd_leaf(pmd) ((pmd_val(pmd) & _PAGE_HUGE) != 0) #define pud_leaf(pud) ((pud_val(pud) & _PAGE_HUGE) != 0) -#ifdef CONFIG_TRANSPARENT_HUGEPAGE -#define pud_devmap(pud) (0) -#define pgd_devmap(pgd) (0) -#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ - /* * We provide our own get_unmapped area to cope with the virtual aliasing * constraints placed on us by the cache architecture. diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 6722625..486b53b 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -149,7 +149,6 @@ config PPC select ARCH_HAS_PMEM_API select ARCH_HAS_PREEMPT_LAZY select ARCH_HAS_PTDUMP - select ARCH_HAS_PTE_DEVMAP if PPC_BOOK3S_64 select ARCH_HAS_PTE_SPECIAL select ARCH_HAS_SCALED_CPUTIME if VIRT_CPU_ACCOUNTING_NATIVE && PPC_BOOK3S_64 select ARCH_HAS_SET_MEMORY diff --git a/arch/powerpc/include/asm/book3s/64/hash-4k.h b/arch/powerpc/include/asm/book3s/64/hash-4k.h index aa90a04..7132392 100644 --- a/arch/powerpc/include/asm/book3s/64/hash-4k.h +++ b/arch/powerpc/include/asm/book3s/64/hash-4k.h @@ -168,12 +168,6 @@ extern pmd_t hash__pmdp_huge_get_and_clear(struct mm_struct *mm, extern int hash__has_transparent_hugepage(void); #endif -static inline pmd_t hash__pmd_mkdevmap(pmd_t pmd) -{ - BUG(); - return pmd; -} - #endif /* !__ASSEMBLY__ */ #endif /* _ASM_POWERPC_BOOK3S_64_HASH_4K_H */ diff --git a/arch/powerpc/include/asm/book3s/64/hash-64k.h b/arch/powerpc/include/asm/book3s/64/hash-64k.h index 0bf6fd0..0fb5b7d 100644 --- a/arch/powerpc/include/asm/book3s/64/hash-64k.h +++ b/arch/powerpc/include/asm/book3s/64/hash-64k.h @@ -259,7 +259,7 @@ static inline void mark_hpte_slot_valid(unsigned char *hpte_slot_array, */ static inline int hash__pmd_trans_huge(pmd_t pmd) { - return !!((pmd_val(pmd) & (_PAGE_PTE | H_PAGE_THP_HUGE | _PAGE_DEVMAP)) == + return !!((pmd_val(pmd) & (_PAGE_PTE | H_PAGE_THP_HUGE)) == (_PAGE_PTE | H_PAGE_THP_HUGE)); } @@ -281,11 +281,6 @@ extern pmd_t hash__pmdp_huge_get_and_clear(struct mm_struct *mm, extern int hash__has_transparent_hugepage(void); #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ -static inline pmd_t hash__pmd_mkdevmap(pmd_t pmd) -{ - return __pmd(pmd_val(pmd) | (_PAGE_PTE | H_PAGE_THP_HUGE | _PAGE_DEVMAP)); -} - #endif /* __ASSEMBLY__ */ #endif /* _ASM_POWERPC_BOOK3S_64_HASH_64K_H */ diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h index 6d98e6f..1d98d0a 100644 --- a/arch/powerpc/include/asm/book3s/64/pgtable.h +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h @@ -88,7 +88,6 @@ #define _PAGE_SOFT_DIRTY _RPAGE_SW3 /* software: software dirty tracking */ #define _PAGE_SPECIAL _RPAGE_SW2 /* software: special page */ -#define _PAGE_DEVMAP _RPAGE_SW1 /* software: ZONE_DEVICE page */ /* * Drivers request for cache inhibited pte mapping using _PAGE_NO_CACHE @@ -109,7 +108,7 @@ */ #define _HPAGE_CHG_MASK (PTE_RPN_MASK | _PAGE_HPTEFLAGS | _PAGE_DIRTY | \ _PAGE_ACCESSED | H_PAGE_THP_HUGE | _PAGE_PTE | \ - _PAGE_SOFT_DIRTY | _PAGE_DEVMAP) + _PAGE_SOFT_DIRTY) /* * user access blocked by key */ @@ -123,7 +122,7 @@ */ #define _PAGE_CHG_MASK (PTE_RPN_MASK | _PAGE_HPTEFLAGS | _PAGE_DIRTY | \ _PAGE_ACCESSED | _PAGE_SPECIAL | _PAGE_PTE | \ - _PAGE_SOFT_DIRTY | _PAGE_DEVMAP) + _PAGE_SOFT_DIRTY) /* * We define 2 sets of base prot bits, one for basic pages (ie, @@ -609,24 +608,6 @@ static inline pte_t pte_mkhuge(pte_t pte) return pte; } -static inline pte_t pte_mkdevmap(pte_t pte) -{ - return __pte_raw(pte_raw(pte) | cpu_to_be64(_PAGE_SPECIAL | _PAGE_DEVMAP)); -} - -/* - * This is potentially called with a pmd as the argument, in which case it's not - * safe to check _PAGE_DEVMAP unless we also confirm that _PAGE_PTE is set. - * That's because the bit we use for _PAGE_DEVMAP is not reserved for software - * use in page directory entries (ie. non-ptes). - */ -static inline int pte_devmap(pte_t pte) -{ - __be64 mask = cpu_to_be64(_PAGE_DEVMAP | _PAGE_PTE); - - return (pte_raw(pte) & mask) == mask; -} - static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) { /* FIXME!! check whether this need to be a conditional */ @@ -1380,36 +1361,6 @@ static inline bool arch_needs_pgtable_deposit(void) } extern void serialize_against_pte_lookup(struct mm_struct *mm); - -static inline pmd_t pmd_mkdevmap(pmd_t pmd) -{ - if (radix_enabled()) - return radix__pmd_mkdevmap(pmd); - return hash__pmd_mkdevmap(pmd); -} - -static inline pud_t pud_mkdevmap(pud_t pud) -{ - if (radix_enabled()) - return radix__pud_mkdevmap(pud); - BUG(); - return pud; -} - -static inline int pmd_devmap(pmd_t pmd) -{ - return pte_devmap(pmd_pte(pmd)); -} - -static inline int pud_devmap(pud_t pud) -{ - return pte_devmap(pud_pte(pud)); -} - -static inline int pgd_devmap(pgd_t pgd) -{ - return 0; -} #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ #define __HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION diff --git a/arch/powerpc/include/asm/book3s/64/radix.h b/arch/powerpc/include/asm/book3s/64/radix.h index 8f55ff7..df23a82 100644 --- a/arch/powerpc/include/asm/book3s/64/radix.h +++ b/arch/powerpc/include/asm/book3s/64/radix.h @@ -264,7 +264,7 @@ static inline int radix__p4d_bad(p4d_t p4d) static inline int radix__pmd_trans_huge(pmd_t pmd) { - return (pmd_val(pmd) & (_PAGE_PTE | _PAGE_DEVMAP)) == _PAGE_PTE; + return (pmd_val(pmd) & _PAGE_PTE) == _PAGE_PTE; } static inline pmd_t radix__pmd_mkhuge(pmd_t pmd) @@ -274,7 +274,7 @@ static inline pmd_t radix__pmd_mkhuge(pmd_t pmd) static inline int radix__pud_trans_huge(pud_t pud) { - return (pud_val(pud) & (_PAGE_PTE | _PAGE_DEVMAP)) == _PAGE_PTE; + return (pud_val(pud) & _PAGE_PTE) == _PAGE_PTE; } static inline pud_t radix__pud_mkhuge(pud_t pud) @@ -315,16 +315,6 @@ static inline int radix__has_transparent_pud_hugepage(void) } #endif -static inline pmd_t radix__pmd_mkdevmap(pmd_t pmd) -{ - return __pmd(pmd_val(pmd) | (_PAGE_PTE | _PAGE_DEVMAP)); -} - -static inline pud_t radix__pud_mkdevmap(pud_t pud) -{ - return __pud(pud_val(pud) | (_PAGE_PTE | _PAGE_DEVMAP)); -} - struct vmem_altmap; struct dev_pagemap; extern int __meminit radix__vmemmap_create_mapping(unsigned long start, diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index bbec87b..184acf0 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -46,7 +46,6 @@ config RISCV select ARCH_HAS_PREEMPT_LAZY select ARCH_HAS_PREPARE_SYNC_CORE_CMD select ARCH_HAS_PTDUMP if MMU - select ARCH_HAS_PTE_DEVMAP if 64BIT && MMU select ARCH_HAS_PTE_SPECIAL select ARCH_HAS_SET_DIRECT_MAP if MMU select ARCH_HAS_SET_MEMORY if MMU diff --git a/arch/riscv/include/asm/pgtable-64.h b/arch/riscv/include/asm/pgtable-64.h index 0897dd9..8c36a88 100644 --- a/arch/riscv/include/asm/pgtable-64.h +++ b/arch/riscv/include/asm/pgtable-64.h @@ -398,24 +398,4 @@ static inline struct page *pgd_page(pgd_t pgd) #define p4d_offset p4d_offset p4d_t *p4d_offset(pgd_t *pgd, unsigned long address); -#ifdef CONFIG_TRANSPARENT_HUGEPAGE -static inline int pte_devmap(pte_t pte); -static inline pte_t pmd_pte(pmd_t pmd); - -static inline int pmd_devmap(pmd_t pmd) -{ - return pte_devmap(pmd_pte(pmd)); -} - -static inline int pud_devmap(pud_t pud) -{ - return 0; -} - -static inline int pgd_devmap(pgd_t pgd) -{ - return 0; -} -#endif - #endif /* _ASM_RISCV_PGTABLE_64_H */ diff --git a/arch/riscv/include/asm/pgtable-bits.h b/arch/riscv/include/asm/pgtable-bits.h index a8f5205..179bd4a 100644 --- a/arch/riscv/include/asm/pgtable-bits.h +++ b/arch/riscv/include/asm/pgtable-bits.h @@ -19,7 +19,6 @@ #define _PAGE_SOFT (3 << 8) /* Reserved for software */ #define _PAGE_SPECIAL (1 << 8) /* RSW: 0x1 */ -#define _PAGE_DEVMAP (1 << 9) /* RSW, devmap */ #define _PAGE_TABLE _PAGE_PRESENT /* diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 428e48e..c602070 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -411,13 +411,6 @@ static inline int pte_special(pte_t pte) return pte_val(pte) & _PAGE_SPECIAL; } -#ifdef CONFIG_ARCH_HAS_PTE_DEVMAP -static inline int pte_devmap(pte_t pte) -{ - return pte_val(pte) & _PAGE_DEVMAP; -} -#endif - /* static inline pte_t pte_rdprotect(pte_t pte) */ static inline pte_t pte_wrprotect(pte_t pte) @@ -459,11 +452,6 @@ static inline pte_t pte_mkspecial(pte_t pte) return __pte(pte_val(pte) | _PAGE_SPECIAL); } -static inline pte_t pte_mkdevmap(pte_t pte) -{ - return __pte(pte_val(pte) | _PAGE_DEVMAP); -} - static inline pte_t pte_mkhuge(pte_t pte) { return pte; @@ -792,11 +780,6 @@ static inline pmd_t pmd_mkdirty(pmd_t pmd) return pte_pmd(pte_mkdirty(pmd_pte(pmd))); } -static inline pmd_t pmd_mkdevmap(pmd_t pmd) -{ - return pte_pmd(pte_mkdevmap(pmd_pte(pmd))); -} - #ifdef CONFIG_ARCH_SUPPORTS_PMD_PFNMAP static inline bool pmd_special(pmd_t pmd) { diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index e21cca4..00f2665 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -100,7 +100,6 @@ config X86 select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE select ARCH_HAS_PMEM_API if X86_64 select ARCH_HAS_PREEMPT_LAZY - select ARCH_HAS_PTE_DEVMAP if X86_64 select ARCH_HAS_PTE_SPECIAL select ARCH_HAS_HW_PTE_YOUNG select ARCH_HAS_NONLEAF_PMD_YOUNG if PGTABLE_LEVELS > 2 diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index 7bd6bd6..141d13e 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -308,16 +308,15 @@ static inline bool pmd_leaf(pmd_t pte) } #ifdef CONFIG_TRANSPARENT_HUGEPAGE -/* NOTE: when predicate huge page, consider also pmd_devmap, or use pmd_leaf */ static inline int pmd_trans_huge(pmd_t pmd) { - return (pmd_val(pmd) & (_PAGE_PSE|_PAGE_DEVMAP)) == _PAGE_PSE; + return (pmd_val(pmd) & _PAGE_PSE) == _PAGE_PSE; } #ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD static inline int pud_trans_huge(pud_t pud) { - return (pud_val(pud) & (_PAGE_PSE|_PAGE_DEVMAP)) == _PAGE_PSE; + return (pud_val(pud) & _PAGE_PSE) == _PAGE_PSE; } #endif @@ -327,24 +326,6 @@ static inline int has_transparent_hugepage(void) return boot_cpu_has(X86_FEATURE_PSE); } -#ifdef CONFIG_ARCH_HAS_PTE_DEVMAP -static inline int pmd_devmap(pmd_t pmd) -{ - return !!(pmd_val(pmd) & _PAGE_DEVMAP); -} - -#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD -static inline int pud_devmap(pud_t pud) -{ - return !!(pud_val(pud) & _PAGE_DEVMAP); -} -#else -static inline int pud_devmap(pud_t pud) -{ - return 0; -} -#endif - #ifdef CONFIG_ARCH_SUPPORTS_PMD_PFNMAP static inline bool pmd_special(pmd_t pmd) { @@ -368,12 +349,6 @@ static inline pud_t pud_mkspecial(pud_t pud) return pud_set_flags(pud, _PAGE_SPECIAL); } #endif /* CONFIG_ARCH_SUPPORTS_PUD_PFNMAP */ - -static inline int pgd_devmap(pgd_t pgd) -{ - return 0; -} -#endif #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ static inline pte_t pte_set_flags(pte_t pte, pteval_t set) @@ -534,11 +509,6 @@ static inline pte_t pte_mkspecial(pte_t pte) return pte_set_flags(pte, _PAGE_SPECIAL); } -static inline pte_t pte_mkdevmap(pte_t pte) -{ - return pte_set_flags(pte, _PAGE_SPECIAL|_PAGE_DEVMAP); -} - /* See comments above mksaveddirty_shift() */ static inline pmd_t pmd_mksaveddirty(pmd_t pmd) { @@ -610,11 +580,6 @@ static inline pmd_t pmd_mkwrite_shstk(pmd_t pmd) return pmd_set_flags(pmd, _PAGE_DIRTY); } -static inline pmd_t pmd_mkdevmap(pmd_t pmd) -{ - return pmd_set_flags(pmd, _PAGE_DEVMAP); -} - static inline pmd_t pmd_mkhuge(pmd_t pmd) { return pmd_set_flags(pmd, _PAGE_PSE); @@ -680,11 +645,6 @@ static inline pud_t pud_mkdirty(pud_t pud) return pud_mksaveddirty(pud); } -static inline pud_t pud_mkdevmap(pud_t pud) -{ - return pud_set_flags(pud, _PAGE_DEVMAP); -} - static inline pud_t pud_mkhuge(pud_t pud) { return pud_set_flags(pud, _PAGE_PSE); @@ -1012,13 +972,6 @@ static inline int pte_present(pte_t a) return pte_flags(a) & (_PAGE_PRESENT | _PAGE_PROTNONE); } -#ifdef CONFIG_ARCH_HAS_PTE_DEVMAP -static inline int pte_devmap(pte_t a) -{ - return (pte_flags(a) & _PAGE_DEVMAP) == _PAGE_DEVMAP; -} -#endif - #define pte_accessible pte_accessible static inline bool pte_accessible(struct mm_struct *mm, pte_t a) { diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h index b74ec5c..f63ae8d 100644 --- a/arch/x86/include/asm/pgtable_types.h +++ b/arch/x86/include/asm/pgtable_types.h @@ -34,7 +34,6 @@ #define _PAGE_BIT_UFFD_WP _PAGE_BIT_SOFTW2 /* userfaultfd wrprotected */ #define _PAGE_BIT_SOFT_DIRTY _PAGE_BIT_SOFTW3 /* software dirty tracking */ #define _PAGE_BIT_KERNEL_4K _PAGE_BIT_SOFTW3 /* page must not be converted to large */ -#define _PAGE_BIT_DEVMAP _PAGE_BIT_SOFTW4 #ifdef CONFIG_X86_64 #define _PAGE_BIT_SAVED_DIRTY _PAGE_BIT_SOFTW5 /* Saved Dirty bit (leaf) */ @@ -121,11 +120,9 @@ #if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE) #define _PAGE_NX (_AT(pteval_t, 1) << _PAGE_BIT_NX) -#define _PAGE_DEVMAP (_AT(u64, 1) << _PAGE_BIT_DEVMAP) #define _PAGE_SOFTW4 (_AT(pteval_t, 1) << _PAGE_BIT_SOFTW4) #else #define _PAGE_NX (_AT(pteval_t, 0)) -#define _PAGE_DEVMAP (_AT(pteval_t, 0)) #define _PAGE_SOFTW4 (_AT(pteval_t, 0)) #endif @@ -154,7 +151,7 @@ #define _COMMON_PAGE_CHG_MASK (PTE_PFN_MASK | _PAGE_PCD | _PAGE_PWT | \ _PAGE_SPECIAL | _PAGE_ACCESSED | \ _PAGE_DIRTY_BITS | _PAGE_SOFT_DIRTY | \ - _PAGE_DEVMAP | _PAGE_CC | _PAGE_UFFD_WP) + _PAGE_CC | _PAGE_UFFD_WP) #define _PAGE_CHG_MASK (_COMMON_PAGE_CHG_MASK | _PAGE_PAT) #define _HPAGE_CHG_MASK (_COMMON_PAGE_CHG_MASK | _PAGE_PSE | _PAGE_PAT_LARGE) diff --git a/include/linux/mm.h b/include/linux/mm.h index bf55206..c5345ee 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2827,13 +2827,6 @@ static inline pud_t pud_mkspecial(pud_t pud) } #endif /* CONFIG_ARCH_SUPPORTS_PUD_PFNMAP */ -#ifndef CONFIG_ARCH_HAS_PTE_DEVMAP -static inline int pte_devmap(pte_t pte) -{ - return 0; -} -#endif - extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl); static inline pte_t *get_locked_pte(struct mm_struct *mm, unsigned long addr, diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h index a6f9573..ed3317e 100644 --- a/include/linux/pgtable.h +++ b/include/linux/pgtable.h @@ -1627,21 +1627,6 @@ static inline int pud_write(pud_t pud) } #endif /* pud_write */ -#if !defined(CONFIG_ARCH_HAS_PTE_DEVMAP) || !defined(CONFIG_TRANSPARENT_HUGEPAGE) -static inline int pmd_devmap(pmd_t pmd) -{ - return 0; -} -static inline int pud_devmap(pud_t pud) -{ - return 0; -} -static inline int pgd_devmap(pgd_t pgd) -{ - return 0; -} -#endif - #if !defined(CONFIG_TRANSPARENT_HUGEPAGE) || \ !defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD) static inline int pud_trans_huge(pud_t pud) @@ -1896,8 +1881,8 @@ typedef unsigned int pgtbl_mod_mask; * - It should contain a huge PFN, which points to a huge page larger than * PAGE_SIZE of the platform. The PFN format isn't important here. * - * - It should cover all kinds of huge mappings (e.g., pXd_trans_huge(), - * pXd_devmap(), or hugetlb mappings). + * - It should cover all kinds of huge mappings (i.e. pXd_trans_huge() + * or hugetlb mappings). */ #ifndef pgd_leaf #define pgd_leaf(x) false diff --git a/mm/Kconfig b/mm/Kconfig index e113f71..626b5f5 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -1071,9 +1071,6 @@ config ARCH_HAS_CURRENT_STACK_POINTER register alias named "current_stack_pointer", this config can be selected. -config ARCH_HAS_PTE_DEVMAP - bool - config ARCH_HAS_ZONE_DMA_SET bool @@ -1091,7 +1088,6 @@ config ZONE_DEVICE depends on MEMORY_HOTPLUG depends on MEMORY_HOTREMOVE depends on SPARSEMEM_VMEMMAP - depends on ARCH_HAS_PTE_DEVMAP select XARRAY_MULTI help diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c index bc748f7..cf5ff92 100644 --- a/mm/debug_vm_pgtable.c +++ b/mm/debug_vm_pgtable.c @@ -348,12 +348,6 @@ static void __init pud_advanced_tests(struct pgtable_debug_args *args) vaddr &= HPAGE_PUD_MASK; pud = pfn_pud(args->pud_pfn, args->page_prot); - /* - * Some architectures have debug checks to make sure - * huge pud mapping are only found with devmap entries - * For now test with only devmap entries. - */ - pud = pud_mkdevmap(pud); set_pud_at(args->mm, vaddr, args->pudp, pud); flush_dcache_page(page); pudp_set_wrprotect(args->mm, vaddr, args->pudp); @@ -366,7 +360,6 @@ static void __init pud_advanced_tests(struct pgtable_debug_args *args) WARN_ON(!pud_none(pud)); #endif /* __PAGETABLE_PMD_FOLDED */ pud = pfn_pud(args->pud_pfn, args->page_prot); - pud = pud_mkdevmap(pud); pud = pud_wrprotect(pud); pud = pud_mkclean(pud); set_pud_at(args->mm, vaddr, args->pudp, pud); @@ -384,7 +377,6 @@ static void __init pud_advanced_tests(struct pgtable_debug_args *args) #endif /* __PAGETABLE_PMD_FOLDED */ pud = pfn_pud(args->pud_pfn, args->page_prot); - pud = pud_mkdevmap(pud); pud = pud_mkyoung(pud); set_pud_at(args->mm, vaddr, args->pudp, pud); flush_dcache_page(page); @@ -693,53 +685,6 @@ static void __init pmd_protnone_tests(struct pgtable_debug_args *args) static void __init pmd_protnone_tests(struct pgtable_debug_args *args) { } #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ -#ifdef CONFIG_ARCH_HAS_PTE_DEVMAP -static void __init pte_devmap_tests(struct pgtable_debug_args *args) -{ - pte_t pte = pfn_pte(args->fixed_pte_pfn, args->page_prot); - - pr_debug("Validating PTE devmap\n"); - WARN_ON(!pte_devmap(pte_mkdevmap(pte))); -} - -#ifdef CONFIG_TRANSPARENT_HUGEPAGE -static void __init pmd_devmap_tests(struct pgtable_debug_args *args) -{ - pmd_t pmd; - - if (!has_transparent_hugepage()) - return; - - pr_debug("Validating PMD devmap\n"); - pmd = pfn_pmd(args->fixed_pmd_pfn, args->page_prot); - WARN_ON(!pmd_devmap(pmd_mkdevmap(pmd))); -} - -#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD -static void __init pud_devmap_tests(struct pgtable_debug_args *args) -{ - pud_t pud; - - if (!has_transparent_pud_hugepage()) - return; - - pr_debug("Validating PUD devmap\n"); - pud = pfn_pud(args->fixed_pud_pfn, args->page_prot); - WARN_ON(!pud_devmap(pud_mkdevmap(pud))); -} -#else /* !CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD */ -static void __init pud_devmap_tests(struct pgtable_debug_args *args) { } -#endif /* CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD */ -#else /* CONFIG_TRANSPARENT_HUGEPAGE */ -static void __init pmd_devmap_tests(struct pgtable_debug_args *args) { } -static void __init pud_devmap_tests(struct pgtable_debug_args *args) { } -#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ -#else -static void __init pte_devmap_tests(struct pgtable_debug_args *args) { } -static void __init pmd_devmap_tests(struct pgtable_debug_args *args) { } -static void __init pud_devmap_tests(struct pgtable_debug_args *args) { } -#endif /* CONFIG_ARCH_HAS_PTE_DEVMAP */ - static void __init pte_soft_dirty_tests(struct pgtable_debug_args *args) { pte_t pte = pfn_pte(args->fixed_pte_pfn, args->page_prot); @@ -1341,10 +1286,6 @@ static int __init debug_vm_pgtable(void) pte_protnone_tests(&args); pmd_protnone_tests(&args); - pte_devmap_tests(&args); - pmd_devmap_tests(&args); - pud_devmap_tests(&args); - pte_soft_dirty_tests(&args); pmd_soft_dirty_tests(&args); pte_swap_soft_dirty_tests(&args); diff --git a/mm/hmm.c b/mm/hmm.c index 5037f98..1fbbeea 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -393,8 +393,7 @@ static int hmm_vma_walk_pmd(pmd_t *pmdp, return 0; } -#if defined(CONFIG_ARCH_HAS_PTE_DEVMAP) && \ - defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD) +#if defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD) static inline unsigned long pud_to_hmm_pfn_flags(struct hmm_range *range, pud_t pud) { diff --git a/mm/madvise.c b/mm/madvise.c index b17f684..6800f7e 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -1066,7 +1066,7 @@ static int guard_install_pud_entry(pud_t *pud, unsigned long addr, pud_t pudval = pudp_get(pud); /* If huge return >0 so we abort the operation + zap. */ - return pud_trans_huge(pudval) || pud_devmap(pudval); + return pud_trans_huge(pudval); } static int guard_install_pmd_entry(pmd_t *pmd, unsigned long addr, @@ -1075,7 +1075,7 @@ static int guard_install_pmd_entry(pmd_t *pmd, unsigned long addr, pmd_t pmdval = pmdp_get(pmd); /* If huge return >0 so we abort the operation + zap. */ - return pmd_trans_huge(pmdval) || pmd_devmap(pmdval); + return pmd_trans_huge(pmdval); } static int guard_install_pte_entry(pte_t *pte, unsigned long addr, @@ -1186,7 +1186,7 @@ static int guard_remove_pud_entry(pud_t *pud, unsigned long addr, pud_t pudval = pudp_get(pud); /* If huge, cannot have guard pages present, so no-op - skip. */ - if (pud_trans_huge(pudval) || pud_devmap(pudval)) + if (pud_trans_huge(pudval)) walk->action = ACTION_CONTINUE; return 0; @@ -1198,7 +1198,7 @@ static int guard_remove_pmd_entry(pmd_t *pmd, unsigned long addr, pmd_t pmdval = pmdp_get(pmd); /* If huge, cannot have guard pages present, so no-op - skip. */ - if (pmd_trans_huge(pmdval) || pmd_devmap(pmdval)) + if (pmd_trans_huge(pmdval)) walk->action = ACTION_CONTINUE; return 0; -- git-series 0.9.1