Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2197146/?format=api
{ "id": 2197146, "url": "http://patchwork.ozlabs.org/api/patches/2197146/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260217080601.3808847-7-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": "<20260217080601.3808847-7-den@valinux.co.jp>", "list_archive_url": null, "date": "2026-02-17T08:05:58", "name": "[v8,6/9] 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/20260217080601.3808847-7-den@valinux.co.jp/mbox/", "series": [ { "id": 492390, "url": "http://patchwork.ozlabs.org/api/series/492390/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=492390", "date": "2026-02-17T08:05:52", "name": "PCI: endpoint: pci-ep-msi: Add embedded doorbell fallback", "version": 8, "mbox": "http://patchwork.ozlabs.org/series/492390/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2197146/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2197146/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-pci+bounces-47431-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=FdzoWNVD;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-47431-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=\"FdzoWNVD\"", "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.107.74.114", "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\n [IPv6:2600:3c04:e001:36c::12fc:5321])\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 4fFXLm6z5Hz1xpl\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 17 Feb 2026 19:07:44 +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 52D07303EF9E\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 17 Feb 2026 08:06:41 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 48C682EAB6B;\n\tTue, 17 Feb 2026 08:06:21 +0000 (UTC)", "from OS0P286CU010.outbound.protection.outlook.com\n (mail-japanwestazon11021114.outbound.protection.outlook.com [40.107.74.114])\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 932B52E7BB6;\n\tTue, 17 Feb 2026 08:06:19 +0000 (UTC)", "from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10)\n by OS7P286MB7132.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:42f::6) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Tue, 17 Feb\n 2026 08:06:12 +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; Tue, 17 Feb 2026\n 08:06:12 +0000" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771315581; cv=fail;\n b=uUB3JrzgANJt1uClzLkR19ecsYxog2wvcSBGJUysjI7H909gtAsmuFIJggbCuZTnw/9BIPditWi/MHvvuMIzLLrNt+pd9rgFgPxIqrMV9REYgnW56J9H+0m+WdGiHVRpHHlgaZZHVweqEAqxdl2NbRwqIdToC1ZZRzxucTYqyZ0=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=EvUG4CV60TLmIiQ9RQqiLpf2sInJLJKVfZvgttHCnIJoManUYT70h7DiR63QV7qVDz5nfYHloBnturgyQaUxIxIg8pt3JhZSxccsNrr4kBOXKPSZI4tESYlxztJqQA0laJVwFJqf1GRhIt9lq7C/DDTz13CaGrySLU53aot727TGvUmc47gfLPAPwkhb19UMj0XJ77miPnyDepVui6zIryLyBV7roHFeQxZoz6H2OhadFB1ecY85UKKNBH8SiObggAXqknjsK8GVx1UyKGnw9g1gaWguudNtrZzWo/47TVI+ZL/0jW0cbe+d/WsYjLa2AMUw5j5J3QkOWOFF2tvy8Q==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771315581; c=relaxed/simple;\n\tbh=0A+Nzvi/THnQlf9+ifmqNuLybQAR767UOD2UXe0VSpo=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=r6O7cug6BKewFmBuNq+AzFm7BYLuEe/D+Bg0KMrpeM9NyLiA3PaqLZl8EdQDdZkpkQMx+OAAe/eo5VNhCaaVzp7uOQGYveBUtyYYLQVtwEc3D6VsIahkMsm24NESQ1SB8Zlkdud3w63+HYJcCjdTU5WKj0KjsrKj2c9mXQt+AOM=", "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=MA/cpjlOgnLoTWJQ7J5AKBUtCS2N96V6l8xsnKjShwU=;\n b=shxiGNHDlcwrF5nLIR0hO3IjppwqYx+Gw2O3UBfwbqbuALyVgZnK3XwYf6XuiJFll0jtP5dHQPCHQuAl5uons97TSIbp3Ih73Liy4dITblpX6qWKzfz8/gVSykbxpU5/kt4sofuYWYSiCdhDllvqZOBlRBG6GxkH20h91jjhwPrNEybzRfB7edlrIEE/bCZ2PLzKJUMn9QItZeCbBSjdxG6SwIQFZfavjjl5bEgw0v0sit8L4cwJWY2qYsyDphWf3fWbr1fItkkJ25KWQEK0d8zDrQs+PKJftSgma/I/rK9vCBWNbB4r1p7KfpefJe5mVX8YzJjeyxFnBn41f98SMA==" ], "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=FdzoWNVD; arc=fail smtp.client-ip=40.107.74.114", "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=MA/cpjlOgnLoTWJQ7J5AKBUtCS2N96V6l8xsnKjShwU=;\n b=FdzoWNVDy4TrWe40JBEiT+fIrsTlodphri8yP8pTXQN4GYSA6xRNEVGeuSzPqMge8Ex/ET4uuLemYa6tX/qcXPxTVpumGnk2m2gslF1S+MYrdt90I/kaoePe1yfshhrT29S/L9KvpGytrKkICqxDsWbOxKdN6QngpXTeXVpttnA=", "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 v8 6/9] PCI: endpoint: pci-ep-msi: Refactor doorbell\n allocation for new backends", "Date": "Tue, 17 Feb 2026 17:05:58 +0900", "Message-ID": "<20260217080601.3808847-7-den@valinux.co.jp>", "X-Mailer": "git-send-email 2.51.0", "In-Reply-To": "<20260217080601.3808847-1-den@valinux.co.jp>", "References": "<20260217080601.3808847-1-den@valinux.co.jp>", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "TYCP286CA0250.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:400:456::14) 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_|OS7P286MB7132:EE_", "X-MS-Office365-Filtering-Correlation-Id": "375f6ce8-192d-47cb-b0da-08de6dfb6aa4", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|366016|376014|1800799024|7416014|10070799003|921020;", "X-Microsoft-Antispam-Message-Info": "\n TXSEs4Y6jnuOy6Bq3MlbX8/lqdv7VxNvNOOSnhXovudiDhq/M8T3KuqgX0TIYWMQTVpquijVnWTDk86yiLn4nK+JiZRs1Rnx0aDUeL2wkvX+jOIqfqDnFPnOShCP7Yym+E7XCLBkWGYkKPVA6ww9u3OfKMapc0GohZB7ORibJ137wNDmPpiMZ5Choe02QxPRrEeh9lFw4mjdLpxkcNa/UmGhdTgsZV8d3XbWAMdtfGWsLCxpwRrPDr5xEMf6P8XERzHoodslrd/nLiG4pxk9ouyyLYh2NmV2P/f8T6pjxbXNikZXGhMlt4MbVOvg5pYwPSj1mfw+aDyi4k5ZVPuV7yfy8Wt24BU8U02S6mUG6zUhyv7ex+FDHEARE/KsgrHY04Q8Jds7wJG3Az4FMVO6oj2xa3iOicrKZo73JrDwXIhyUurnUl19zwbK0YEzIZLYwwE1aeXz0alrfl9+5l62h0o94ntTQWvkvLYUk6ZyblKV0ZiKKaPCfc3qDWkvUFvo2O0tbZVixTzP8DypBW6Vez3UU9i30h6Q+eigg3GN+WMDnjHkcqvCwl43P7uYm/KURyzphEp01vUxNk6xoOK9r06S+bk5id2j/9Vw1ywUrcVcSaSuyRmHS1l+l+Z37ivuPURuw38r+KO9SaxEZO0tIo300m529z6ONKWUoAYz8/tReyXkJKE3vumRh/152a8jUqFxVlpHHjKwDrjjXWEK3AiWyRmZWoVC9/YQ8TaGdkQYc4bpWj4TyWX3EIxB+bYxo6EuH4pApjtTQibXT092wQU7TU1unShJbMEU/losUXw6K6SNbVFCS2sguQVNSRVUH8wGY6OULWGkIVY2J9hUy9w1VR71tIbEURhimX+S98Y3XxlcSP9KqOfb8H68l27kZkI269WYVKx8/S5UKGSGJR3xg8VnECVS+Yb18PeEkEy5pt72CdTKnEr2/1dFUu4Zqr4GCesA8mjkInWV8CMalT6PVMLKO4K75l2Otms9iQIXDrU3YNLXU+qAxKGAvvQQ+kpdRqxuxrhmmaU7GrjdcsnyXhkGewK2bqmfeLi+/l4v8VrqQn76N5is1coZJopsOmJMyhyVFCSfs6NhYCAhBi+V7cpJga3/yZSeG08OtiBknGcybXa2dcHkJU5FjDzDD6d1cRH8g5Hn0KGJ/HUdRVO1b27LmUP+vGaFnZfUA6IEFm8QMkV3KsHk+jjkr+uUUjrQDgTkIO1cYIR1yqDiQKg3gY3b3iWveWk4Z3JtrWSK2cuqdWDFBK0FsRjXtP1SmxTHiFy6PpGtC8PDzNAVnp2ZIf9a7HMDKw79QFuYdIQYdtCi6x7LA/KF4R9+AgIbd4e3fjZKEtMRwQ4i+ZctQhLyLec535/F0PUNeHsp6x997KmkQxiUjvKHaIw4wsYRVviRAYLoisznPVgNq/TE7rRb1hW0mRkD0JtHYuoZqBkRm3/wlzzX7hDNRprshPylhnphi3y3dN7TWHtPtlkFgQtMl79laDLL4f60UXnjfwKrYjO/lmgTgd0UVxPQWqdqRoKNSxhGZPMfGv8zdZCERXBKELARCdFKQcD+hcWyukzkCgUUoKKKHk77LseOCXPAj9Fn65Hrc2+6KCaZpDdDtA==", "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)(376014)(1800799024)(7416014)(10070799003)(921020);DIR:OUT;SFP:1102;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n NkFDMi9+dwP7a8kCGNqzEtNXkkJ/EgSA6GRtMbwC4xBoCmaIbgCUf6EE4DZB5bQ52WCRW3vgfmZgfu9ftdccp09Tn8KCzOJxsMgSbAuJsxNPl1FQbp5KWDZ77dyn7wvEMEDwMFNt1nXjbOcQTf+i+Xp4NIUM/vbgOsFKr/iSJVz9tzCA87PnbWJGfMUv185Qqwc7ss83UKd7RDrTIziXJxQAPNSHDaeVcKIj9OCH6EBjssbABRM/3DMQdvPaKhOsErpdjMVTM3Mvx+uZp1YDdGcFHk0kwR0DNzr85hWZnZ/72Q1f7vUHfPgnjoYoMbtCjfF2/KzpQdhFvVpJCVarpeti9s9iC7HPfoay7GTADytNke3icKxcCi9FxMZIqRZVjizot8cFAfZWlIYWw7bwB/UzGJzsc/sBijNVxGl57HoNUzLi2LzMW7HbVkEloggHjj7EGAptXy7HHTN6lKVDXvHVYIw3lA94ZkACgtmXQheJkOBbhswqeGZa81FTuq/QQMmkvlgXrTEmNwO6bbCyEwxTQq9bAdXlt4sfHs7EIxmrzBMmuMQ+aaK6d7aW2t+QEHeXQ2a7zwQPAcr0Sc8GqmR6NHL58Dg0+WszHhjTaANL4GyZ2y0JSykPY3ATw8oGiU78orn8+DBNmSTc9/7qbK+t4zJuLtFdWiW9JIEIfy5uKMwG/52I6GZwyhHPKQREQHyfXjxTBZR7rMEljPvvzzeIQEIZp0vanzUZt4pEDN9QMSfeOKqjRRQUsSMTGZEPwz1PsjNtiqWvIvxwtE421JLfiHaPvW18GqOkND+JtmX+1VEkLmSU0xW/B5SZQV1qfL+jk5HswEdgri22mrNoElUi8VmYHvoibIWuXYBIlQvjintXpUnfGd5z1RMVPeaLdoHnW57Uj1/kYpYEUeKt6CoFtp3YEL/Arntl3dbCl07MQJBEq1Nplzna0uPBdEWOGvkw0w9raVpYKdvrM/yUSm+996+daJDTMXD6t6FkX7Js15ehZI9npRcibqhI+pPNfWAGQjQ9+C2qbSeak1jzVbHyQOKi5cQegjK1vmD1t1kQ6eJaJvMKeq8GJUgJypHiIpeWYflTWI2XAiBuewCVhJy9q3QzLATy5sPhWVvnXJzvqFAPZYTWjjLV2aRwyz9LVqWwj6i7d5LO/nGrsu5XWaF8WPhUhQZQ4BpajwKbNQO3X5bV7qPKjDkw6qxkZSssycRslX6MbnVKJItIW2MLqr0kCDF1jrJodPQcsfCExdeOeFiLxT5B9qsudxrvnIbvJ/HjCHfobQgL0MeY726AUv9fPRwdnPzOF3vKaZrBu9e6a0mIQ7iMx73SvD0zCF9+1vfzzvWI0wOOAzkqfKybirO06eUw21fVIV+ULzZB94t4JlMRa6SxTUQMWlDISUo2Vf/tiTwZdQyg6RrysetD2oz9FMPkPy7RUAgP3f55fl/mqvogfeNd4ch+RciVI813AcT2HrjACAH9ix03E+quqsxJ0yUB+uwA1kMVglfsliphCA7TG0Uda/olqUNITIkeWDo8Xxa6RkaYMYxikvrKYRqcHo1NJKV2DClVhGr8jp2vaX/Cn9ux1WRIgHQCTYuxKWOVkcVMkUyyCEqTVH8TDH6N69njX2ZIi8DzA24VLCJrO7bVERiVzmsho0xs5LMBzSkJdwfuSPNYKQ50idkS2fXViiwO+TEZCVcMXcxlxUh0nB/zugPSdPgvJRbCX/srBjWrxLNuDDQnHjCxL5mW2H2cYfXkCzn65q8VGA6bH17n4EE8kNlVTLblccXGHdhZ", "X-OriginatorOrg": "valinux.co.jp", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 375f6ce8-192d-47cb-b0da-08de6dfb6aa4", "X-MS-Exchange-CrossTenant-AuthSource": "TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "17 Feb 2026 08:06:12.7144\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 I3bMdj9rz+qoiUCHJRQ7e9FFRLuGvNRsySZH/NNxT9QwxFiBKcTSkODGWhrJtikywpDyuhwnT3IyjBn19+Fsww==", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "OS7P286MB7132" }, "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\nSigned-off-by: Koichiro Den <den@valinux.co.jp>\n---\nChanges since v7:\n - Switch to designated initializer and rely on implicit\n zero-initialization.\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 ad8a81d6ad77..50badffa9d72 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": [ "v8", "6/9" ] }