get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2221484,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/2221484/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260409133651.92580-1-ankita@nvidia.com/",
    "project": {
        "id": 28,
        "url": "http://patchwork.ozlabs.org/api/1.2/projects/28/?format=api",
        "name": "Linux PCI development",
        "link_name": "linux-pci",
        "list_id": "linux-pci.vger.kernel.org",
        "list_email": "linux-pci@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260409133651.92580-1-ankita@nvidia.com>",
    "list_archive_url": null,
    "date": "2026-04-09T13:36:51",
    "name": "[v2,1/1] vfio/nvgrace-gpu: Add Blackwell-Next GPU readiness check via CXL DVSEC",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "7602e1bb08356e57b66e53cc7e7a98050a4a609a",
    "submitter": {
        "id": 86155,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/86155/?format=api",
        "name": "Ankit Agrawal",
        "email": "ankita@nvidia.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260409133651.92580-1-ankita@nvidia.com/mbox/",
    "series": [
        {
            "id": 499305,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/499305/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=499305",
            "date": "2026-04-09T13:36:51",
            "name": "[v2,1/1] vfio/nvgrace-gpu: Add Blackwell-Next GPU readiness check via CXL DVSEC",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/499305/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2221484/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2221484/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linux-pci+bounces-52214-incoming=patchwork.ozlabs.org@vger.kernel.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "linux-pci@vger.kernel.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=hS1a+9hD;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-52214-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=\"hS1a+9hD\"",
            "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.201.40",
            "smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com",
            "smtp.subspace.kernel.org;\n spf=fail smtp.mailfrom=nvidia.com"
        ],
        "Received": [
            "from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\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 4fs1Nk4sv2z1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 09 Apr 2026 23:43:34 +1000 (AEST)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 142F1302ED65\n\tfor <incoming@patchwork.ozlabs.org>; Thu,  9 Apr 2026 13:37:22 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 11E792E2EF9;\n\tThu,  9 Apr 2026 13:37:21 +0000 (UTC)",
            "from PH7PR06CU001.outbound.protection.outlook.com\n (mail-westus3azon11010040.outbound.protection.outlook.com [52.101.201.40])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 741F630BF6D;\n\tThu,  9 Apr 2026 13:37:19 +0000 (UTC)",
            "from BL0PR05CA0006.namprd05.prod.outlook.com (2603:10b6:208:91::16)\n by DS0PR12MB6413.namprd12.prod.outlook.com (2603:10b6:8:ce::10) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 9 Apr\n 2026 13:37:09 +0000",
            "from BL02EPF00029929.namprd02.prod.outlook.com\n (2603:10b6:208:91:cafe::1c) by BL0PR05CA0006.outlook.office365.com\n (2603:10b6:208:91::16) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.40 via Frontend Transport; Thu,\n 9 Apr 2026 13:37:09 +0000",
            "from mail.nvidia.com (216.228.117.160) by\n BL02EPF00029929.mail.protection.outlook.com (10.167.249.54) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9769.17 via Frontend Transport; Thu, 9 Apr 2026 13:37:09 +0000",
            "from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com\n (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 9 Apr\n 2026 06:36:52 -0700",
            "from rnnvmail202.nvidia.com (10.129.68.7) by rnnvmail201.nvidia.com\n (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 9 Apr\n 2026 06:36:51 -0700",
            "from localhost.nvidia.com (10.127.8.12) by mail.nvidia.com\n (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend\n Transport; Thu, 9 Apr 2026 06:36:51 -0700"
        ],
        "ARC-Seal": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1775741840; cv=fail;\n b=Jf8+8kD7gTiZvDymo61FAzJPdX3v3uOEMbp9vmVorE8bBDrdzACgRu39B+1Ygsv74L2N/jPHcWaPlLlIq8lQY6vNqynnKKs1g2yVaMkpNvzGa3t2BvT0ZcOgW5HLJMW6p+Ypm7d0nNk7hx2IxpvVvZ66iy4TF2Ah/eFxF422TBs=",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=jFQ0wXwtbaYvVWaZ9qBUrYHaqoOOSlcrbeOkND9Xw8ISYtOuEiYQ+GeJD4iaIXv6K80543XiJfYLHwE4jLSduxln1TRvaO8wtfJHlWh/FQHIJKMb5br8kOlxKXH6iKpwhTf43nn4OnV2uUqjXF3MqT2ljGvYYhAiaT9QtuNpRSm2I0whpGw/lhbO+SD2D86Gk+ISfoBCOmFRjtXPkUr/vN9H2wNCx0X+kMXWmplLpV/APjf5V2Lvd53l2rZOeWs7D+AuXC0SFZpofn2IdSZjhh0Cw7ulapS6bRiTtcWLNZ0ikbqgL+oQ0yuKUTNb9Dbc+lppBuxK/EZCTlCjPsPrlA=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1775741840; c=relaxed/simple;\n\tbh=eAHItLiBYE4yK1DX5WMtG1FQ6t8yJw6XI3451UJzxos=;\n\th=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type;\n b=QryMWos3B8PUi9R4qwBKEKpS8Mxo3bZGUfytZ/S044HBZ9qRFAERafardPgdS0Dch158ktkPysHgPy069NMkl2lFuCk7RcrPRm0Jn8+/jwefLw+jr1UxKhTGed/3tJBtnbTd1lSNcx5MWpD7k6fmAaFmtEnTggGHJhHbt0FiAYU=",
            "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=7/t8Tos4Hitv8Im1HTU0NTNJxP6+jfmpame58mpWsrc=;\n b=CBgTIX/ExP/vOMT48wolmfzdJNaAqhtr1jqoC7hAtB2MMQDYK1fpy92FYJm51Vz7Rt7f9E7mKugFVsh9/+1dGezgj/q9vrs6WFCYTw6/rg4WGcvhQhO815N4Slm8FppR12BvKEziShlfNCLfjZPkExhtlEhCHqZvC3xLldWdeLNKJJJqgbCeMUnuKB5Ri/mEMyc47J33ptdfk4t6NkK8A9YXD+ThYKKc94RSrZLyL6UWjEjziAkvy6pTEAAnuPDNsK5Q0lxsUgJD5XIIefgmhK7/C8zkPv+1zCau05na4jdNGE4L5sRcS3rugy3/TSqvP4DIigyNhtQ+LVoZH8aEIQ=="
        ],
        "ARC-Authentication-Results": [
            "i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com;\n spf=fail smtp.mailfrom=nvidia.com;\n dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=hS1a+9hD; arc=fail smtp.client-ip=52.101.201.40",
            "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.117.160) smtp.rcpttodomain=shazbot.org smtp.mailfrom=nvidia.com;\n dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com;\n dkim=none (message not signed); arc=none (0)"
        ],
        "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=7/t8Tos4Hitv8Im1HTU0NTNJxP6+jfmpame58mpWsrc=;\n b=hS1a+9hD3YFGlKpP6PFA2wsCI8NZjDsVN6lCdjDJ0hHMHPaHkA9bIQtanSpWg1UOTKHIFvEiiQ5KT6T0kR1NAwh2ZoqlhM+jlLn/AkGXK+8VTr+hzdrsRNqKZiLDeiLDEViOjIdC3qfqF/kDrKN+VPxGvn5AxI73mzAdvKfPCV/crjUsDUg97bnNcn8OyY7YTtA71c04stavmpoQ9cgnebdVdgxDtxpEqQ1ZPvytJri0eSGmXk8feu4gQtqS779WHsb7TDkWNeshjGJVpgXV8/JC5ZQlOmd9T19De5YdKJL+b986r6QvJ/D7sBryaSXF5Gnp9jukUXbaWI4mIVWtPQ==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.117.160)\n smtp.mailfrom=nvidia.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=nvidia.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.117.160 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C",
        "From": "Ankit Agrawal <ankita@nvidia.com>",
        "To": "<alex@shazbot.org>",
        "CC": "<kvm@vger.kernel.org>, <jgg@ziepe.ca>, <yishaih@nvidia.com>,\n\t<skolothumtho@nvidia.com>, <kevin.tian@intel.com>, <ankita@nvidia.com>,\n\t<bhelgaas@google.com>, <linux-kernel@vger.kernel.org>,\n\t<linux-pci@vger.kernel.org>",
        "Subject": "[PATCH v2 1/1] vfio/nvgrace-gpu: Add Blackwell-Next GPU readiness\n check via CXL DVSEC",
        "Date": "Thu, 9 Apr 2026 13:36:51 +0000",
        "Message-ID": "<20260409133651.92580-1-ankita@nvidia.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "Precedence": "bulk",
        "X-Mailing-List": "linux-pci@vger.kernel.org",
        "List-Id": "<linux-pci.vger.kernel.org>",
        "List-Subscribe": "<mailto:linux-pci+subscribe@vger.kernel.org>",
        "List-Unsubscribe": "<mailto:linux-pci+unsubscribe@vger.kernel.org>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-NV-OnPremToCloud": "ExternallySecured",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "BL02EPF00029929:EE_|DS0PR12MB6413:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "5a186f2e-dd3c-4c5e-25f6-08de963d1966",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|1800799024|82310400026|376014|36860700016|18002099003|56012099003;",
        "X-Microsoft-Antispam-Message-Info": "\n\t0indadCnXRpxZQ2I2B5XP3mw9EADehAPzxCxzmX17kiKWMjzAaDPG9JpFDXDoUHESO4ucKRY6Y96eIsV+51b8ZaX0km9vPFPd0O6MGr/Lfm2VnEAm1J7odCs30lQpinRYJh876Qag/2qH7zimSTwruJb9xwK2fQ1mNe+wWqjHuXzOlklQHs1Jr4ic6OAxI3oX2NY71bAjPfNxNMw7rrYhan1pTO5Jh0Pr43kIEKtTdaX2aoAeyve5v9P5Sj/0LZ2//UZZqJ3d7lR4ACrTuDC1Hx2vXJTs2+wC8dYp3k+l/swdpcF41ywK1/7ymhXkPTWsBMxlHpf3Xj3NVgIGAJ90o6Xkq+v0d5MH4rK1jBSEvUgoMuwnHXE7A+k3hodmwpM3Tw3g7e8MFRmBeSepKxvyjuI4Y4oAf07hKKSc6dkmU1VaWpNLCqR4+Jj/t8vmDSZX1CKyGuzQpDAwAsKurKyPpdX7HTPkbXmyq3hgEHwvpaH/y6VG5StRBYFIo6MqGv6JcP+Dmygi8QXzNIhyIIVMBmO7zWDRkJYH3LY2i5dVAZUb6FqVMcYOKvYu4W3fy4o/9INquKIAqEIyviO17+9V441c0gM37OoIEjebEIX5uTrHUEgH6/ay7YW005BlBV07M7H2EWDae6Z6nhjbkC4ZW9javgx45Y0+pyApDFIvU/NsB7BDrv9e8EtK17T51TmtdkHkHMJDYgmc4p8vXpJC1e0+TLtAYUEUnPigiXsE2gD7L7nAizIWvy6DVMvUS7wyviNWgenFf1p+h62aRvAtQ==",
        "X-Forefront-Antispam-Report": "\n\tCIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(376014)(36860700016)(18002099003)(56012099003);DIR:OUT;SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n\t3VT97SbBXssT5YYQ2UZJFJUEPRjl+5iIG66pN1QxCQ93s/IsPIcq57qwWfTMSxMyuC1e/0R8A+rCCzCuILox8PAqlHi9xgxnHsZY08AsW0AnznpYPOpCdT4PAUnL5zVctAj/KMqsAE5RoZuoO/h2JOL0vDBNUekhBt2P0htMHhCfzQn+B7kkR0muD/JvlcmqUSjjTNRc082TtlZ9YzWKFrdxULwEYTEsNEiuyVbvfDVWWJhJ49iif/ti8q/qn40F0Hzuk7974TyP0lngUahHdObtplzr8D0yct7CCN2BXU9QJBT4lDATx2iZ/2uM/jMADVhSw8GFOgkyx/y506/9Fc+n+R7+6ZNTpCS4/E3ekFfgyFZcCdN71MdmgUW4r6iTZLfGn39+9uA+UH8xuV0blyPVJSR9g3r644vO0lte1DpYzhhUaWxeeCiKfDxHl1vV",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "09 Apr 2026 13:37:09.4626\n (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 5a186f2e-dd3c-4c5e-25f6-08de963d1966",
        "X-MS-Exchange-CrossTenant-Id": "43083d15-7273-40c1-b7db-39efd9ccc17a",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n\tBL02EPF00029929.namprd02.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DS0PR12MB6413"
    },
    "content": "Add a CXL DVSEC-based readiness check for Blackwell-Next GPUs alongside\nthe existing legacy BAR0 polling path. On probe and after reset, the\ndriver reads the CXL Device DVSEC capability to determine whether the\nGPU memory is valid. This is checked by polling on the Memory_Active bit\nbased on the Memory_Active_Timeout.\n\nA static inline wrapper dispatches to the appropriate readiness check\nbased on whether the CXL DVSEC capability is present.\n\nSuggested-by: Alex Williamson <alex@shazbot.org>\nSigned-off-by: Ankit Agrawal <ankita@nvidia.com>\n---\n drivers/vfio/pci/nvgrace-gpu/main.c | 75 ++++++++++++++++++++++++++---\n include/uapi/linux/pci_regs.h       |  1 +\n 2 files changed, 68 insertions(+), 8 deletions(-)",
    "diff": "diff --git a/drivers/vfio/pci/nvgrace-gpu/main.c b/drivers/vfio/pci/nvgrace-gpu/main.c\nindex fa056b69f899..52f7e3a3054a 100644\n--- a/drivers/vfio/pci/nvgrace-gpu/main.c\n+++ b/drivers/vfio/pci/nvgrace-gpu/main.c\n@@ -64,6 +64,8 @@ struct nvgrace_gpu_pci_core_device {\n \tbool has_mig_hw_bug;\n \t/* GPU has just been reset */\n \tbool reset_done;\n+\t/* CXL Device DVSEC offset; 0 if not present (legacy GB path) */\n+\tint cxl_dvsec;\n };\n \n static void nvgrace_gpu_init_fake_bar_emu_regs(struct vfio_device *core_vdev)\n@@ -242,7 +244,7 @@ static void nvgrace_gpu_close_device(struct vfio_device *core_vdev)\n \tvfio_pci_core_close_device(core_vdev);\n }\n \n-static int nvgrace_gpu_wait_device_ready(void __iomem *io)\n+static int nvgrace_gpu_wait_device_ready_legacy(void __iomem *io)\n {\n \tunsigned long timeout = jiffies + msecs_to_jiffies(POLL_TIMEOUT_MS);\n \n@@ -256,6 +258,59 @@ static int nvgrace_gpu_wait_device_ready(void __iomem *io)\n \treturn -ETIME;\n }\n \n+/*\n+ * Decode the 3-bit Memory_Active_Timeout field from CXL DVSEC Range 1 Low\n+ * (bits 15:13) into milliseconds. Encoding per CXL spec r4.0 sec 8.1.3.8.2:\n+ * 000b = 1s, 001b = 4s, 010b = 16s, 011b = 64s, 100b = 256s,\n+ * 101b-111b = reserved (clamped to 256s).\n+ */\n+static inline unsigned long nvgrace_gpu_cxl_mem_active_timeout_ms(u8 timeout)\n+{\n+\treturn 1000UL << (2 * min_t(u8, timeout, 4));\n+}\n+\n+static int nvgrace_gpu_wait_device_ready_bw_next(struct nvgrace_gpu_pci_core_device *nvdev)\n+{\n+\tstruct pci_dev *pdev = nvdev->core_device.pdev;\n+\tint pcie_dvsec = nvdev->cxl_dvsec;\n+\tunsigned long timeout;\n+\tu32 dvsec_memory_status;\n+\tu8 mem_active_timeout;\n+\n+\tpci_read_config_dword(pdev, pcie_dvsec + PCI_DVSEC_CXL_RANGE_SIZE_LOW(0),\n+\t\t\t      &dvsec_memory_status);\n+\n+\tif (!(dvsec_memory_status & PCI_DVSEC_CXL_MEM_INFO_VALID))\n+\t\treturn -ENODEV;\n+\n+\tmem_active_timeout = FIELD_GET(PCI_DVSEC_CXL_MEM_ACTIVE_TIMEOUT,\n+\t\t\t\t       dvsec_memory_status);\n+\n+\ttimeout = jiffies +\n+\t\t  msecs_to_jiffies(nvgrace_gpu_cxl_mem_active_timeout_ms(mem_active_timeout));\n+\n+\tdo {\n+\t\tpci_read_config_dword(pdev,\n+\t\t\t\t      pcie_dvsec + PCI_DVSEC_CXL_RANGE_SIZE_LOW(0),\n+\t\t\t\t      &dvsec_memory_status);\n+\n+\t\tif (dvsec_memory_status & PCI_DVSEC_CXL_MEM_ACTIVE)\n+\t\t\treturn 0;\n+\n+\t\tmsleep(POLL_QUANTUM_MS);\n+\t} while (!time_after(jiffies, timeout));\n+\n+\treturn -ETIME;\n+}\n+\n+static inline int nvgrace_gpu_wait_device_ready(struct nvgrace_gpu_pci_core_device *nvdev,\n+\t\t\t\t\t\tvoid __iomem *io)\n+{\n+\treturn nvdev->cxl_dvsec ?\n+\t\tnvgrace_gpu_wait_device_ready_bw_next(nvdev) :\n+\t\tnvgrace_gpu_wait_device_ready_legacy(io);\n+}\n+\n /*\n  * If the GPU memory is accessed by the CPU while the GPU is not ready\n  * after reset, it can cause harmless corrected RAS events to be logged.\n@@ -275,7 +330,7 @@ nvgrace_gpu_check_device_ready(struct nvgrace_gpu_pci_core_device *nvdev)\n \tif (!__vfio_pci_memory_enabled(vdev))\n \t\treturn -EIO;\n \n-\tret = nvgrace_gpu_wait_device_ready(vdev->barmap[0]);\n+\tret = nvgrace_gpu_wait_device_ready(nvdev, vdev->barmap[0]);\n \tif (ret)\n \t\treturn ret;\n \n@@ -1146,8 +1201,9 @@ static bool nvgrace_gpu_has_mig_hw_bug(struct pci_dev *pdev)\n  * Ensure that the BAR0 region is enabled before accessing the\n  * registers.\n  */\n-static int nvgrace_gpu_probe_check_device_ready(struct pci_dev *pdev)\n+static int nvgrace_gpu_probe_check_device_ready(struct nvgrace_gpu_pci_core_device *nvdev)\n {\n+\tstruct pci_dev *pdev = nvdev->core_device.pdev;\n \tvoid __iomem *io;\n \tint ret;\n \n@@ -1165,7 +1221,7 @@ static int nvgrace_gpu_probe_check_device_ready(struct pci_dev *pdev)\n \t\tgoto iomap_exit;\n \t}\n \n-\tret = nvgrace_gpu_wait_device_ready(io);\n+\tret = nvgrace_gpu_wait_device_ready(nvdev, io);\n \n \tpci_iounmap(pdev, io);\n iomap_exit:\n@@ -1183,10 +1239,6 @@ static int nvgrace_gpu_probe(struct pci_dev *pdev,\n \tu64 memphys, memlength;\n \tint ret;\n \n-\tret = nvgrace_gpu_probe_check_device_ready(pdev);\n-\tif (ret)\n-\t\treturn ret;\n-\n \tret = nvgrace_gpu_fetch_memory_property(pdev, &memphys, &memlength);\n \tif (!ret)\n \t\tops = &nvgrace_gpu_pci_ops;\n@@ -1198,6 +1250,13 @@ static int nvgrace_gpu_probe(struct pci_dev *pdev,\n \n \tdev_set_drvdata(&pdev->dev, &nvdev->core_device);\n \n+\tnvdev->cxl_dvsec = pci_find_dvsec_capability(pdev, PCI_VENDOR_ID_CXL,\n+\t\t\t\t\t\t     PCI_DVSEC_CXL_DEVICE);\n+\n+\tret = nvgrace_gpu_probe_check_device_ready(nvdev);\n+\tif (ret)\n+\t\tgoto out_put_vdev;\n+\n \tif (ops == &nvgrace_gpu_pci_ops) {\n \t\tnvdev->has_mig_hw_bug = nvgrace_gpu_has_mig_hw_bug(pdev);\n \ndiff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h\nindex 14f634ab9350..718fb630f5bb 100644\n--- a/include/uapi/linux/pci_regs.h\n+++ b/include/uapi/linux/pci_regs.h\n@@ -1357,6 +1357,7 @@\n #define  PCI_DVSEC_CXL_RANGE_SIZE_LOW(i)\t\t(0x1C + (i * 0x10))\n #define   PCI_DVSEC_CXL_MEM_INFO_VALID\t\t\t_BITUL(0)\n #define   PCI_DVSEC_CXL_MEM_ACTIVE\t\t\t_BITUL(1)\n+#define   PCI_DVSEC_CXL_MEM_ACTIVE_TIMEOUT\t\t__GENMASK(15, 13)\n #define   PCI_DVSEC_CXL_MEM_SIZE_LOW\t\t\t__GENMASK(31, 28)\n #define  PCI_DVSEC_CXL_RANGE_BASE_HIGH(i)\t\t(0x20 + (i * 0x10))\n #define  PCI_DVSEC_CXL_RANGE_BASE_LOW(i)\t\t(0x24 + (i * 0x10))\n",
    "prefixes": [
        "v2",
        "1/1"
    ]
}