Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2216676/?format=api
{ "id": 2216676, "url": "http://patchwork.ozlabs.org/api/patches/2216676/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260327035422.4020455-5-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": "<20260327035422.4020455-5-den@valinux.co.jp>", "list_archive_url": null, "date": "2026-03-27T03:54:19", "name": "[v12,4/7] PCI: endpoint: pci-ep-msi: Refactor doorbell allocation for new backends", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "1b9fd919eca1cdbf6ee4a0f7bf0bda69d536a286", "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/20260327035422.4020455-5-den@valinux.co.jp/mbox/", "series": [ { "id": 497685, "url": "http://patchwork.ozlabs.org/api/series/497685/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=497685", "date": "2026-03-27T03:54:17", "name": "PCI: endpoint: pci-ep-msi: Add embedded doorbell fallback", "version": 12, "mbox": "http://patchwork.ozlabs.org/series/497685/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2216676/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2216676/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-pci+bounces-51249-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=Tb4reD5u;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-51249-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=\"Tb4reD5u\"", "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.125.142", "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 sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fhn063lwyz1yFp\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 27 Mar 2026 14:57:10 +1100 (AEDT)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id E08C630DC63D\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 27 Mar 2026 03:54:39 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 09F87374E73;\n\tFri, 27 Mar 2026 03:54:39 +0000 (UTC)", "from TYVP286CU001.outbound.protection.outlook.com\n (mail-japaneastazon11021142.outbound.protection.outlook.com [52.101.125.142])\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 467C9374E47;\n\tFri, 27 Mar 2026 03:54:37 +0000 (UTC)", "from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10)\n by TY7P286MB7090.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:323::16) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Fri, 27 Mar\n 2026 03:54:29 +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.9745.019; Fri, 27 Mar 2026\n 03:54:28 +0000" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774583678; cv=fail;\n b=KOmyLy2G+L39HeLwbZsnVXcvDfBgSbk9C3VQyG9QVVVv814U2laWKXnjx48Ijy1Wf6AzZfyCGbbfp9GbrNjRx4XOaukwo+Eph6Xr1Fmvp2SzIrs3KO68QgvBfmf6OdEWQhTZGjHJouqLVYIiSAaOq5ZDNFJCwCoPIaqn5xGgCXM=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=PrbfHwzGtGU9XhGNC2+u9/YACzkg+nxG8YtxwVh1jW3TOZHRdjRMy2b0mHWtv3NaGla2lmgY3HCNO8J4kaZ0RN09jSsiZZj43bHf/Cu6pF4uFI70Bi52tQjEypmOX97GiHy6rIEr4F112fYh7MGRe5+QLH9enbAAsK0B6zwWOlx2iwaaLV9ThHmlEYsrXXMSV0YjCF74jQFQRYDBP+iE8j2je2fY2WpKEWYiWteZnuQvmRXNBUmPM7XcPtio4slceKQrE/UNMsix+x7l4ZSeImOR99DdTStSJue62L9y2MUcTPVueudsKqQew7LhyMIW2r0VOSZOHzcHv86nRA+ocA==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774583678; c=relaxed/simple;\n\tbh=24CtTktMCrTYnhJKM0CPxo89ofgYKr4aiWJjFoL6RkY=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=kXevyDkLoIBgCFZ4bziu49oyei9xJ12PAMKs02SUYfrsDMGSvagq7LcaeT4NaIlOv9F1i79j/5Lv4fV/LHOfQGtQDzSrgnue86t83mmKCRF46fIC7gYMBQlq3msfo46H077O9103iqSr9mDuM49oFkKGbCtPGln4Cx5TWhtgk64=", "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=r7RiGuw4rdIqME4X0uRgpKq66eSKksk/+mPslKC5zL4=;\n b=wddAnoiA04d4vwXSzf4LAq9fW7WKq1ceBRUTa3bDCwNYpAi+9B03pzJnjIOv4sgfBo1QoXeCeVpa6gYza60FViW0dGQFlqgbzGjrq5/qsggt3LDAeuMbYwdpNG7J+ZwtY4R1Fd53Ix4De9MOExMRu8KKnpeXSCHJCZ9nTUuDAsSmAVe4QnVyMXA3VstuF7c45YRO/EgXDkSWAI6tV8JcFecwi8kgj+ZofrhniNWqiJpJsfJVf4aOQ6UmQhyk2L0b4qeesKIlaFpYaib9MRj3HnCSfYlyKtx0EtNP484GNPmYZSAIp7813YWDRIXdbJRNEdBzcqvGgkSlkl/Odk8IYg==" ], "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=Tb4reD5u; arc=fail smtp.client-ip=52.101.125.142", "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=r7RiGuw4rdIqME4X0uRgpKq66eSKksk/+mPslKC5zL4=;\n b=Tb4reD5uehMZhkPvRf9GUUgi5xIJMTUuf6hEWrHVRC30b3jksR2XtvtWfR7dCXhX7/Q2dIvVoYkQB2GW7D2zr8FsvDDGnB4mOFn/52gtYHWzk3MascrhpTcHHwutyMzSfBWxAbHWFG/Sv2aTxofc4RuK6p9733AhXEeiBRafA/Y=", "From": "Koichiro Den <den@valinux.co.jp>", "To": "Jingoo Han <jingoohan1@gmail.com>,\n Manivannan Sadhasivam <mani@kernel.org>,\n Lorenzo Pieralisi <lpieralisi@kernel.org>, =?utf-8?q?Krzysztof_Wilczy=C5=84?=\n\t=?utf-8?q?ski?= <kwilczynski@kernel.org>, Rob Herring <robh@kernel.org>,\n Bjorn Helgaas <bhelgaas@google.com>,\n Kishon Vijay Abraham I <kishon@kernel.org>, Jon Mason <jdmason@kudzu.us>,\n Dave Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>,\n Niklas Cassel <cassel@kernel.org>, Frank Li <Frank.Li@nxp.com>,\n Bhanu Seshu Kumar Valluri <bhanuseshukumar@gmail.com>,\n Marco Crivellari <marco.crivellari@suse.com>,\n Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>,\n Manikanta Maddireddy <mmaddireddy@nvidia.com>", "Cc": "linux-pci@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tntb@lists.linux.dev", "Subject": "[PATCH v12 4/7] PCI: endpoint: pci-ep-msi: Refactor doorbell\n allocation for new backends", "Date": "Fri, 27 Mar 2026 12:54:19 +0900", "Message-ID": "<20260327035422.4020455-5-den@valinux.co.jp>", "X-Mailer": "git-send-email 2.51.0", "In-Reply-To": "<20260327035422.4020455-1-den@valinux.co.jp>", "References": "<20260327035422.4020455-1-den@valinux.co.jp>", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "TYWP286CA0022.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:400:262::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_|TY7P286MB7090:EE_", "X-MS-Office365-Filtering-Correlation-Id": "c1584c2c-1804-4ea4-8d08-08de8bb48b78", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|366016|1800799024|10070799003|376014|7416014|921020|18002099003|22082099003|56012099003;", "X-Microsoft-Antispam-Message-Info": "\n\thk8goOydukjTEYukIP3lJE3OOTeJvZJqPU9uXvx2bMpW1m9J0ILo2UZ26zilp/BPM7vMT/3LH2Tz4X3YfuvXh4/2bT213Z9M+Ar4DDB62uQkMqzbv1ZgKw3k3SwUYabgLBnVWm85WwhY5IeKR+cBjvYRf19x7DD5yr9uycFNC2LGpkKBdf/Y18N1NZiCMX5jIDN68eDwrIFcfK3s5mgSfEQmZCzfQtEsXOeYkVRrQCkzGTpYkFzTSsmOJsFY2bDRCrQUJxvQ0fsREmRJjezSBCmGH5JzZAjQMY5EUm8MCBU9PbSJOrr8JqXO/78ROO+F8yQmieOIYRjVO4DXwd5h1wLIj6NhsTouZN2q+2AyXdYMcgR/j9l73wGFEQhqYcjomZCgw23TPdi91birutKJb7AO61WtYFXK20w233D/ADyhT82491f8HWnPOHmGYAkYTNwb/uYBfchQjUOsHg3NT797fmULnEaBM6uCB/Jh0+uMsHUPQc5HCW74sXYe1SKvrCwYNQx2VVVQUGJjgqZDQ7mrscrjYotUUOLIcVBKT6+oml0c9/6mh5nn9IaEbTK9CF3xLmc9rJomJagFkFwlqeG5sLXhMhYNbmiB3EQLwcdOij8ehjwH7kSjVKiUqqOzhjnxFHgWTPTXkDyUSXWUplIfQeFNaPXJ1YNjUl2aUUVbyWtEZoMgXh36ftCeV5oHsreDgS9jBDnZB0I1DN1qlFDQonWdIAkeHVny7syaMx4eYTflWJgREfWzPw9yUwOD4TF7Q31D9YxpZvww/7g4vw==", "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)(366016)(1800799024)(10070799003)(376014)(7416014)(921020)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n tNxKIpXn015lZvm4ILFwjHd8DhGfdhdqCPM0k1QrraWBKle6cuLtTzgO2wnzHqw3aV5Qj7LbXoDagRk98uuPRLEGBzkEjLGywUCiiWnAgVFwQDzYI1KqSb9WewZHOn5aMBnbW2L+1dcKZxLU0xwrj9scfERWekB9GlqU2JrHfRDG1d6qbbYXsxQHRwodB5owSDkRbArHEkZHVn0kF53FJsN352aLAOytG/rFoJgHByAQ7n7ZSmp0eU5kl66sL1qzVWsRNqaDEjbHoAdAcXL+9rbXxO/XXHgq0LXizMnZP46+nauOqwdpVRrOihQ50NXU3PImHH+Es9LxYlGm1944MTezzNjAPoTh+dYNblUbHZs5BI0JDDT3z+z1TSb3jmdZg5C4Irb6AhCRrpJv1u86DcpQcrqJOC9hNEh4zK2KjAY9c2jlg9Q+c9uF+4QCjppJrKYWfnBb1r2ifzzVpFgRLEOEZCLYbI8C0pHXuxRa0YjIUXm6at0bqJN+3wvP46aIgozqIv+llp8k3+DcHFXK/TGb6GPqbijOPQ/nY6lTxK4Wc2z1VOh61mmwGEqaaP64Q52eG2foz8glWNm/FX/KXWaX3CHyxfo3UL0fbbv+RGXG4VrcbQlY9jp/Nm5Rh9RnQ2oTda5XZ3RTDI5RKd/uuBwumhByFnTbWz37LhCryI4Fza0sBPwp1/xzGiKnH87L0RmJ9LZ+XrK7yrkQH3X+T8iuKvnoBfgirE/0Go/v0Aqw1kCA4qigAAU3M40zAnwKqTsvILHBuEC9nlUVOj9yYKrZ6gFsSDpA0UcjEvNyDTtgVzJ+iVe29Oo132GVb/wPMHoHnbQnCiMiflCdn+ILE+m9rJko/34bZorcm84GwDOwp0g2OnB38W5nQsyoRksueyazNxufD3SQlW8JIEM5Hm4MXlmnMfju8DR8e3SXLcB5+DeO4fiFOO7yKl7pETwLMF6wzcCoOxr4kzBHtJTIxN2cPygbKqn10AsQzNWY3Q0nZlk2ALGx325+JX9jWQMx/q7v8Qir8Zt9pr5kt1cWqBqS6p29CANLOJOme2/sZNSd0CzFTMyFpD7dg630rXwmaHXuw5NgUYVlENMAKDqNZ8OBKTUl2jaHiJmL7aB6B+aDIN+EOvE7ZB7P3TwIW5cJYSLDsPhy5f1NvljtjsRrfLDKABZxYv0NncT8eel2hO/8U6XWtBJ8xSPxOt8J5S67AHIeJ5BTcXuoFnBKylyFlbpm58Lpe1kV+g8WhZrhYmv4atC0xtniWxmG/uHbFBWDddHNl7S/qPrv9hhHwyKIS9ozX3EzpLyYMLYhOzXv0hW9RHvP0eiIErhPH4/jkj88Kf0T2n3lxbWGQPH3cNzkmYI0Pgb4XMqlWrHQb4ZaVdaBaztivZOn9cXKm/jbCQdGmwIEenNzzyebAps1f+6PA4bfI3JvQjFhCIZOl856cvOkzk465SK+uVLk9Ei2NkNkufr8ZVXNnujm242ofkfGZOpRZXiiHrRBh/RhyvY79MkPg6/z2bfOJO+fZvAIcanQHu38Uut1i0EHp98CStC4XOExb+8aJ2Og1kvGqZm+S86NOHvD/5GNPHEZh3IF9SPWSXQ2zcV6olwoU4382lFEd4Uet2ppepvhT9BooOLF0NcAr0pbmQ5fPjF/abHHs6pFtOo9TRFUdwUDK9u8HAbsh1/+bKeZJtYhsuP4ZtAfFI8IuRKHYKnsGG2b/4QG+LTBk1qL09YMXjaNJidMoGzV81oKEQDu124ZRetoSpTFkLh9+tHnyQZsYl2PtM1cLTv8", "X-OriginatorOrg": "valinux.co.jp", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n c1584c2c-1804-4ea4-8d08-08de8bb48b78", "X-MS-Exchange-CrossTenant-AuthSource": "TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "27 Mar 2026 03:54:28.4052\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 fzWd5laioE1qjy4+BTi3ecyElLgx9Gy8/AXxnSmUAK1orytZT4EiyL+l7FwqmLppLi3VjNkHtGYz7gcnR7rrxQ==", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "TY7P286MB7090" }, "content": "Prepare pci-ep-msi for non-MSI doorbell backends.\n\nFactor MSI doorbell allocation into a helper and extend struct\npci_epf_doorbell_msg with:\n\n - irq_flags: required IRQ request flags (e.g. IRQF_SHARED for some\n backends)\n - type: doorbell backend type\n - bar/offset: pre-exposed doorbell target location, if any\n\nInitialize these fields for the existing MSI-backed doorbell\nimplementation.\n\nAlso add PCI_EPF_DOORBELL_EMBEDDED type, which is to be implemented in a\nfollow-up patch.\n\nNo functional changes.\n\nReviewed-by: Frank Li <Frank.Li@nxp.com>\nTested-by: Niklas Cassel <cassel@kernel.org>\nSigned-off-by: Koichiro Den <den@valinux.co.jp>\n---\n drivers/pci/endpoint/pci-ep-msi.c | 54 ++++++++++++++++++++++---------\n include/linux/pci-epf.h | 23 +++++++++++--\n 2 files changed, 60 insertions(+), 17 deletions(-)", "diff": "diff --git a/drivers/pci/endpoint/pci-ep-msi.c b/drivers/pci/endpoint/pci-ep-msi.c\nindex 1395919571f8..85fe46103220 100644\n--- a/drivers/pci/endpoint/pci-ep-msi.c\n+++ b/drivers/pci/endpoint/pci-ep-msi.c\n@@ -8,6 +8,7 @@\n \n #include <linux/device.h>\n #include <linux/export.h>\n+#include <linux/interrupt.h>\n #include <linux/irqdomain.h>\n #include <linux/module.h>\n #include <linux/msi.h>\n@@ -35,23 +36,13 @@ static void pci_epf_write_msi_msg(struct msi_desc *desc, struct msi_msg *msg)\n \tpci_epc_put(epc);\n }\n \n-int pci_epf_alloc_doorbell(struct pci_epf *epf, u16 num_db)\n+static int pci_epf_alloc_doorbell_msi(struct pci_epf *epf, u16 num_db)\n {\n-\tstruct pci_epc *epc = epf->epc;\n+\tstruct pci_epf_doorbell_msg *msg;\n \tstruct device *dev = &epf->dev;\n+\tstruct pci_epc *epc = epf->epc;\n \tstruct irq_domain *domain;\n-\tvoid *msg;\n-\tint ret;\n-\tint i;\n-\n-\t/* TODO: Multi-EPF support */\n-\tif (list_first_entry_or_null(&epc->pci_epf, struct pci_epf, list) != epf) {\n-\t\tdev_err(dev, \"MSI doorbell doesn't support multiple EPF\\n\");\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tif (epf->db_msg)\n-\t\treturn -EBUSY;\n+\tint ret, i;\n \n \tdomain = of_msi_map_get_device_domain(epc->dev.parent, 0,\n \t\t\t\t\t DOMAIN_BUS_PLATFORM_MSI);\n@@ -74,6 +65,12 @@ int pci_epf_alloc_doorbell(struct pci_epf *epf, u16 num_db)\n \tif (!msg)\n \t\treturn -ENOMEM;\n \n+\tfor (i = 0; i < num_db; i++)\n+\t\tmsg[i] = (struct pci_epf_doorbell_msg) {\n+\t\t\t.type = PCI_EPF_DOORBELL_MSI,\n+\t\t\t.bar = NO_BAR,\n+\t\t};\n+\n \tepf->num_db = num_db;\n \tepf->db_msg = msg;\n \n@@ -90,13 +87,40 @@ int pci_epf_alloc_doorbell(struct pci_epf *epf, u16 num_db)\n \tfor (i = 0; i < num_db; i++)\n \t\tepf->db_msg[i].virq = msi_get_virq(epc->dev.parent, i);\n \n+\treturn 0;\n+}\n+\n+int pci_epf_alloc_doorbell(struct pci_epf *epf, u16 num_db)\n+{\n+\tstruct pci_epc *epc = epf->epc;\n+\tstruct device *dev = &epf->dev;\n+\tint ret;\n+\n+\t/* TODO: Multi-EPF support */\n+\tif (list_first_entry_or_null(&epc->pci_epf, struct pci_epf, list) != epf) {\n+\t\tdev_err(dev, \"Doorbell doesn't support multiple EPF\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tif (epf->db_msg)\n+\t\treturn -EBUSY;\n+\n+\tret = pci_epf_alloc_doorbell_msi(epf, num_db);\n+\tif (!ret)\n+\t\treturn 0;\n+\n+\tdev_err(dev, \"Failed to allocate doorbell: %d\\n\", ret);\n \treturn ret;\n }\n EXPORT_SYMBOL_GPL(pci_epf_alloc_doorbell);\n \n void pci_epf_free_doorbell(struct pci_epf *epf)\n {\n-\tplatform_device_msi_free_irqs_all(epf->epc->dev.parent);\n+\tif (!epf->db_msg)\n+\t\treturn;\n+\n+\tif (epf->db_msg[0].type == PCI_EPF_DOORBELL_MSI)\n+\t\tplatform_device_msi_free_irqs_all(epf->epc->dev.parent);\n \n \tkfree(epf->db_msg);\n \tepf->db_msg = NULL;\ndiff --git a/include/linux/pci-epf.h b/include/linux/pci-epf.h\nindex 7737a7c03260..cd747447a1ea 100644\n--- a/include/linux/pci-epf.h\n+++ b/include/linux/pci-epf.h\n@@ -152,14 +152,33 @@ struct pci_epf_bar {\n \tstruct pci_epf_bar_submap\t*submap;\n };\n \n+enum pci_epf_doorbell_type {\n+\tPCI_EPF_DOORBELL_MSI = 0,\n+\tPCI_EPF_DOORBELL_EMBEDDED,\n+};\n+\n /**\n * struct pci_epf_doorbell_msg - represents doorbell message\n- * @msg: MSI message\n- * @virq: IRQ number of this doorbell MSI message\n+ * @msg: Doorbell address/data pair to be mapped into BAR space.\n+ * For MSI-backed doorbells this is the MSI message, while for\n+ * \"embedded\" doorbells this represents an MMIO write that asserts\n+ * an interrupt on the EP side.\n+ * @virq: IRQ number of this doorbell message\n+ * @irq_flags: Required flags for request_irq()/request_threaded_irq().\n+ * Callers may OR-in additional flags (e.g. IRQF_ONESHOT).\n+ * @type: Doorbell type.\n+ * @bar: BAR number where the doorbell target is already exposed to the RC\n+ * (NO_BAR if not)\n+ * @offset: offset within @bar for the doorbell target (valid iff\n+ * @bar != NO_BAR)\n */\n struct pci_epf_doorbell_msg {\n \tstruct msi_msg msg;\n \tint virq;\n+\tunsigned long irq_flags;\n+\tenum pci_epf_doorbell_type type;\n+\tenum pci_barno bar;\n+\tresource_size_t offset;\n };\n \n /**\n", "prefixes": [ "v12", "4/7" ] }