Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2196637/?format=api
{ "id": 2196637, "url": "http://patchwork.ozlabs.org/api/patches/2196637/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260215163847.3522572-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": "<20260215163847.3522572-7-den@valinux.co.jp>", "list_archive_url": null, "date": "2026-02-15T16:38:44", "name": "[v7,6/9] PCI: endpoint: pci-ep-msi: Refactor doorbell allocation for new backends", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "84e378bd0cf95f310c6e9354db1ac1ec9caaab6f", "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-7-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/2196637/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2196637/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-pci+bounces-47317-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=Xb7ti0vO;\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-47317-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=\"Xb7ti0vO\"", "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.229.74", "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 4fDWqh0qKWz1xpY\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Feb 2026 03:40:48 +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 B926A3011045\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 C1A932F60B2;\n\tSun, 15 Feb 2026 16:39:14 +0000 (UTC)", "from TY3P286CU002.outbound.protection.outlook.com\n (mail-japaneastazon11020074.outbound.protection.outlook.com [52.101.229.74])\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 EA9732F4A1E;\n\tSun, 15 Feb 2026 16:39:12 +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:06 +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:06 +0000" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771173554; cv=fail;\n b=W7BZUeP408AgThFGlqCpjcavl7E9wlf9Vhr+wVxeakC3NXzCC08G+vVTgyMx95h9joVyZsvQDbRU/azdk70I10fSUg9ch0/ADnAj6Xq/0nTMf5RP1R+/+mRHu1APV3XVh461XRVU74NlACpryHrVsyPWkLXvED3nIInDIyGRxEk=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=WFzo2mTZfu9AZiRA4F2pfg7ci+M/ezSIgchteSqJUKUHgLXqyoqMOun+VraqXbjkulNOqRU5ym6kbHqUrDL+jFd4cHMV2VsE6uK8VPFAs/2kYtwb6YCwGe5aeNLxzcb85cUNEqG9G3QdYyUYnOta3XBADvd2LUZ/auAYSX4RJ8waflr7khvuoYKXYyPrRo8En0CYoEMmbrcE6gPP6DKTtv6OxFNnCddpaUrzIJCwyBn4myo594WS+PS3LamBGfOZT2TqBUMKCoSgQFn4fQumyCFslhas1wZlf1sk6Xrri/HbZboGK2ahwDAV65PlqM4egIzyjIH10vf+gEEGdHMgXg==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771173554; c=relaxed/simple;\n\tbh=kQLaghWTbhqFRvW4nVjJAa8k+WJIb9MfM3jCxVmnSOw=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=INGGfSS3EGQUigsm2Xj2LCNWCSUFGb/HjGtDCSKGG0XyrPri1nNghyuXo550qKYJwVG8DCCjsz6tb5Y/D6kXlWtuFHNcBqVDt1uXSI28diUQpnDzZn7RI0SPJy+dVXxJy5RZOADBfPOz8GJE7bt+I5JQPGae3cxlI0vLa9r2C04=", "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=+iYPc9yJc4Py85yEcj+4KtV6uHXaU0az1EhdarU4HDA=;\n b=sqz15FgovVorOavda4ceyhcy/HlmdDREWpDu4vn+g79Fq+viX8NUg/d2R9nHp61q5bQuxBNVY1ig7UKKlvUgGMQc5ZkxpKRyicY4ltxbsuyTa8v/YeFiiERgLuv/uZXaoirc7wGjM33bd5oiDQ4XphFBOpijRrsEnwMivhYKmmKpT2caQxUlFKKy8G05vGzx5MbZVmf3tBol+qLy0HNKaGgJfpd3ygk5SuLd8z4HJbgy9g5pX8KKzMBNMEPsj56fR/aHEUrV58SybK/Bxcfkhtw60DSBWf2XfxtfPZF62kHPRqNW8ImpGb1m/uPsbiU18gu3xV6kuo9b33z/2V19jQ==" ], "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=Xb7ti0vO; arc=fail smtp.client-ip=52.101.229.74", "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=+iYPc9yJc4Py85yEcj+4KtV6uHXaU0az1EhdarU4HDA=;\n b=Xb7ti0vO9ADBAoDI19RiNquxP+RrYLDSo+4b1we8lUPNwTnACfxatyEE6NWTkkOUcajnJNoc1oPxsPY/S80nVfC7HjdkVSGH6gY35OLaJzr7+ijreulR4iqO/e2iHLwFhyVBgRH+JTbR4W9sk30/MNVdWEjc57l9pbrBQj4VoRQ=", "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 6/9] PCI: endpoint: pci-ep-msi: Refactor doorbell\n allocation for new backends", "Date": "Mon, 16 Feb 2026 01:38:44 +0900", "Message-ID": "<20260215163847.3522572-7-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": "TY4P286CA0071.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:405:36d::7) 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": "cf92bc78-ca5d-491e-4fc8-08de6cb0bca9", "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 1+xk3998/xQwnjy2/ujH5fIm28jGedljnExPQo68rpvjcrqEXKqEkAph4a98yl7pUO5cWMwC09cw4wcVXx0H9+jXkjVIcTVP8PcSQEWARo40t9Wv49LeNlKVilNU7Zy+ctS37GglDnmBTw0HNcMmbu5le/ibLVw/IohRiUmi95bbUyrr0LnZbfJ1fazb4DyFsZlr94WS2QW4w85dLqvQ6J6lNOdELb7s/rJHSSr4KTYNrxHOoqUqJvXPAbngL0m4Zrnu9F2nyYcOMyzrTsPFMRTbFvv8uO5XUyABcrS3IFlMMNHHW0jZBenIg+Ahgp+8Iw6ovFO7IrrhF2EjcYTwtWgXihmqW+HUmMuYTuJvtjqvjG0fQ+PVrS+Y5Bi+5Hqp3EU75Vx9ezE6/ilR8P3PNi0vDYnwHGy4UDn9EjLkeVJF5j9nLPTuGK8CV6t9Cw8YHcTlU6YHZ1VLqUDd+l29TAWJCvsQ+bCRMxqXN2Tl6W2gR2mjR6b5i9vwItJdoxsXgB+xRAahtms4yDyTKzhEYGSgWUhoAzmt/C6K1jKG8jmOgq38obBED30Gq0rtBil8s3gFWntmfuGlT4oBMg2TnQ3hu/aUb9gYPkKHqy6p8bdYysDZzgHOCvmEptaWvAdxIMLhEka2i1WsYgZc7u5i2NytohjqWozMkevKAqt0v6UyNyINW4Cee7QWuix6ou8CHBiUYleH+1oQ3tIOZgZYJJ9Avtw+gWrYOrL2wV+bO82Sfv+/rXUniDQTFGJ17Y82YD+H7sRWHtVfQloLqIvgIm9L/OeOykwnrmbee3yp8TK76pr0/LRkPBsXY9gg1PzkqAAVkoBnUQtIQoo+1Ryk2MvGYMaQNX07eh4H7RmbYHt6zQs9oa/Hi+V56JDZUuRRiempEDtZYke/UNG0htrTRFt8jPw+6OjJ6b6Y75vNupbKFU5XRSqyKi2mvRjqrcXP3cv/48AyPPC7WZMgAjBSKaY2i+rPew7hUpdnOgMTjlab5HNdi7XqPyRP1EXckJjosJfIx8RabA3J3fIb02cB0xhRmbQPmuwtiioIKkOh072cWrIQmSLVl8k1/AolvwBegnEINvOGux+R7oe/OxCLAydMzIRQ68PgylEeyWzMyT9k1lpinyZYpy+p8QZEMDSbX79Y7F2y4P2lwUZcq3sNc9WXQom1NFLuI3yeQrPXXpDMDTe64+ULVBrvXGnRqRzFmiz8po5JFUPdGjXMHmpQHbBpsHF62aiD8zmyssFpgA8ocx8ZBpetrLTVBiGHkONRnoo9LH8IpCfEhD8tUkFMhYHtFIQzHiEdbWVAdWeymhKqEeMQOpe7NPH9oB/KRSdhUz/r51OqrRItdWMJ918Uqq1JB13AT0dOqGvm3Wwa6dahDc4qbjwPXz6F2KZpyg8lSe6Po8nQiBV7G0KPtGwWAsYi8a9eca+tmUbzYxvGySdOvm37UFm/vReMWjGpg5AWz1c75kXq/M3+eUMY5NNvtum0yUb6KaGrR284H6oJBEe6LmVq9tiw1xXH2V7iOU4GpxzQ/G3tKb5KTqFq5epoI3YmrHJBrbXP+Sb/6XCmfB+lxUu6D+VYbfwDNBfGUD5iPd2pqhrNHV+Z7vXVpy45Xw==", "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 BwzuZ95TPqlncDjBvyc3W5sP3uYQQn5e1Zo1YMca+vQ+YeP/sGCqaDCZI4grNey2nODjXDhaNfu4t74qdLO+uPsiyM2rfn1yKw5ZYGuBD5rXv7lFmLVQmtEoBLeGYssVecU34aTIjJyPyLs+tkQb9KFnDBxepUry/TMEbqKWEra5aGXZPCEiWLUqVibyCfNEMPMmMSr5h2I/Vx3p3I72otX0yFW2ZaOr7Zq7cUmwjtve1xXBPzQnsJiHlRCgK0ByAxZE31CD2AJoGYpAFUdl9G7eM2yC7da/CUrNViZvhyCF1EoC4/HJ48A8GKW9vWvpU/r7fc+dx79p29nU0eHy8/PgFJolLR4TieOZfH90ONs/krn3bMtKGNcANnqhTV3TaI6Sz7cpWKYpZXUEjXT8VY2Z50NqnlgspttvhIQBCK6vgfDOIur91YxhZm5E/EvXdCVmXv0eI8JruQ7z98RJovs674ER/tMcQnzmko2b71pLdUQNvqz6dOcG8hNCUfOCpThXQJzOKhkRF5pUC7/0TPY5mdFMDlyYMXeRmTgyPHNuWWA+mjg1ezHUNMn0X34Bx7ZUWw3P3YryirqSwoHZLi+RYwCBn9Td/b44ZtQWUFNcq4IABkjAfZZY9t0Oa2yY6IjbaCXSLz/zxHbbb+sB9L1N66W1JtDeSt+7miqAyjl2lsHhj0zsqF9nltATmwWVWQkVW1tfTeP8SxWmXgXsePm7fkgReQujDzXm5a149RkIezYRPo3kvfj2owJk4UhUZcUQKq9rESltVdvig4leOUMDsVlYTkrK80zvfLzizjOMb8EGVSF+UBIQ9WvTkm8aBN2pmWJWF+TNj4LZq+48imEkAz7PDArUvoFYjAmSPv2Sm/vr70QujSTHFnAS+cA8EXpBA3flESLXY1/2ptptWQPYukvuEZPvx+nbpqHvr0oUm+g88ko6Wh9++OsQdiscHKMNVhiI8b5ojC032T2/pfDFx12dvmtGM4iMNEPkffk8HxKaAwzWjGEkJIRBzkhpOv2vLasZCMgu6rvGws8M5wFo9+09ikfwS/QEx1q8xWnDuPlJQtHjIQY6loTlM+fZgTo/n3QEeUPNf/IGqjA5qp+peRXgO1bB3D6G+9sgnTsbdLDSeDZOewGq5NG67hvtPZxtWhb3YKYLd9UzurAhF3kf2jLmqHKKDMGdYB3rKdR6uGak1F/gs21je85PPdavVayQwi/KlUrGQELpfd8CA0EFRMC+GqhzjwHpImjXSI2x9xDTZH6cm+MWpzawH7FFElJ1wTJcBeJTeBNi3tMWuN9Ws1RUwsdJrqg0C03SjaXUEW9n6xPestVgCU5Vm/CZWJNmZp5tNRGEA0tPqdgm+NTCsNGNvQo9wTy/qDQdFDUTyo5nB1Wgr2ulqzAlshcISUkvlxYEpO68k0oH2kqsxOftZJPpv9uKK/2Gv5yeCSqhBus367SIqaq/csGvpdflaRWVd4r+lkVu37BDPzjOcqMPGqsi9oKSMRlk0lryaEjbF4wfwnXQn0qteWL0v+KXoYTbzx3i4vq2OYkKlyGCoLCGbWZes1icuBEUWJL15B/mq0ADhwmqpmBT2tEGcIIGjKwWcqvCeED5FbrAyu4QCB0Xbxy5EMBGaYV1dJc2FqELxf+gdSu/UHsq9nLHryGIxDfSGjQHjeJv1NyoUd+3r6lg5uzLf/EVQqBy/ej1YbfUNGckeLZozR50aG3nEtMXo1vKqH0psfUGQQAxRVZMIieoz3+/mX4CwWzjsxyB7VI8mtG5VPw4hcux0mMN1hZG", "X-OriginatorOrg": "valinux.co.jp", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n cf92bc78-ca5d-491e-4fc8-08de6cb0bca9", "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:06.8871\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 QHrw7Y+WRwZ6qrqNoF9YQYnAvOhmLddTE/vT65RNvOT9xUhOordkJMtXZrhUmwOrzfSFOOSoZPyjAcc6ddOmgQ==", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "OSCP286MB5196" }, "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---\n drivers/pci/endpoint/pci-ep-msi.c | 55 ++++++++++++++++++++++---------\n include/linux/pci-epf.h | 23 +++++++++++--\n 2 files changed, 61 insertions(+), 17 deletions(-)", "diff": "diff --git a/drivers/pci/endpoint/pci-ep-msi.c b/drivers/pci/endpoint/pci-ep-msi.c\nindex ad8a81d6ad77..a42f69ad24ad 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,13 @@ 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].irq_flags = 0;\n+\t\tmsg[i].type = PCI_EPF_DOORBELL_MSI;\n+\t\tmsg[i].bar = NO_BAR;\n+\t\tmsg[i].offset = 0;\n+\t}\n+\n \tepf->num_db = num_db;\n \tepf->db_msg = msg;\n \n@@ -90,13 +88,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": [ "v7", "6/9" ] }