get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.1/patches/2180672/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2180672,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2180672/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260107091823.68974-6-jniethe@nvidia.com/",
    "project": {
        "id": 2,
        "url": "http://patchwork.ozlabs.org/api/1.1/projects/2/?format=api",
        "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-6-jniethe@nvidia.com>",
    "date": "2026-01-07T09:18:17",
    "name": "[v2,05/11] mm/page_vma_mapped: Add flags to page_vma_mapped_walk::pfn to track device private pages",
    "commit_ref": null,
    "pull_url": null,
    "state": "handled-elsewhere",
    "archived": false,
    "hash": "98cef49eb5f408f22205a159c5196418e929b077",
    "submitter": {
        "id": 92354,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/92354/?format=api",
        "name": "Jordan Niethe",
        "email": "jniethe@nvidia.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260107091823.68974-6-jniethe@nvidia.com/mbox/",
    "series": [
        {
            "id": 487451,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/487451/?format=api",
            "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/2180672/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2180672/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "\n <linuxppc-dev+bounces-15368-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=PSImS1mU;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=2404:9400:21b9:f100::1; helo=lists.ozlabs.org;\n envelope-from=linuxppc-dev+bounces-15368-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=PSImS1mU;\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\n [IPv6:2404:9400:21b9:f100::1])\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 4dmMtm44Hnz1xpR\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 07 Jan 2026 20:19:44 +1100 (AEDT)",
            "from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4dmMtH5gHBz2yZ6;\n\tWed, 07 Jan 2026 20:19:19 +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 4dmMtH15C1z2yVP\n\tfor <linuxppc-dev@lists.ozlabs.org>; Wed, 07 Jan 2026 20:19:19 +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:51 +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:51 +0000"
        ],
        "ARC-Seal": [
            "i=2; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1767777559;\n\tcv=pass;\n b=XcZ8/Okvknn1TfpeFw1pp2yDGQ79C/DLl+zULtlYe4gAg+RRQyJDKIeK86cWt/bZqxI38dqItdvO/lAkMsyJAVyKlQNbEs/P9vRuOA2+pDJRYfX50bWRSF4cUf/2n2cf7CvcHyVKf4+x99fsGUnR4KF4q89uYJwXDS0W/A3+vUgvxMhsqeuKwyiPOlTX5o2maNEs3hDXhcyvUJL/lDIPM/uYlJZlzxTB0eyksScV3cbsS/7SV+O8EyYiBVBlDIEPAEckNSKfnQion3T+adS4Z2uJ1KhsxICBADlj6oj4xF8gQ9aPu9c4Iu/U6Kue4oN+Gknd/KrhGJprUbetqcLMMg==",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=i2OcPNxYHWg/WA8oiAoMwELD/9LDWxDziIx92AJ9jFkPKsSg/Uehkyw1P6UueNsobP0okvGRA+2qKQoAYSst/f1IjqFuPwH83WxTwYuufgC2DMxwrkSyLkk7E6/jk5hK/+RanErnFXd0l7Jnr+Dqvostys+JYFJXHGXuw7z+IwTwkY3qxzJw6O9ic786EzAUMn4eaD9fD+bEWTex9v9WNyh8odbv9EYgj8LLbqIAnpIXOTtFyR1Fy+6E8gScJH2zXr5PiuwNmyDzV+dGp9Q4WHPvSykcSyQ8p4s8cQEVo/oHbnZNjgDstu5v9HxkGDcYg/8xvUEw2YESp9wzObSrYg=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1767777559; c=relaxed/relaxed;\n\tbh=yOz521J3yjFKdqj1ccDxEWT7+6idlIuUFWZA9NmhEZE=;\n\th=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=KgP7NY8FcQ7gHYFpSEVViD9bWMPFEL9l6nY5zXQFfpmdQLvvNkMJFfSfF/ts50vdB0+xdFRWyVxhfIZMSb+ODpDuzor5WfrH1eMpLKRJ4DmKTbwnUK0sRnOLRcgjuWVMIdoRPrHJhB5T5Yg9Z/tSx5KoGMfxYKcMGBkpwaZOlwnejTSD4nYn9PLmI+YMwK8VIkeaHrzb9YQV3aV3iwsd1sEy95uLR+R5E9srjzoMa0XFmMN4BrOzUZwn4J28XzvQ5EPFtF0wAj5RXRglLUd6p/Bbjw6DFjyNw4bDxxu7Pol1nQHysr+GZtQHfPwlAorZtl/Fi0HpsYIA8Le0UImjIA==",
            "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=yOz521J3yjFKdqj1ccDxEWT7+6idlIuUFWZA9NmhEZE=;\n b=iJHhxhP6X3JreHmf7ZB+lsiJCpvCmitl1aOgBCxdzJ4cPtNHtM2ilmOXbOQ2AFUHyYo1rFzwt1eoF3yYugfmfM8tWGqpFjJreVECZEwLCvZ8DI00XhuOKDJ5Jp19CDpfqXNJYtvYLNF76xHMiry2ZlhgsxqKVLirxOoSg+vDF612rqTVAhMWWCCK/e5EnQe4q/QPq79OH0SP6276FbS+KQhlTZZrg0PPm/iDGLKH20L5m5XESO0pAYHC7kbX4USnmXKqTR6e+tF1Uygsbn0tHjQMEmK491tgVrlW5W7giyGS9TLMBTFdQ1qzJKUhptnZnXGGh86k9wxBp4UCtHd1Gg=="
        ],
        "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=PSImS1mU; 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=yOz521J3yjFKdqj1ccDxEWT7+6idlIuUFWZA9NmhEZE=;\n b=PSImS1mUsmMQYPM1uhgMjvnINs2zBnNevm4PW6edb+FcTMUyz3mxP0qe/CGLeQHiVP3dxFkQLCfzGq1JUXVwDFJFTvlMLbpG2gSdnKRKLUrp8CbX5pjcDKCSRdvhtrzwr0C4IG7LJwmU/0lb+chWsKSk9sD/DlFIS34T0ZTAOHilEh5uoYUMVADa6vyMfR6J9tWl+Cz1D4MbC5q4xZPHBXh9TCTRVaPUeFsT02xWoPsM51XmXolvdcHSuKLmae/6dDiAab8JXy7uXrkMG6y3k7fDPcYbhWUG46frrrDuFcLA9NHPRKTsVaVUOhr7lCfveiqq64gO2OQQ2lQleOAvlw==",
        "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 05/11] mm/page_vma_mapped: Add flags to\n page_vma_mapped_walk::pfn to track device private pages",
        "Date": "Wed,  7 Jan 2026 20:18:17 +1100",
        "Message-Id": "<20260107091823.68974-6-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": "SJ0PR03CA0219.namprd03.prod.outlook.com\n (2603:10b6:a03:39f::14) 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": "89e9ff4c-9835-4fa6-c5d0-08de4dcdc552",
        "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 ZLv6dzTozkzclCd0tZqZd6o/dvgROKdbXTbmTvx1Xu3/Y5Out9ngwuiJDtkYW3kglAhRhVXw49/Z664ZcNfWKqn1OXd3vYhUuUyq7439BwwWKanJsl+mk6divTiP+pE1y9DBGqg7lZ2iK9tZxa8MtrsJl/UTUMsIjaAbjXKh2gonCGCisb/cagz8yXbE0TdW8HyHFIaf51XgwHaO/vg0L1j30AuEVNA3RboZw+jH3BRoT8nOHhno72wV0aikKGGgXWX546bsLO96skuDh5BeGF0HsnkAeG0DniqK4BvABlkdJB45mVXwrGDAJc6njZRMHpFZ12c1D/HtuPOVFqf5OB2s3RmAxc39B90V58rYwvPvwkSfrPZ+EZZW7OCQsXMWokPDGTyY5gctqdyTg/AYIZGMqeDs12KqNT3nhqgc+OnTE3G45rD96PxspIY5AZA8064Sry1HwWNrAkHE0i7pIMILTN2RNZgVi2/cgf9FMlpC+97KefLROnbfcjnTMJYbptkcJN8CZBoSFONkZBFMFNZHEVBlk5ehfE73gVBKCdlQOutUecljku55H+tohQ2641qxA2YwBTtbmHYVw+OI7SX34o6YEMinPYpFVK3uXh0ugg4OAxhF0Zse7BU34Y5O80UggT+PlEgWTuuaZygQN5q6UMBn0ui/bvWgnbuIZs13fabLdxWML4uN84Y/xRxrVozgBS/V2cC6nX2SnWhGsD0Fcf7umO7jRyWMuReKSD78uRoQvJc3v7jCgTSL7B2UhQVthRQierSGCyaOwGy5bex0re9ftt5sPRfBl5eyr2HXN3nE8Y2Ys+9fTSVhlbVQAyNGb83SXDT1j0oXt792ydzAc3EsAukDNZZTzI8giFUUgpTrwweIVuxXB+wdztHK5G9SYifWNkgjZf6w8JZPR4DE+RDYowfCuU6A9i6x+oC4Oat9wr4buj0t51IK5xNu4EMwa2np5PbWbXfPgztJdfaReof494jZkpWAV9iAPPrLkUSA8e6hXYVJjr9ryOyl7u1/A+0jdXQ3+l+hVKaouJ4JaN0TkZD8DgXJOyz2aISo/AdxoiRphO9Qn2NcFWyiu3zn12/9/VPWYqNuV6Eb5ZlgcFihtz1IKlLfADdSCqkrO9fSaH3d0vNKvvUprZGRAl2Qos0ZFScC8Y/yej56OlSq60TOzI+01FYakCgbUV4hZQoC9NCUlN8PEDXoDjVSiMsfIJ/+fL9LHT/cSIJvDAd4hUr2m/QtnoFa6kVwXco6WQ2Puj6jpXaVOguIw1jx5eWaT5gB1sLNGll7yXXdYSl46YYjX3lvsNj860g3s3jouLc34cPYBXMMnZr5zDoSm9aNnboXb+u1kIiEhRCnn1GzPPqZHoHvNP0jKF0aQ4TxzeH9h5UhyvYsPyQTgxgr2RSfNHGspeZ3uajGIhSDxWvgBT6ZuHlDXbyBhZQemk+aW+aaNwOulN/RG37E+VIa",
        "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 SmMnw27oScToLdDUE3AHcz979GpSYIWIjEHlJGumEESYw3hA8psooNG/rPo2cuUUFzvMrikpcjwZrPuMfOhksSRidnbH+Rou5BfO5L61Hi7AJ+RrQqEVcikWGNywIYmOnKYARXiZgB7MOJERDeHojcYNzx5DHI2zhk7dDd6aVTDLrYTYY9NXxJ+X7kFHylb92Q9fhOrx8YOccFw7WWm9vPgwF/fDxjpSw9pGC9GgUQDfPluuq9E9Z9wTPXko264JpIuOwcaG83DgOa4hfmWaSld8A7zrPzRspXhKmonNzseHS9SnaIKWdS47JaHM2SxkuNrAmm9ed0iKv7eIIKgiWek455sVjAINZRw5S2lrrwj9sZQc5Y5izaQnk+Au3iNr8A5i5pH2d+iKKwl/RILf5a09H7J2tRANbVUgCg7pCPzE/+LVxhisL4grRwWo5sQHldNdqlmzmJQMWBRTuydwviKJ7S+pQJzpjE5omHsYQ/hnTQKGloQZuH7Pkx14Acj7LrRBrufjiceSz5aovUTWF5fKdNrMDh83gb2vRQ5wE3fRcDAORFCJ4A+tp1MTp9F0SEmxAfcGLr4mI3Pf/Bsh9uWA0j7P9ZKLbyUIR4ISFmnqt06hsPfTWtiMN7NH7Jr2lKk9ZypDsTgYW4uYy8+Ky0V3Iv46MyLOPYEKaLKziyldOeNRQkvxNkm20jztSlGpVd632kddIHlq8AnexIJ+PfRT8cD7h/WKcGyy/TjsHon3CGHS5bkD+Rhsj64o4PWXOI/usblLHsI0c2bKHTzTa+sa9qBa8pNylApCuDbdzdyzHPkrwM0YDZNdjrWab9XOGC/ihCke1/L8j0kg+djfO2XQW+ZYVly4Pioqef0prWm/+L9QY8wJd7LbHcaNam2RJGM5CvAkw2LdWdKD1nx6KwqY4Oz0ez5BvZp/KmfSXuLhhPagcqMrR/8OwQvOEeiybU16eezYOiMzvZk/sbyVVGibXWFeYkbzMODbF+SW/TcOQ1E0IsZORt/IWUbPkwYJht8sqnVGo34fLSyNy6YtG0e9Ammc0248WxtcaknRIwFQ6LweamXLWUx+lIbkO3Dw3g9jJHnzqrXvTDdnXGBcpgkdt6j90ufxOgpYWetmKwU55AZkKcIndbJMPQpnUPh0G1SqbTbbCfHcnCmjhv6uRfwcGy0ZrIeZZbK1FHGHzR4bX5SYLClPG4kGGYkTc2c/Kj/Nlf0ftyjlZJZ6xRUSRB0PBM+w3BxQzOREHyslvykS92rUWVjPMl5Q0fmrNMYiVQqQ3UyZG2/k+jPj5KBXZ15UESnCPY36SpIwgIZvhPLEWgmcgcFnCE46q0pEP7OAHOkfZE36v0Zclt0YQNEGXR8Pg8YIWcLXdxU0K8LGhXrN0QtOP7SpYudW92+k0nErXK8C+OwP07kzt7LP9MYAyKHvPXY5H+XePunxyqJOyYv7Bv2b8HPos8r7mEXoP12oUPf/m0InLMOOZtBNp7t2TA6PImyw+R30La5Ewmpj65UJqXcBJIZ89gKUEn4TS/cTSXNptu8k9FbpHsMbLBSObmwLAZBkTe8GVm9WZa+DHL04RMBbr48qhxB/hwtNBBmecZNxmhPlg3pJ02WRDT/XWA5MF/AZH/CI2KD7pZ5iB0AJXAP2rBS84o/aDk6VU1NK5L/vwhu3ax5UMvDi9X4J3EGXbpb8kAzyLVMkY6xGH9BSmHdP2+5T9qVaYvdc3oKQbO0XbPMalJ29rm7R0U5tmg==",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 89e9ff4c-9835-4fa6-c5d0-08de4dcdc552",
        "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:51.0888\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 2fVjwFoYQhERN8+z/aQlIw/DLR4/996KvXsHtZ5IoDYw3b9PNaJnD/sQJ9sAykcI2lgaRiKyOchPw8S0+GTtXw==",
        "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\nnormal PFN and must be handled separately.\n\nPrepare for this by modifying page_vma_mapped_walk::pfn to contain flags\nas well as a PFN. Introduce a PVMW_PFN_DEVICE_PRIVATE flag to indicate\nthat a page_vma_mapped_walk::pfn contains a PFN for a device private\npage.\n\nSigned-off-by: Jordan Niethe <jniethe@nvidia.com>\nSigned-off-by: Alistair Popple <apopple@nvidia.com>\n---\nv1:\n  - Update for HMM huge page support\nv2:\n  - Move adding device_private param to check_pmd() until final patch\n---\n include/linux/rmap.h | 30 +++++++++++++++++++++++++++++-\n mm/page_vma_mapped.c | 13 +++++++------\n mm/rmap.c            |  4 ++--\n mm/vmscan.c          |  2 +-\n 4 files changed, 39 insertions(+), 10 deletions(-)",
    "diff": "diff --git a/include/linux/rmap.h b/include/linux/rmap.h\nindex daa92a58585d..57c63b6a8f65 100644\n--- a/include/linux/rmap.h\n+++ b/include/linux/rmap.h\n@@ -939,9 +939,37 @@ struct page_vma_mapped_walk {\n \tunsigned int flags;\n };\n \n+/* pfn is a device private offset */\n+#define PVMW_PFN_DEVICE_PRIVATE\t(1UL << 0)\n+#define PVMW_PFN_SHIFT\t\t1\n+\n+static inline unsigned long page_vma_walk_pfn(unsigned long pfn)\n+{\n+\treturn (pfn << PVMW_PFN_SHIFT);\n+}\n+\n+static inline unsigned long folio_page_vma_walk_pfn(const struct folio *folio)\n+{\n+\tif (folio_is_device_private(folio))\n+\t\treturn page_vma_walk_pfn(folio_pfn(folio)) |\n+\t\t       PVMW_PFN_DEVICE_PRIVATE;\n+\n+\treturn page_vma_walk_pfn(folio_pfn(folio));\n+}\n+\n+static inline struct page *page_vma_walk_pfn_to_page(unsigned long pvmw_pfn)\n+{\n+\treturn pfn_to_page(pvmw_pfn >> PVMW_PFN_SHIFT);\n+}\n+\n+static inline struct folio *page_vma_walk_pfn_to_folio(unsigned long pvmw_pfn)\n+{\n+\treturn page_folio(page_vma_walk_pfn_to_page(pvmw_pfn));\n+}\n+\n #define DEFINE_FOLIO_VMA_WALK(name, _folio, _vma, _address, _flags)\t\\\n \tstruct page_vma_mapped_walk name = {\t\t\t\t\\\n-\t\t.pfn = folio_pfn(_folio),\t\t\t\t\\\n+\t\t.pfn = folio_page_vma_walk_pfn(_folio),\t\t\t\\\n \t\t.nr_pages = folio_nr_pages(_folio),\t\t\t\\\n \t\t.pgoff = folio_pgoff(_folio),\t\t\t\t\\\n \t\t.vma = _vma,\t\t\t\t\t\t\\\ndiff --git a/mm/page_vma_mapped.c b/mm/page_vma_mapped.c\nindex b38a1d00c971..96c525785d78 100644\n--- a/mm/page_vma_mapped.c\n+++ b/mm/page_vma_mapped.c\n@@ -129,9 +129,9 @@ static bool check_pte(struct page_vma_mapped_walk *pvmw, unsigned long pte_nr)\n \t\tpfn = softleaf_to_pfn(entry);\n \t}\n \n-\tif ((pfn + pte_nr - 1) < pvmw->pfn)\n+\tif ((pfn + pte_nr - 1) < (pvmw->pfn >> PVMW_PFN_SHIFT))\n \t\treturn false;\n-\tif (pfn > (pvmw->pfn + pvmw->nr_pages - 1))\n+\tif (pfn > ((pvmw->pfn >> PVMW_PFN_SHIFT) + pvmw->nr_pages - 1))\n \t\treturn false;\n \treturn true;\n }\n@@ -139,9 +139,9 @@ static bool check_pte(struct page_vma_mapped_walk *pvmw, unsigned long pte_nr)\n /* Returns true if the two ranges overlap.  Careful to not overflow. */\n static bool check_pmd(unsigned long pfn, struct page_vma_mapped_walk *pvmw)\n {\n-\tif ((pfn + HPAGE_PMD_NR - 1) < pvmw->pfn)\n+\tif ((pfn + HPAGE_PMD_NR - 1) < (pvmw->pfn >> PVMW_PFN_SHIFT))\n \t\treturn false;\n-\tif (pfn > pvmw->pfn + pvmw->nr_pages - 1)\n+\tif (pfn > (pvmw->pfn >> PVMW_PFN_SHIFT) + pvmw->nr_pages - 1)\n \t\treturn false;\n \treturn true;\n }\n@@ -254,7 +254,8 @@ bool page_vma_mapped_walk(struct page_vma_mapped_walk *pvmw)\n \t\t\t\tentry = softleaf_from_pmd(pmde);\n \n \t\t\t\tif (!softleaf_is_migration(entry) ||\n-\t\t\t\t    !check_pmd(softleaf_to_pfn(entry), pvmw))\n+\t\t\t\t    !check_pmd(softleaf_to_pfn(entry),\n+\t\t\t\t\t       pvmw))\n \t\t\t\t\treturn not_found(pvmw);\n \t\t\t\treturn true;\n \t\t\t}\n@@ -350,7 +351,7 @@ unsigned long page_mapped_in_vma(const struct page *page,\n {\n \tconst struct folio *folio = page_folio(page);\n \tstruct page_vma_mapped_walk pvmw = {\n-\t\t.pfn = page_to_pfn(page),\n+\t\t.pfn = folio_page_vma_walk_pfn(folio),\n \t\t.nr_pages = 1,\n \t\t.vma = vma,\n \t\t.flags = PVMW_SYNC,\ndiff --git a/mm/rmap.c b/mm/rmap.c\nindex f955f02d570e..79a2478b4aa9 100644\n--- a/mm/rmap.c\n+++ b/mm/rmap.c\n@@ -1112,7 +1112,7 @@ static bool mapping_wrprotect_range_one(struct folio *folio,\n {\n \tstruct wrprotect_file_state *state = (struct wrprotect_file_state *)arg;\n \tstruct page_vma_mapped_walk pvmw = {\n-\t\t.pfn\t\t= state->pfn,\n+\t\t.pfn\t\t= page_vma_walk_pfn(state->pfn),\n \t\t.nr_pages\t= state->nr_pages,\n \t\t.pgoff\t\t= state->pgoff,\n \t\t.vma\t\t= vma,\n@@ -1190,7 +1190,7 @@ int pfn_mkclean_range(unsigned long pfn, unsigned long nr_pages, pgoff_t pgoff,\n \t\t      struct vm_area_struct *vma)\n {\n \tstruct page_vma_mapped_walk pvmw = {\n-\t\t.pfn\t\t= pfn,\n+\t\t.pfn\t\t= page_vma_walk_pfn(pfn),\n \t\t.nr_pages\t= nr_pages,\n \t\t.pgoff\t\t= pgoff,\n \t\t.vma\t\t= vma,\ndiff --git a/mm/vmscan.c b/mm/vmscan.c\nindex 670fe9fae5ba..be5682d345b5 100644\n--- a/mm/vmscan.c\n+++ b/mm/vmscan.c\n@@ -4203,7 +4203,7 @@ bool lru_gen_look_around(struct page_vma_mapped_walk *pvmw)\n \tpte_t *pte = pvmw->pte;\n \tunsigned long addr = pvmw->address;\n \tstruct vm_area_struct *vma = pvmw->vma;\n-\tstruct folio *folio = pfn_folio(pvmw->pfn);\n+\tstruct folio *folio = page_vma_walk_pfn_to_folio(pvmw->pfn);\n \tstruct mem_cgroup *memcg = folio_memcg(folio);\n \tstruct pglist_data *pgdat = folio_pgdat(folio);\n \tstruct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat);\n",
    "prefixes": [
        "v2",
        "05/11"
    ]
}