get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2196638,
    "url": "http://patchwork.ozlabs.org/api/patches/2196638/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260215163847.3522572-8-den@valinux.co.jp/",
    "project": {
        "id": 28,
        "url": "http://patchwork.ozlabs.org/api/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": "<20260215163847.3522572-8-den@valinux.co.jp>",
    "list_archive_url": null,
    "date": "2026-02-15T16:38:45",
    "name": "[v7,7/9] PCI: endpoint: pci-epf-vntb: Reuse pre-exposed doorbells and IRQ flags",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "ceb547ea3d8f5ffbfa8f8c2dce9c0b3c47b782b9",
    "submitter": {
        "id": 91573,
        "url": "http://patchwork.ozlabs.org/api/people/91573/?format=api",
        "name": "Koichiro Den",
        "email": "den@valinux.co.jp"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260215163847.3522572-8-den@valinux.co.jp/mbox/",
    "series": [
        {
            "id": 492228,
            "url": "http://patchwork.ozlabs.org/api/series/492228/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=492228",
            "date": "2026-02-15T16:38:38",
            "name": "PCI: endpoint: pci-ep-msi: Add embedded doorbell fallback",
            "version": 7,
            "mbox": "http://patchwork.ozlabs.org/series/492228/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2196638/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2196638/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linux-pci+bounces-47318-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 (1024-bit key;\n unprotected) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.a=rsa-sha256 header.s=selector1 header.b=giLtC9hO;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.105.105.114; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-47318-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.b=\"giLtC9hO\"",
            "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.229.101",
            "smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=valinux.co.jp",
            "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=valinux.co.jp",
            "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=valinux.co.jp;"
        ],
        "Received": [
            "from tor.lore.kernel.org (tor.lore.kernel.org [172.105.105.114])\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 4fDWqj0gkfz1xxL\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Feb 2026 03:40:49 +1100 (AEDT)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id E7F22302DF4E\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 15 Feb 2026 16:39:35 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id D451E2F616B;\n\tSun, 15 Feb 2026 16:39:14 +0000 (UTC)",
            "from TY3P286CU002.outbound.protection.outlook.com\n (mail-japaneastazon11020101.outbound.protection.outlook.com [52.101.229.101])\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 2B8D02F5328;\n\tSun, 15 Feb 2026 16:39:13 +0000 (UTC)",
            "from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10)\n by OSCP286MB5196.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:34b::5) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Sun, 15 Feb\n 2026 16:39:07 +0000",
            "from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM\n ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM\n ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9611.013; Sun, 15 Feb 2026\n 16:39:07 +0000"
        ],
        "ARC-Seal": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771173554; cv=fail;\n b=OqwxBHPSGDRFLuDW0sVzIjEw4ZHAWIfv+QKBF6mzreuRYyDFHmd6LhpBnKbiB/fAjoHOUt/iJ8GiTkoYanR8BIwCJppqJav9R8Ed0Z6uienbqYxiqimb3Mr/SevuGBRjZMIYjvSzytaZiL1JcHcDMHDZsMWWUbtxXvPhC+mAX8o=",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Be3cz45O4c1KR+3XUflqlj2V3S464U81kzAKgk/c0+2/b3iQUJQuIfxHSyi2yx6HbITdCpACINj9rI+wd8v28goUGwI8MppGErxVnsb0AoAYYe1Inzmt12BSrJYTYA6SSaw76gvMo77FEVPoI4mfc5uUL96wHHzyqmJI/Ltn46gcXF/uJJlVJFZBXoI6kSnpmK2PySZfcOgOtebHI7zmOIneNZt0ojB6cFz5A0RxpD4q+0ChJjHs2F9AVK1m46IJ9EEAaGvL5H1sF56PS3Z54syftgyFUkfadQ1yPWp+KKAF6EhdaCw0l+xqGqC0PNEqCNMKYQGo2aV0FNBkNEtPhQ=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771173554; c=relaxed/simple;\n\tbh=QcbxfgbbvUXUnpMBeg/Oa33wKMzX6DgysD/SyX7UKiQ=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=XCeuL29Prbt4BqAOQGyVB0tJhEjlfATdymeBj7cmNhZXRdC76Snox5UsZB2BJ4ssXeInfB4R6b/BLhSP/4lxaQudRaPX+f5Zle5Crgd4QFE8OSLRyv9mdF+bbbIcAv+NaIekh3AtiqV/bpOS+53tzmMgXrEsR3Uy3jMapNznXSM=",
            "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=04ePWOerBr97ddJ4O89veffYXwDywyEvkQuXQcQjPK4=;\n b=KbG6mCJWnjZnUHBqk+m/EHVn1dX9E7X4c8eBaREMUfNHyc3FvYjV7Aojhls2yEDM7tpS3RowArlvsz9vrB1Q1vkFhx3vk3hcuix03/uNiJdHEkXvVKUdh47S9LxrghXJz9zL9FnCZN4SMoklI1A9xLVraIhSFXme4HXg5LWkbAq5YL4klN76XvWwmkGB+IWF7B0Vb0i0CZCmvww2a+hdgQhyO3uhVgYY9ZU91HnfnhiiLYA+jpTx7fLEGu5Z1tqq8uR0PYa81NI2LCUi1nHZvx6AR6pRB6abtko+wmPn/iv0GCfV50Aov4Z9rhz6/PX7FR9nsZjT7HVqviA2sFGtaw=="
        ],
        "ARC-Authentication-Results": [
            "i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=valinux.co.jp;\n spf=pass smtp.mailfrom=valinux.co.jp;\n dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.b=giLtC9hO; arc=fail smtp.client-ip=52.101.229.101",
            "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=valinux.co.jp; dmarc=pass action=none\n header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=04ePWOerBr97ddJ4O89veffYXwDywyEvkQuXQcQjPK4=;\n b=giLtC9hOurA/jAl3ahPOj22Fltbuq13SGmLrmiBxfsLwa0w7E2MCOWogiiQ19DTV8yth0YbBxod1SeFgK7XhO6LW8qwrkjEzWQ5uBzsvkMe2PZe8W7j+85BaL5waG7kHkBCC0E1+HFMM0f8rDH7OnpuZGH+mkAPfOxAYscrSSvI=",
        "From": "Koichiro Den <den@valinux.co.jp>",
        "To": "jingoohan1@gmail.com,\n\tmani@kernel.org,\n\tlpieralisi@kernel.org,\n\tkwilczynski@kernel.org,\n\trobh@kernel.org,\n\tbhelgaas@google.com,\n\theiko@sntech.de,\n\tkishon@kernel.org,\n\tjdmason@kudzu.us,\n\tdave.jiang@intel.com,\n\tallenbh@gmail.com,\n\tcassel@kernel.org,\n\tshawn.lin@rock-chips.com,\n\tFrank.Li@nxp.com",
        "Cc": "linux-pci@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tlinux-arm-kernel@lists.infradead.org,\n\tlinux-rockchip@lists.infradead.org,\n\tntb@lists.linux.dev",
        "Subject": "[PATCH v7 7/9] PCI: endpoint: pci-epf-vntb: Reuse pre-exposed\n doorbells and IRQ flags",
        "Date": "Mon, 16 Feb 2026 01:38:45 +0900",
        "Message-ID": "<20260215163847.3522572-8-den@valinux.co.jp>",
        "X-Mailer": "git-send-email 2.51.0",
        "In-Reply-To": "<20260215163847.3522572-1-den@valinux.co.jp>",
        "References": "<20260215163847.3522572-1-den@valinux.co.jp>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "TY4PR01CA0005.jpnprd01.prod.outlook.com\n (2603:1096:405:26e::8) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:405:38f::10)",
        "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",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "TY7P286MB7722:EE_|OSCP286MB5196:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "399e6cb3-f615-4708-7b0e-08de6cb0bd2d",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|921020;",
        "X-Microsoft-Antispam-Message-Info": "\n xJ1TOBDZvfVxUe31sk2+yl0lqpYlNwEaHYTO+nWedb5V5bWEHzD1+Rvmdu7SPlUswRF2jHaV65aT34q07VVFNv56MsxpWf4AvxxU1mgijB6WRwB6EBEqCLfdH/koKocvyOSyc2Nj25vjg5hOlueAzU+3L46gi8ZewcrLQKKYAuPKBT8LXnJrAth5zWaqgBdFLB8LFxGSmi/9Jv8btsXVn5fA+l/rsBrpRbhxp7L1FpQYeJigRP1C0TM8/ZeKwndgSZ8raAMye+2N/pON1TUW86oknMVhZ9P+NJvyx0+TS3IWAJt/OWkQB46SnR5owomTTrWRP2LT4Q2XJmFJWTboSwzqMk6ObgclAL+70rGWpYfYp3MPXDiY84jPm/UumHBXGwwUnpf+6uPmkhPSL3M8po+HdKiDIGhNpSZjhYHzAglv4bP87L9fv7mVLcU3uiQIEnQvOOrIofH6RasrmcL8gc1CdEo6kb14UYtWkhPOZLFK1wnSnI6zeKItNuVrT/JhFEDuJaWWf4Hw7h2ooXyekz0MpMT1ip1BpB72sfJ/QJ1zEs1gNgoEHd9wxrkWBl1TQFvxgouJiHrXPrUjgFEOi/cMzs8hFPCghMC8GPzRi2UPeKo7KWoNw31ibSUx5BirJzD+oLsDHjkNBjRAEvC0tEh5PjypwrGIsAbxZDkishxJwfb3R73mHLOSxGYM81NubJ3wjL17LIXnA4pRCasCG9XBBtUhxJwB37jINpUqUB4lNKQ7Q6QTHdiSoc0xD48hCABGPKP5FwPOEOf6vaeaUU+wjpbN1cGIG6U1CE4EHNZIrzdra75Efbqo6WsSn6l7kcIWRNNCL+0E/0/WZskQ3ESLgkBzqS/xMld3RENZ2sCe6rTzQ1jtM2A0qrRxusPu1g1ponHfFv89prQJuaXbFu1yM3xC3chzOCJDhPjiWzSKA8GuKEYYEunQtHMajhslw5Yyjnb1tvnA7LMJqZ23yPhx1o6UozNUIR+ghghX2BLm+DLXT+daCCv/Jw8Ic3/BFJ8lmw2TvjE/en92BiRovWFhjKrLw6VSAmU+dwsx5bqczWxd8gj2KEmKV3tNSadCje+uBi+aEbgNwKHp9xtxnNTXhoiYczkwYNdeRvKuZU7apoLK1Wk3p/XZB9g5TbmV2VjB9j3ZyDwkiCj/7+oxNnYJB7XGrHLCrC9RpW6niDy/qxBkrqlZbVQbJgKgBrB/xSL4DvNd4xqIdrv1tlefio/jnywOifvrqMnuTFF/9wgOYATzdwq1cQSNNOxO3YeH3LXnSlqivk7QjEU0n1wpx2Jk15AqdXlWidopwppJgPFKbGh//XHE0jF9YncqQLBnZBCJ7+IEuLovYVh8aI8YjCSESruCjXUM+p8FbcuIBE6EvpRFgHhTKsso+ef+CDYkEf9T3XQHz/Mb2wqz6c1/Zv2dJ1wzYIA4wwM7xqYCHDnwQgHVaUzXYyTVEM1IysVgteev7xsuDk7rkMod46epHg/VtdE8TafiqmkNxu7+Wk7fc7dP40jrGOfbckkCC9woOZBO/45o3f2vPqYiC4GkvHVMwuyhUBsoHizzWFpEQ8eKP4q46/xsPrrB9zq0ZNy4pKUxhFB6mfdCO6Y0rmKtkw==",
        "X-Forefront-Antispam-Report": "\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(921020);DIR:OUT;SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n O5h8ywKMkKKzioooDUqJ561GOqCggzImgIy/6gZpKXftWgZx5uJwL7T0WpIxaPAQk3iQNNHvl/o4TwWQAPOAJjEzgcFzMFPuAVsStnrn2Tv0Z614z4at7Q8KMaOjXKZIwvHnJh1VXAjjr8tQf1Q1zQFnKjMdnACdFTzF723VN3Pb1b7MVhJfcXgve6mKpteQ7iqLI7z4mvJCB3c0h/BcrZp0wzeywWE7kf6eWANIiOj4V0Gt/0q/efylMH5CxaBJ2G7J3jSKCmzDCdm2NvTJ2ciqCxP1GWjeNtFwI+XrchOHkMlrdyMq+kEE8h4yoEDF2jwQjBECihTl8UmPLNLFEGJgvSZ7VIG5MQcMcxBzyZLbZDZqM2pb5na5P5enlQLkDMIpiQDL8oyo2Oq3UxQNzz6zhUscZRfDs/BnKy7AvO4tqR45se0k5vR10UVNLc/OtPXXH+u3tB2PriIj53FT5+eHjwxC6mBqGtttIi9WInkAdC+F8XnakO+XZYrq9hv4yMGNGFj6utTk0c7KXOHtatcVTWdRZY4Fxsk24QBMYhqMGZs6Q9g15g2sTSvurp3GZXhDxEVVXCyjRTzUCOdfijLTcNTxF2xTeGz7gR+ZvKycjKuUw142KIOIsJ03e5Y2at70aFJfaHdvwGjdUftfq0RuPoqifc4ewaMPB26IRgtiEsUc8Dw4VfOZhPuqNsknusHTsYMNMlUZgDL+FUuDnu/V93pC6LsKcCAhVJLU2z+Xi767WHDVGnICKtwlObHlIJFr+q+PfbQ3Cs9VqVaa+iKt1DzjqjEOFX0OSdtOpeWBa1RNH8IWKJE+pkKf6yUW49308GxWviFevJJYyXTtKgvItwGMLvqpg6P9DJR/dLRqcSZA25j9ZvboNyBvFe84ejJG6ENqDl0GoyyDLLYLjmehzepeJ5MHix8AnqDUsCdhkX+uPNMaogvVUt97LaypoKfNR0SScExT/5XVlyIyG8V9IrkhBbffTxTGJD8ePS3glK2OQ9cs+r7Q3tzkRBSFiyHvdA9b57peLafWLLJwsUXIqhBw+Sjn/jxkIKdaBw6xgQCNAfqzVmoiUSk2a4+KqaWkdNG6hsyKOxETYugBU1C5SycRtrerJ9bQoEi0sg+W11ky1M20JFlnZlSIi6MTFbr2dN2LFPvgBf3t3daLF4NgscVjS63cIokJF7lh0+pFCj6euBL+P0CQzJMW5+xB38k3i+f7C53+/dpfKdPJWhy6TW0Jm70ufasbOkDUxyQpdniEIBu9pNS01anPDEkVjtwX3V3h9Pz8esuJF5Wf+DwJgRmdmGdkfWsRpMSha3/oiPjOjfsud5YzKGG7DbNbfeEcZovnjiTTNglwUWFNtqjU3DWHrdOAR1/OzSj+G1bHSHFuA55KY7HWWYH1KcMbP0m0Pr8dCagFEWfurWvNwm237t6sau7QY1wAzXwdsv/xXhBOX8hJqz29brJnOxyPIdfT4Aa72Wt0OccVtBNjDZLMFlqKZgfIaalVVu2qLnDlDaUaQwpTczpzRmq0Jhp/ix52DbV6tVOrv7TAWE/BGc49TDysCDI7heZ7iwRpP4y8VvLBqhpNGYqhQ3ZGbJRVUU/SWKwUHP05fuctX1te66d1peQZ1VnfnhcQGDs8BxWZN0nW8aTPKSfGS4Ci9Js/uplMKdq6dwtlhy8HEdOGxSsHa+tBrjFC8ZyTGoiifLxsBn6MQaxpHZwmYALYpzA3pgwdz//ekdsoTMBzE/b/w/8byEJRpkWGX2w9+Kh8RHIpjESRVHHH6lyVqTccZ9ZA",
        "X-OriginatorOrg": "valinux.co.jp",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 399e6cb3-f615-4708-7b0e-08de6cb0bd2d",
        "X-MS-Exchange-CrossTenant-AuthSource": "TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "15 Feb 2026 16:39:07.7504\n (UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "7a57bee8-f73d-4c5f-a4f7-d72c91c8c111",
        "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED",
        "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n DCCBtbSh+cXZr/xSjLC3o6UOqc5YdLnUypQyKBwBmi7lEFNBg096dwe4VDXQDW5i8wmb9eXV036fmc7YWw3SCg==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "OSCP286MB5196"
    },
    "content": "Support doorbell backends where the doorbell target is already exposed\nvia a platform-owned fixed BAR mapping and/or where the doorbell IRQ\nmust be requested with specific flags.\n\nWhen pci_epf_alloc_doorbell() provides db_msg[].bar/offset, reuse the\npre-exposed BAR window and skip programming a new inbound mapping. Also\nhonor db_msg[].irq_flags when requesting the doorbell IRQ.\n\nFor embedded doorbells (e.g. interrupt-emulation), multiple doorbells\nmay share a single address/data pair and a single Linux IRQ. Avoid\nrequesting duplicate handlers by requesting only one IRQ in that case.\n\nSigned-off-by: Koichiro Den <den@valinux.co.jp>\n---\n drivers/pci/endpoint/functions/pci-epf-vntb.c | 57 +++++++++++++++++--\n 1 file changed, 52 insertions(+), 5 deletions(-)",
    "diff": "diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/endpoint/functions/pci-epf-vntb.c\nindex 20efa27325f1..39ba4d6b7d8d 100644\n--- a/drivers/pci/endpoint/functions/pci-epf-vntb.c\n+++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c\n@@ -134,6 +134,11 @@ struct epf_ntb {\n \tu16 vntb_vid;\n \n \tbool linkup;\n+\n+\t/*\n+\t * True when doorbells are interrupt-driven (MSI or embedded), false\n+\t * when polled.\n+\t */\n \tbool msi_doorbell;\n \tu32 spad_size;\n \n@@ -523,7 +528,7 @@ static int epf_ntb_db_bar_init_msi_doorbell(struct epf_ntb *ntb,\n \t\t\t\t\t    enum pci_barno barno)\n {\n \tstruct pci_epf *epf = ntb->epf;\n-\tunsigned int req;\n+\tunsigned int req, cnt;\n \tdma_addr_t low, high;\n \tstruct msi_msg *msg;\n \tsize_t sz;\n@@ -534,9 +539,29 @@ static int epf_ntb_db_bar_init_msi_doorbell(struct epf_ntb *ntb,\n \tif (ret)\n \t\treturn ret;\n \n-\tfor (req = 0; req < ntb->db_count; req++) {\n+\t/*\n+\t * The doorbell target may already be exposed by a platform-owned fixed\n+\t * BAR. In that case, we must reuse it and the requested db_bar must\n+\t * match.\n+\t */\n+\tif (epf->db_msg[0].bar != NO_BAR && epf->db_msg[0].bar != barno) {\n+\t\tret = -EINVAL;\n+\t\tgoto err_free_doorbell;\n+\t}\n+\n+\t/*\n+\t * For PCI_EPF_DOORBELL_EMBEDDED, the backend may provide a single MMIO\n+\t * address/data pair and a single Linux IRQ even if multiple doorbells\n+\t * were requested. Avoid requesting duplicate handlers in that case.\n+\t */\n+\tcnt = ntb->db_count;\n+\tif (epf->db_msg[0].type == PCI_EPF_DOORBELL_EMBEDDED)\n+\t\tcnt = 1;\n+\n+\tfor (req = 0; req < cnt; req++) {\n \t\tret = request_irq(epf->db_msg[req].virq, epf_ntb_doorbell_handler,\n-\t\t\t\t  0, \"pci_epf_vntb_db\", ntb);\n+\t\t\t\t  epf->db_msg[req].irq_flags, \"pci_epf_vntb_db\",\n+\t\t\t\t  ntb);\n \n \t\tif (ret) {\n \t\t\tdev_err(&epf->dev,\n@@ -546,6 +571,22 @@ static int epf_ntb_db_bar_init_msi_doorbell(struct epf_ntb *ntb,\n \t\t}\n \t}\n \n+\tif (epf->db_msg[0].bar != NO_BAR) {\n+\t\tfor (i = 0; i < ntb->db_count; i++) {\n+\t\t\tmsg = &epf->db_msg[i].msg;\n+\n+\t\t\tif (epf->db_msg[i].bar != barno) {\n+\t\t\t\tret = -EINVAL;\n+\t\t\t\tgoto err_free_irq;\n+\t\t\t}\n+\n+\t\t\tntb->reg->db_data[i] = msg->data;\n+\t\t\tntb->reg->db_offset[i] = epf->db_msg[i].offset;\n+\t\t}\n+\t\tgoto out;\n+\t}\n+\n+\t/* Program inbound mapping for the doorbell */\n \tmsg = &epf->db_msg[0].msg;\n \n \thigh = 0;\n@@ -592,6 +633,7 @@ static int epf_ntb_db_bar_init_msi_doorbell(struct epf_ntb *ntb,\n \t\tntb->reg->db_offset[i] = offset;\n \t}\n \n+out:\n \tntb->reg->db_entry_size = 0;\n \n \tntb->msi_doorbell = true;\n@@ -602,6 +644,7 @@ static int epf_ntb_db_bar_init_msi_doorbell(struct epf_ntb *ntb,\n \twhile (req)\n \t\tfree_irq(epf->db_msg[--req].virq, ntb);\n \n+err_free_doorbell:\n \tpci_epf_free_doorbell(ntb->epf);\n \treturn ret;\n }\n@@ -665,9 +708,13 @@ static void epf_ntb_db_bar_clear(struct epf_ntb *ntb)\n \tenum pci_barno barno;\n \n \tif (ntb->msi_doorbell) {\n-\t\tint i;\n+\t\tunsigned int cnt = ntb->db_count;\n+\t\tunsigned int i;\n \n-\t\tfor (i = 0; i < ntb->db_count; i++)\n+\t\tif (ntb->epf->db_msg[0].type == PCI_EPF_DOORBELL_EMBEDDED)\n+\t\t\tcnt = 1;\n+\n+\t\tfor (i = 0; i < cnt; i++)\n \t\t\tfree_irq(ntb->epf->db_msg[i].virq, ntb);\n \t}\n \n",
    "prefixes": [
        "v7",
        "7/9"
    ]
}