{"id":2180674,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2180674/?format=json","web_url":"http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260107091823.68974-8-jniethe@nvidia.com/","project":{"id":2,"url":"http://patchwork.ozlabs.org/api/1.1/projects/2/?format=json","name":"Linux PPC development","link_name":"linuxppc-dev","list_id":"linuxppc-dev.lists.ozlabs.org","list_email":"linuxppc-dev@lists.ozlabs.org","web_url":"https://github.com/linuxppc/wiki/wiki","scm_url":"https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git","webscm_url":"https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/"},"msgid":"<20260107091823.68974-8-jniethe@nvidia.com>","date":"2026-01-07T09:18:19","name":"[v2,07/11] mm: Add a new swap type for migration entries of device private pages","commit_ref":null,"pull_url":null,"state":"handled-elsewhere","archived":false,"hash":"a14bfaf03daa67bf61844cf9be9647b34489d744","submitter":{"id":92354,"url":"http://patchwork.ozlabs.org/api/1.1/people/92354/?format=json","name":"Jordan Niethe","email":"jniethe@nvidia.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260107091823.68974-8-jniethe@nvidia.com/mbox/","series":[{"id":487451,"url":"http://patchwork.ozlabs.org/api/1.1/series/487451/?format=json","web_url":"http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=487451","date":"2026-01-07T09:18:12","name":"Remove device private pages from physical address space","version":2,"mbox":"http://patchwork.ozlabs.org/series/487451/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2180674/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2180674/checks/","tags":{},"headers":{"Return-Path":"\n <linuxppc-dev+bounces-15370-incoming=patchwork.ozlabs.org@lists.ozlabs.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=K7E1c7P5;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=112.213.38.117; helo=lists.ozlabs.org;\n envelope-from=linuxppc-dev+bounces-15370-incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)","lists.ozlabs.org;\n arc=pass smtp.remote-ip=52.101.56.71 arc.chain=microsoft.com","lists.ozlabs.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com","lists.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=K7E1c7P5;\n\tdkim-atps=neutral","lists.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nvidia.com\n (client-ip=52.101.56.71; helo=bn1pr04cu002.outbound.protection.outlook.com;\n envelope-from=jniethe@nvidia.com; receiver=lists.ozlabs.org)","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nvidia.com;"],"Received":["from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4dmMv52p3pz1xpR\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 07 Jan 2026 20:20:01 +1100 (AEDT)","from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4dmMtK593vz2ynf;\n\tWed, 07 Jan 2026 20:19:21 +1100 (AEDT)","from BN1PR04CU002.outbound.protection.outlook.com\n (mail-eastus2azon11010071.outbound.protection.outlook.com [52.101.56.71])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange secp256r1 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 4dmMtJ73JZz2ykf\n\tfor <linuxppc-dev@lists.ozlabs.org>; Wed, 07 Jan 2026 20:19:20 +1100 (AEDT)","from DM4PR12MB9072.namprd12.prod.outlook.com (2603:10b6:8:be::6) by\n MN2PR12MB4335.namprd12.prod.outlook.com (2603:10b6:208:1d4::13) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Wed, 7 Jan\n 2026 09:18:59 +0000","from DM4PR12MB9072.namprd12.prod.outlook.com\n ([fe80::9e49:782:8e98:1ff1]) by DM4PR12MB9072.namprd12.prod.outlook.com\n ([fe80::9e49:782:8e98:1ff1%5]) with mapi id 15.20.9499.002; Wed, 7 Jan 2026\n 09:18:59 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1767777561;\n\tcv=pass;\n b=o1GcOQ8IWA2vzuUh5C4C5T55UEICvb9ACAASzxGtviGTrrxNhHIJwKjeWnosmAiHlpx6Js91NLs1w2wo/sYnckNKJmJKOK3YcIPv0BDKUTHYhB/Xdfe+nN+RLgslxa164zGiwwMY1z4dNWFXJxV7Hs6osP5RKJF7U5R/who9uWRay6InT8K6+Xkkmjo5mGNC3uPlbQrx4pZ9Lid+EqMJJNfUVZdhN7wWlLz4JlzwkQtqDbYp53IM6ZArRHdt4whizX5QVBcb8/dega53LuDOIbX8wttmSo5pzCfsYDP8XaX52QDCtfLD/OUj8+8sevfvnP/kFXEXYvW/OPnga4XWfw==","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=DYXQLn4N3V3NXipG1clrByACJbEvXC2PgGXn+90agzR98trvGHkxnQQKtWd0ebhlYtvMHkVz/bcHoTKh/xzlW4buHwE5VAd7S9HPz+TWktoG9MtLbLy4JHinAC8+FOAgucVubABaLXKcAs98cSWM0jzvjqql5MzxzW1g7WbDSY96RzEP9/IYcKih6Dgu0C/FVNtPjgj6Dfq01/JO0HJ6P5hmE0KoFrFVzCzCVOh7U8CxabKb3cQiybuY6vJ0Se4+wJsRGaYY7rJ6bdllXByc+1eKinFBhPdIqZTLUfJkHKCc4rcJftZbyn0xY/okjmcKyW9pn/tSwXIyVVHsgAbFig=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1767777561; c=relaxed/relaxed;\n\tbh=C9aj6PiUrCwqMql/PuF5C/6bsBspOVgysa2aa1exepM=;\n\th=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=NjKe4n7XUWknCMALx0yKd5Lz493/nUY0bdyiP6ZI49xpykUlIF2YVibHR6tXaXbOhGoHMovGzlXK5pcW7pup8HNM2qoSNPmQjZVrL4XA/16v2t5kS2m99YY+u4/hC7fTH2To+GMq9kqMoerZ5e+zda8sClxHjDZe9QL7cHxa5VOVx7PwsEALhloUrAMvwwnfluyntRdTXgx7a9bxWDbhxFJMRMdE+nIOeVosZ433TmxTTufo7ZlYBeEOm5M7BQ+OrzXiNO/BcvyfKnJ/ZLwJ6QzG1GwAtqRVnFrXA4q7ce4bFQiEFLLupuQazezkLq7DpujeI/kSOIXnQIM7wLkf4w==","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=C9aj6PiUrCwqMql/PuF5C/6bsBspOVgysa2aa1exepM=;\n b=vsbzFl37a1LArBBQ217ArnKdy/l9SHfJ2M/cKDiiJMBnhxre5kib6rnAjtofOjpORz7pTbSbm8eYNxc6twOdT9gFXvuJ1JtSwnN7rlL7UIxR3pPDiB7Q8QzmoCkrPt7AGcFY5EdbV7ryiJGa3sjQJ5y3QFcs5080Q7YJBfN1RYh2nSfQViVr6wMIIiAwRVQ/tJnYmSm+s7yJ5k1F+NmbsoCMB8Gs3uoSFH895+vODJxRREU2xfLSfgP+Uka8XjjhEYH9IlAy+GnsRD8eiLkCmuHNODa1B4dfHeRJYijxsbBJrurs5seFJMr+Kh6Ot/QHtxwTlkZMbasykNQ65aeEyQ=="],"ARC-Authentication-Results":["i=2; lists.ozlabs.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com;\n dkim=pass (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=K7E1c7P5; dkim-atps=neutral;\n spf=pass (client-ip=52.101.56.71;\n helo=bn1pr04cu002.outbound.protection.outlook.com;\n envelope-from=jniethe@nvidia.com;\n receiver=lists.ozlabs.org) smtp.mailfrom=nvidia.com","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;\n dkim=pass header.d=nvidia.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=C9aj6PiUrCwqMql/PuF5C/6bsBspOVgysa2aa1exepM=;\n b=K7E1c7P55UGTtlAeD9BBRWZqodkKz1msBJlkTaXcedRwyM6MHDdEXACwnvM1jvJPuCSG8lHH4rQL06Hne8FMH3y4RnhHwn+Jinez2JdqExljQl4o1NqK7PJzNuxyKtVLoXv8Rkpnh1lCQnj0akU0fqdd8zMZ6wmWtWGkHW0Z8hQuxx5pLQg4DY63DAlHG/l3xQEcRx3R5e0jCag4hwfrajmqPbPLHG+QmdRmmjxelmIoszMddmdUDeVjw3u/p1RnQO/r8TAzseS3FVIEjkXzx4PL5n0fS8U3fLcXhVXmDC0QZIGihTixMkL9RKdJeI+IvIi2NJPU/r01WJXj+nM2sw==","From":"Jordan Niethe <jniethe@nvidia.com>","To":"linux-mm@kvack.org","Cc":"balbirs@nvidia.com,\n\tmatthew.brost@intel.com,\n\takpm@linux-foundation.org,\n\tlinux-kernel@vger.kernel.org,\n\tdri-devel@lists.freedesktop.org,\n\tdavid@redhat.com,\n\tziy@nvidia.com,\n\tapopple@nvidia.com,\n\tlorenzo.stoakes@oracle.com,\n\tlyude@redhat.com,\n\tdakr@kernel.org,\n\tairlied@gmail.com,\n\tsimona@ffwll.ch,\n\trcampbell@nvidia.com,\n\tmpenttil@redhat.com,\n\tjgg@nvidia.com,\n\twilly@infradead.org,\n\tlinuxppc-dev@lists.ozlabs.org,\n\tintel-xe@lists.freedesktop.org,\n\tjgg@ziepe.ca,\n\tFelix.Kuehling@amd.com","Subject":"[PATCH v2 07/11] mm: Add a new swap type for migration entries of\n device private pages","Date":"Wed,  7 Jan 2026 20:18:19 +1100","Message-Id":"<20260107091823.68974-8-jniethe@nvidia.com>","X-Mailer":"git-send-email 2.34.1","In-Reply-To":"<20260107091823.68974-1-jniethe@nvidia.com>","References":"<20260107091823.68974-1-jniethe@nvidia.com>","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-ClientProxiedBy":"SJ0PR03CA0385.namprd03.prod.outlook.com\n (2603:10b6:a03:3a1::30) To DM4PR12MB9072.namprd12.prod.outlook.com\n (2603:10b6:8:be::6)","X-Mailing-List":"linuxppc-dev@lists.ozlabs.org","List-Id":"<linuxppc-dev.lists.ozlabs.org>","List-Help":"<mailto:linuxppc-dev+help@lists.ozlabs.org>","List-Owner":"<mailto:linuxppc-dev+owner@lists.ozlabs.org>","List-Post":"<mailto:linuxppc-dev@lists.ozlabs.org>","List-Archive":"<https://lore.kernel.org/linuxppc-dev/>,\n  <https://lists.ozlabs.org/pipermail/linuxppc-dev/>","List-Subscribe":"<mailto:linuxppc-dev+subscribe@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-digest@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-nomail@lists.ozlabs.org>","List-Unsubscribe":"<mailto:linuxppc-dev+unsubscribe@lists.ozlabs.org>","Precedence":"list","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"DM4PR12MB9072:EE_|MN2PR12MB4335:EE_","X-MS-Office365-Filtering-Correlation-Id":"3f61c9a2-1e11-4bc3-5141-08de4dcdca35","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;ARA:13230040|7416014|376014|1800799024|366016;","X-Microsoft-Antispam-Message-Info":"\n R75kbQcNyL/4Vk6JQaGbR6IDlp0GiskJWiDUUo0QhPrlsSrYn3Ti3rGdO26crVoUVwQAaGm/72vB0fwWrwQdKDfNKbJrieV3zH6Pa1nRIBPl0Isp466TyqccslcyUeNgl5dQthmROKHDAvebslgDQhZJ4bZHHWnrjFwU3/oNCofcTkE11SRAZ0bVvsQYp8135PIYS7WJpf6JHDibp0YTIf7dsWOmGghPgMc5PRNoMqiKGNypiHyMfUTVoApELrR+N8nH1Z4cxYxxqM9GccIL61sZTVnrgFnlFLqCU6BbersTaBVy/v6zi12OCEC0wQ2YQaGZ9pzeHQoyiL7jjsQotUd27J4FB0TQHHiffy9l+5CdKY1AXJznSJWjIh8yCSvSWc04iu19GxAm7W59WW29Oq5kxx3EwEWCZioiLCj8vy+QAIPV7m6kDmfwpD7VrPvsMWVeAIqZajsNAHFVkFm07KsG7y8IACvc4CParhIihA7tNhdMUoi4WDhk787GoaYreyZT4Heykq9+W4L7fu3ZzvOcCZ4XAs/rLCNJ3DcV3GRHhkstKOul5k7mkbAsa46cVrnOD2xzETMwsPMscDXtCiV8KtF/TpfRJxqbpfV3vUiL8Jx/PfYbCQjRxphMn9maLdkIhyo1eadrw/Ix101iftEdg1wWdpY6PmElmlyBsBMtwUYFhVJE6XvmSRGRozzkZ1iwxYsM4yKZ+BSP+Y3mNnV5tcXT5RRAwhAK57Sz1MF7NFb13i89vXLo+nJHi6JQCfAN122wAVoMddGb5sqm1kn38gqif5mx07sfFacCrnHu9rUKORzAj8WigJ7Mu8UV+CnbIuXll0Xq8MVTZxeIAhMPHn2kRj9CsFO+/yzupf0HiZZoqJyAgGW7BNkodx97H0rDcUR21SjGOjEHf0Vn5gQ4WQz6rkR20cKFox2ZtTan1oDhhZ7W/bLE6mswWYh9JSEQAuKq3vYSCZuqJNo0iE85iYNUQQsn2srWPs2QDCta6LjtSY+RfqQnKM9t2SiPW+uj5WAsJqpEBtWs+wIeQnFfz8CvXoiTG6IK6yXKOihAlNuROBMHI6QVQFBybtYmwJe0LianzPo7WRQ7NgGu3BVvX8SmjCSJNB39O0MLXCK1HGWt0g6eqkGnlNcGKNltgr2GPZGiUvTxKx+lvFhf+hNKkmJCY1hMfJd3BFYLmuZYsMY3FpJ1oeTR3Uk1aGrhf4O5S48VyxnvtBrZaAO5rG/m8da8Luj0cTvHOnXHRla1rCv9gIw8jqoeWuvQ48IllJytJpcujQTd5cTRSeqVWQWj2OTjzfYr09JlkDHw6trCSYLFDzdP1zaNQHbKmLQ4hI1oFn4y2gt4GDRt8dBOuLSMIu7xkNzCffXfoHvlPXkya4YN2iTETFbbrQfZiU78BGq+tJy1oxpauuxUDzQZTrlMolXdN0Sa7ElO0FVJhsHl4twB2yJdx46I1Ww1ane/","X-Forefront-Antispam-Report":"\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR12MB9072.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n xqLLrA4SgKCEPCq80/Pt6k9/pbixGTWCx54lOKdcuHv5q+I+q5dwQGwlPvc98J5Wq2Xna3pJyF0uO99cpElH9j3H8WU8Til1YuwAmjIBTMKEWBP4g3hgSi1M6D7q0lQaWV0RuYKmWquGvV7WOFWcQ8PPkbQjLDuXcvGvSSDelzO0RIFq9VTZiptdvlPCARKFgEMlQKHiZ20lLuu/P31RKVdRIAeX4k6zWdG0dYDtmw6aWcW/bIgxJRBP6zqChFB5vbfsFnM0OWEaKg1j1vnQSez4LUq9XLsyApTutA4ve0/YHnX1EqAVOvleASr6W+RgJzFzS0vi4aYBJ+SoKwmyDXR8kYu0nlu+vuzTZ6h21fRiaylyEkfUZnyjsB5pJbVINbQbT0M4jXsPd0uzTgm9bsymA8vor6To1VdoF/Pbe9p8/7Rk9s52qnsrEN9+bReA1vyki+/yYYy9k+SQi7erp6JK6r72hANe5EeXym3Rpm80MQ4NSBEcVK03j5gICQD0ebkC9Yx8JowiMQG/I8IOeTO5MIUA4QEyDMpyvwrsV7UW5lCAcjD1m/DMx7I2C1S/P+wiwaxebSVXOKGqYnniy/EofVFl+pZ0xl5Igzlm3/LOGgYKRhskzkKOJVrmdoczQlt85py9TNuyoETDXePlB3aW/PRwmtBo/DKMOcpCbqA1up2XhrF8oCi/B7oOFs0aZcNoKTd5POiKDO2PUdFHoxiOpYqlmbeQt3fBtqjtFzBx85nXVlfdfVv74BsCFiSJvMvoX/y7yijObgu9wOMucJuBKWa1vlJieNr4nZpvBt8y2OOnkYdaK+Dt/wt7ucs5SEO3WMbUmsOfNyrkG/Gl/frWuUHsWQBFsc+2B2gW+MJ9sZz+M86HoDx2YHrTWvdjUkxh6AvJ9wPBXOgx4L336jwedEUW6STZUayPMvr9rL0GdmpnnSi4gQPTwbI83XutUXSdIvpnIucGKa/z6rr5p3l/bKbEuo4utnf7c00Ph4d7KcsEA9RPG5I5Xgz4Fy+vUzIywLRwmFoRjfpWFu/mBfD83mOuLU1ZD4IDh16V0oJC07y0o1FBPweksg5fInAjpmVuLKAdlqfPxhnhjrOzQzkzOsTrxGlI4IlKZcwVTwJOPAzk8al1tHf8Zgd4XUlgpBDNmw8Q5vsZMz9k84wMcp9NynZjHRywkRvvUlI0FB2SdoI6ezfOTBGV2kL032L8+SZ7NGrEkr9JxMz7kXJyNACDffKAVTzYwjumLES/M0TIpL/pVwEg0II5HWzHAUfNCboV1PXuRRQGOAHxLPoTinxSavAbSr5xSvwwUOT1ysJr4ASggJqLWLyODyzNQIkQWJDeZGRIgJmwjA49AZUvVf4C1OzffI7ETzAXcDqVh2hZ1Khik4U6hjVpzDSRiFy7ualfhIn0c/9nDPR7aZCTY2dt38623PDpGBaSH91P/K2Q3vGiEqealBLpwYFySggXAF39TyX72bC8FRmEDPAF6Vb0+SZlPObikY4Z0Y72jIjt+j9FcvxxyV1sjBvIt6fGEVZGxFsP+VMpV0lSfauMonLvCyuRC4QZAJbv0pFmAQETziDTGvpPIEBfuHWSHrEPyTsZOF1a9sv7zBSwxJtPgXWXGUARzL59TyNX63bKFZf4l9YQZBGYS/7jSUo4RB4hogdceCxrkzkKOSz05mpnEd3tJvKDYppBmF3E70khZZtURBCAWBonC12klzqIX1k4slwl4SNBJVSHd0qdHZqLsA==","X-OriginatorOrg":"Nvidia.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 3f61c9a2-1e11-4bc3-5141-08de4dcdca35","X-MS-Exchange-CrossTenant-AuthSource":"DM4PR12MB9072.namprd12.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"07 Jan 2026 09:18:59.3024\n (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":"\n aVpjqozdUyvcVtlXp5Luhgiuw07R81PRLkZD30z2m5S3QvwJ8epU3m97kPsvaAl255kT65BLiiF41DL7RVWxYQ==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"MN2PR12MB4335","X-Spam-Status":"No, score=-0.2 required=3.0 tests=ARC_SIGNED,ARC_VALID,\n\tDKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,\n\tRCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS\n\tautolearn=disabled version=4.0.1 OzLabs 8","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on lists.ozlabs.org"},"content":"A future change will remove device private pages from the physical\naddress space. This will mean that device private pages no longer have\npfns and must be handled separately.\n\nWhen migrating a device private page a migration entry is created for\nthat page - this includes the pfn for that page. Once device private\npages begin using device memory offsets instead of pfns we will need to\nbe able to determine which kind of value is in the entry so we can\nassociate it with the correct page.\n\nIntroduce new swap types:\n\n  - SWP_MIGRATION_DEVICE_READ\n  - SWP_MIGRATION_DEVICE_WRITE\n  - SWP_MIGRATION_DEVICE_READ_EXCLUSIVE\n\nThese correspond to\n\n  - SWP_MIGRATION_READ\n  - SWP_MIGRATION_WRITE\n  - SWP_MIGRATION_READ_EXCLUSIVE\n\nexcept the swap entry contains a device private offset.\n\nThe SWP_MIGRATION_DEVICE swap types are treated as specializations of\nthe SWP_MIGRATION types. That is, the existing helpers such as\nis_writable_migration_entry() will still return true for a\nSWP_MIGRATION_DEVICE_WRITE entry. Likewise, the\nmake_*__migration_entry_from_page() helpers will determine create either\na SWP_MIGRATION_DEVICE or a SWP_MIGRATION type as the page requires.\n\nIntroduce new helpers such as\nis_writable_device_migration_private_entry() to disambiguate between a\nSWP_MIGRATION_WRITE and a SWP_MIGRATION_DEVICE_WRITE entry.\n\nIntroduce corresponding softleaf types and helpers.\n\nSigned-off-by: Jordan Niethe <jniethe@nvidia.com>\nSigned-off-by: Alistair Popple <apopple@nvidia.com>\n---\nv1:\n  - Update for softleaf infrastructure\n  - Handle make_readable_migration_entry_from_page() and friends\n  - s/make_device_migration_readable_exclusive_migration_entry/make_readable_exclusive_migration_device_private_entry\n  - s/is_device_migration_readable_exclusive_entry/is_readable_exclusive_device_private_migration_entry/\nv2:\n  - Add softleaf_is_migration_device_private_read()\n---\n include/linux/leafops.h | 86 +++++++++++++++++++++++++++++++++++++----\n include/linux/swap.h    |  8 +++-\n include/linux/swapops.h | 79 +++++++++++++++++++++++++++++++++++++\n 3 files changed, 164 insertions(+), 9 deletions(-)","diff":"diff --git a/include/linux/leafops.h b/include/linux/leafops.h\nindex 2fde8208da13..2fa09ffe9e34 100644\n--- a/include/linux/leafops.h\n+++ b/include/linux/leafops.h\n@@ -28,6 +28,9 @@ enum softleaf_type {\n \tSOFTLEAF_DEVICE_PRIVATE_READ,\n \tSOFTLEAF_DEVICE_PRIVATE_WRITE,\n \tSOFTLEAF_DEVICE_EXCLUSIVE,\n+\tSOFTLEAF_MIGRATION_DEVICE_READ,\n+\tSOFTLEAF_MIGRATION_DEVICE_READ_EXCLUSIVE,\n+\tSOFTLEAF_MIGRATION_DEVICE_WRITE,\n \t/* H/W posion types. */\n \tSOFTLEAF_HWPOISON,\n \t/* Marker types. */\n@@ -165,6 +168,12 @@ static inline enum softleaf_type softleaf_type(softleaf_t entry)\n \t\treturn SOFTLEAF_DEVICE_PRIVATE_READ;\n \tcase SWP_DEVICE_EXCLUSIVE:\n \t\treturn SOFTLEAF_DEVICE_EXCLUSIVE;\n+\tcase SWP_MIGRATION_DEVICE_READ:\n+\t\treturn SOFTLEAF_MIGRATION_DEVICE_READ;\n+\tcase SWP_MIGRATION_DEVICE_WRITE:\n+\t\treturn SOFTLEAF_MIGRATION_DEVICE_WRITE;\n+\tcase SWP_MIGRATION_DEVICE_READ_EXCLUSIVE:\n+\t\treturn SOFTLEAF_MIGRATION_DEVICE_READ_EXCLUSIVE;\n #endif\n #ifdef CONFIG_MEMORY_FAILURE\n \tcase SWP_HWPOISON:\n@@ -190,16 +199,75 @@ static inline bool softleaf_is_swap(softleaf_t entry)\n \treturn softleaf_type(entry) == SOFTLEAF_SWAP;\n }\n \n+/**\n+ * softleaf_is_migration_device_private() - Is this leaf entry a migration\n+ * device private entry?\n+ * @entry: Leaf entry.\n+ *\n+ * Returns: true if the leaf entry is a device private entry, otherwise false.\n+ */\n+static inline bool softleaf_is_migration_device_private(softleaf_t entry)\n+{\n+\tswitch (softleaf_type(entry)) {\n+\tcase SOFTLEAF_MIGRATION_DEVICE_READ:\n+\tcase SOFTLEAF_MIGRATION_DEVICE_WRITE:\n+\tcase SOFTLEAF_MIGRATION_DEVICE_READ_EXCLUSIVE:\n+\t\treturn true;\n+\tdefault:\n+\t\treturn false;\n+\t}\n+}\n+\n+/**\n+ * softleaf_is_migration_device_private_write() - Is this leaf entry a writable\n+ * device private migration entry?\n+ * @entry: Leaf entry.\n+ *\n+ * Returns: true if the leaf entry is a writable device private migration entry,\n+ * otherwise false.\n+ */\n+static inline bool softleaf_is_migration_device_private_write(softleaf_t entry)\n+{\n+\treturn softleaf_type(entry) == SOFTLEAF_MIGRATION_DEVICE_WRITE;\n+}\n+\n+/**\n+ * softleaf_is_migration_device_private_read() - Is this leaf entry a readable\n+ * device private migration entry?\n+ * @entry: Leaf entry.\n+ *\n+ * Returns: true if the leaf entry is an readable device private migration\n+ * entry, otherwise false.\n+ */\n+static inline bool softleaf_is_migration_device_private_read(softleaf_t entry)\n+{\n+\treturn softleaf_type(entry) == SOFTLEAF_MIGRATION_DEVICE_READ;\n+}\n+\n+/**\n+ * softleaf_is_migration_read_exclusive() - Is this leaf entry an exclusive\n+ * readable device private migration entry?\n+ * @entry: Leaf entry.\n+ *\n+ * Returns: true if the leaf entry is an exclusive readable device private\n+ * migration entry, otherwise false.\n+ */\n+static inline bool softleaf_is_migration_device_private_read_exclusive(softleaf_t entry)\n+{\n+\treturn softleaf_type(entry) == SOFTLEAF_MIGRATION_DEVICE_READ_EXCLUSIVE;\n+}\n+\n /**\n  * softleaf_is_migration_write() - Is this leaf entry a writable migration entry?\n  * @entry: Leaf entry.\n  *\n- * Returns: true if the leaf entry is a writable migration entry, otherwise\n- * false.\n+ * Returns: true if the leaf entry is a writable migration entry or a writable\n+ * device private migration entry, otherwise false.\n  */\n static inline bool softleaf_is_migration_write(softleaf_t entry)\n {\n-\treturn softleaf_type(entry) == SOFTLEAF_MIGRATION_WRITE;\n+\treturn softleaf_type(entry) == SOFTLEAF_MIGRATION_WRITE ||\n+\t       softleaf_is_migration_device_private_write(entry);\n }\n \n /**\n@@ -211,7 +279,8 @@ static inline bool softleaf_is_migration_write(softleaf_t entry)\n  */\n static inline bool softleaf_is_migration_read(softleaf_t entry)\n {\n-\treturn softleaf_type(entry) == SOFTLEAF_MIGRATION_READ;\n+\treturn softleaf_type(entry) == SOFTLEAF_MIGRATION_READ ||\n+\t       softleaf_is_migration_device_private_read(entry);\n }\n \n /**\n@@ -219,12 +288,13 @@ static inline bool softleaf_is_migration_read(softleaf_t entry)\n  * readable migration entry?\n  * @entry: Leaf entry.\n  *\n- * Returns: true if the leaf entry is an exclusive readable migration entry,\n- * otherwise false.\n+ * Returns: true if the leaf entry is an exclusive readable migration entry or\n+ * exclusive readable device private migration entry, otherwise false.\n  */\n static inline bool softleaf_is_migration_read_exclusive(softleaf_t entry)\n {\n-\treturn softleaf_type(entry) == SOFTLEAF_MIGRATION_READ_EXCLUSIVE;\n+\treturn softleaf_type(entry) == SOFTLEAF_MIGRATION_READ_EXCLUSIVE ||\n+\t       softleaf_is_migration_device_private_read_exclusive(entry);\n }\n \n /**\n@@ -241,7 +311,7 @@ static inline bool softleaf_is_migration(softleaf_t entry)\n \tcase SOFTLEAF_MIGRATION_WRITE:\n \t\treturn true;\n \tdefault:\n-\t\treturn false;\n+\t\treturn softleaf_is_migration_device_private(entry);\n \t}\n }\n \ndiff --git a/include/linux/swap.h b/include/linux/swap.h\nindex 38ca3df68716..c15e3b3067cd 100644\n--- a/include/linux/swap.h\n+++ b/include/linux/swap.h\n@@ -74,12 +74,18 @@ static inline int current_is_kswapd(void)\n  *\n  * When a page is mapped by the device for exclusive access we set the CPU page\n  * table entries to a special SWP_DEVICE_EXCLUSIVE entry.\n+ *\n+ * Because device private pages do not use regular PFNs, special migration\n+ * entries are also needed.\n  */\n #ifdef CONFIG_DEVICE_PRIVATE\n-#define SWP_DEVICE_NUM 3\n+#define SWP_DEVICE_NUM 6\n #define SWP_DEVICE_WRITE (MAX_SWAPFILES+SWP_HWPOISON_NUM+SWP_MIGRATION_NUM)\n #define SWP_DEVICE_READ (MAX_SWAPFILES+SWP_HWPOISON_NUM+SWP_MIGRATION_NUM+1)\n #define SWP_DEVICE_EXCLUSIVE (MAX_SWAPFILES+SWP_HWPOISON_NUM+SWP_MIGRATION_NUM+2)\n+#define SWP_MIGRATION_DEVICE_READ (MAX_SWAPFILES+SWP_HWPOISON_NUM+SWP_MIGRATION_NUM+3)\n+#define SWP_MIGRATION_DEVICE_READ_EXCLUSIVE (MAX_SWAPFILES+SWP_HWPOISON_NUM+SWP_MIGRATION_NUM+4)\n+#define SWP_MIGRATION_DEVICE_WRITE (MAX_SWAPFILES+SWP_HWPOISON_NUM+SWP_MIGRATION_NUM+5)\n #else\n #define SWP_DEVICE_NUM 0\n #endif\ndiff --git a/include/linux/swapops.h b/include/linux/swapops.h\nindex a9ad997bd5ec..bae76d3831fb 100644\n--- a/include/linux/swapops.h\n+++ b/include/linux/swapops.h\n@@ -148,6 +148,43 @@ static inline swp_entry_t make_device_exclusive_entry(pgoff_t offset)\n \treturn swp_entry(SWP_DEVICE_EXCLUSIVE, offset);\n }\n \n+static inline swp_entry_t make_readable_migration_device_private_entry(pgoff_t offset)\n+{\n+\treturn swp_entry(SWP_MIGRATION_DEVICE_READ, offset);\n+}\n+\n+static inline swp_entry_t make_writable_migration_device_private_entry(pgoff_t offset)\n+{\n+\treturn swp_entry(SWP_MIGRATION_DEVICE_WRITE, offset);\n+}\n+\n+static inline bool is_device_private_migration_entry(swp_entry_t entry)\n+{\n+\treturn unlikely(swp_type(entry) == SWP_MIGRATION_DEVICE_READ ||\n+\t\t\tswp_type(entry) == SWP_MIGRATION_DEVICE_READ_EXCLUSIVE ||\n+\t\t\tswp_type(entry) == SWP_MIGRATION_DEVICE_WRITE);\n+}\n+\n+static inline bool is_readable_device_migration_private_entry(swp_entry_t entry)\n+{\n+\treturn unlikely(swp_type(entry) == SWP_MIGRATION_DEVICE_READ);\n+}\n+\n+static inline bool is_writable_device_migration_private_entry(swp_entry_t entry)\n+{\n+\treturn unlikely(swp_type(entry) == SWP_MIGRATION_DEVICE_WRITE);\n+}\n+\n+static inline swp_entry_t make_readable_exclusive_migration_device_private_entry(pgoff_t offset)\n+{\n+\treturn swp_entry(SWP_MIGRATION_DEVICE_READ_EXCLUSIVE, offset);\n+}\n+\n+static inline bool is_readable_exclusive_device_private_migration_entry(swp_entry_t entry)\n+{\n+\treturn swp_type(entry) == SWP_MIGRATION_DEVICE_READ_EXCLUSIVE;\n+}\n+\n #else /* CONFIG_DEVICE_PRIVATE */\n static inline swp_entry_t make_readable_device_private_entry(pgoff_t offset)\n {\n@@ -164,6 +201,36 @@ static inline swp_entry_t make_device_exclusive_entry(pgoff_t offset)\n \treturn swp_entry(0, 0);\n }\n \n+static inline swp_entry_t make_readable_migration_device_private_entry(pgoff_t offset)\n+{\n+\treturn swp_entry(0, 0);\n+}\n+\n+static inline swp_entry_t make_writable_migration_device_private_entry(pgoff_t offset)\n+{\n+\treturn swp_entry(0, 0);\n+}\n+\n+static inline bool is_device_private_migration_entry(swp_entry_t entry)\n+{\n+\treturn false;\n+}\n+\n+static inline bool is_writable_device_migration_private_entry(swp_entry_t entry)\n+{\n+\treturn false;\n+}\n+\n+static inline swp_entry_t make_readable_exclusive_migration_device_private_entry(pgoff_t offset)\n+{\n+\treturn swp_entry(0, 0);\n+}\n+\n+static inline bool is_readable_exclusive_device_private_migration_entry(swp_entry_t entry)\n+{\n+\treturn false;\n+}\n+\n #endif /* CONFIG_DEVICE_PRIVATE */\n \n #ifdef CONFIG_MIGRATION\n@@ -175,6 +242,10 @@ static inline swp_entry_t make_readable_migration_entry(pgoff_t offset)\n \n static inline swp_entry_t make_readable_migration_entry_from_page(struct page *page, pgoff_t flags)\n {\n+\tif (is_device_private_page(page))\n+\t\treturn make_readable_migration_device_private_entry(\n+\t\t\t\tpage_to_pfn(page) | flags);\n+\n \treturn swp_entry(SWP_MIGRATION_READ, page_to_pfn(page) | flags);\n }\n \n@@ -186,6 +257,10 @@ static inline swp_entry_t make_readable_exclusive_migration_entry(pgoff_t offset\n static inline swp_entry_t make_readable_exclusive_migration_entry_from_page(struct page *page,\n \t\t\t\t\t\t\t\t\t    pgoff_t flags)\n {\n+\tif (is_device_private_page(page))\n+\t\treturn make_readable_exclusive_migration_device_private_entry(\n+\t\t\t\tpage_to_pfn(page) | flags);\n+\n \treturn swp_entry(SWP_MIGRATION_READ_EXCLUSIVE, page_to_pfn(page) | flags);\n }\n \n@@ -197,6 +272,10 @@ static inline swp_entry_t make_writable_migration_entry(pgoff_t offset)\n static inline swp_entry_t make_writable_migration_entry_from_page(struct page *page,\n \t\t\t\t\t\t\t\t  pgoff_t flags)\n {\n+\tif (is_device_private_page(page))\n+\t\treturn make_writable_migration_device_private_entry(\n+\t\t\t\tpage_to_pfn(page) | flags);\n+\n \treturn swp_entry(SWP_MIGRATION_WRITE, page_to_pfn(page) | flags);\n }\n \n","prefixes":["v2","07/11"]}